💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
一、Copula函数基础理论
1. 定义与核心性质
Copula是一种将多变量联合分布函数 F(x1,…,xn) 分解为边缘分布 Fi(xi) 和依赖结构 C 的函数(Sklar定理):
- 边缘分布 FiFi 需连续,以保证Copula唯一性 。
性质: - 边界性:联合分布由边缘分布和依赖结构独立表示 。
- 不变性:严格单调变换不改变Copula结构(如 x∗=h(x)x∗=h(x) 递增变换)。
2. 常用Copula类型
类别 | 具体函数 | 适用场景 |
---|---|---|
椭圆Copula | 高斯Copula、t-Copula | 对称依赖,金融风险建模 |
阿基米德Copula | Clayton、Gumbel、Frank | 非对称尾部依赖(如洪水、极值) |
极值Copula | Galambos、Tawn | 极端事件联合概率 |
尾部依赖度量:
二、单变量边缘分布拟合:AIC与BIC准则
步骤流程
-
数据准备
获取每个变量的观测数据 {x1,x2,…,xn}。 -
候选分布选择
假设常见分布(正态、伽马、指数、对数正态等),估计参数:- 正态分布:μ^=Xˉμ^=Xˉ, σ^2=S2σ^2=S2(无偏估计)。
- 正态分布:μ^=Xˉμ^=Xˉ, σ^2=S2σ^2=S2(无偏估计)。
-
计算AIC与BIC
三、三变量联合Copula选择:AIC准则
步骤流程
-
边缘分布变换
将数据转换为均匀分布变量:其中 Fi 为最优边缘分布 。
-
候选Copula拟合
拟合常见Copula族(如高斯、t、Clayton、Gumbel、Frank),估计参数:- 高斯Copula:参数为相关系数矩阵 ρρ 。
- Gumbel Copula:参数 θ 满足 τ=(θ−1)/θ 。
- Frank Copula:参数 θ 与 τ 关系复杂(涉及Debye函数)。
- 高斯Copula:参数为相关系数矩阵 ρρ 。
-
AIC计算与选择
尾部依赖对齐
- Clayton:强下尾依赖(λl>0λl>0),弱上尾依赖(λu=0λu=0)。
- Gumbel:强上尾依赖(λu>0λu>0),弱下尾依赖(λl=0λl=0)。
- Frank:无尾部依赖(λu=λl=0λu=λl=0)。
四、联合概率计算
1. 基本公式
-
三变量联合概率:
其中 C 为选定Copula函数 。
-
条件概率:
2. 极端事件联合概率(如洪水、金融风险)
3. 独立事件简化
若变量独立,则:
五、实现工具与案例参考
-
软件工具:
- Python:
statsmodels
的GaussianCopula
模块 。 - R:
VineCopula
包支持多类Copula拟合与AIC选择 。 - MATLAB:内置Copula拟合函数(如
copulafit
)。
- Python:
-
应用案例:
- 水文:长江上游径流联合分布(寸滩、武隆、宜昌三站,用Clayton/Gumbel Copula)。
- 金融:股票风险溢出(EVT-Copula-CoVaR模型)。
- 气候:风暴降雨强度与持续时间依赖(高斯Copula).
六、总结流程图
📚2 运行结果
部分代码:
%% 削减后的场景三维图
subplot(1,3,1)
bar3(P_wt')
l2 = xlabel('t/h');
set(l2, 'Fontname', 'Times New Roman', 'FontSize', 20)
ylabel('场景编号');
zlabel('风电出力');
subplot(1,3,2)
bar3(P_pv')
l2 = xlabel('t/h');
set(l2, 'Fontname', 'Times New Roman', 'FontSize', 20)
ylabel('场景编号');
zlabel('光伏出力');
subplot(1,3,3)
bar3(P_sum')
l2 = xlabel('t/h');
set(l2, 'Fontname', 'Times New Roman', 'FontSize', 20)
ylabel('场景编号');
zlabel('负荷');
%% 各个场景的概率
figure(3)
bar(p)
%ylim([0, 0.30]);
xlabel('场景编号');
ylabel('概率');
set(gca, 'FontSize', 20)
no = 1;
figure(4)
[ss,gg]=meshgrid(1:n_reduction,1:24);
plot3(ss,gg,P_wt, 'linewidth', 2);
title(['考虑相关性生成的风电出力', num2str(n_reduction), '个场景'])
xlabel('场景'); ylabel('时刻');zlabel('风电出力值');
set(gca, 'FontSize', 20)
set(gca,'LineWidth',2);
figure(5)
[ss,gg]=meshgrid(1:n_reduction,1:24);
plot3(ss,gg,P_pv, 'linewidth', 2);
title(['考虑相关性生成的光伏出力', num2str(n_reduction), '个场景'])
xlabel('场景'); ylabel('时刻');zlabel('光伏出力值');
set(gca, 'FontSize', 20)
set(gca,'LineWidth',2);
figure(6)
[ss,gg]=meshgrid(1:n_reduction,1:24);
plot3(ss,gg,P_sum, 'linewidth', 2);
title(['考虑相关性生成的负荷', num2str(n_reduction), '个场景'])
xlabel('场景'); ylabel('时刻');zlabel('负荷值');
set(gca,'FontSize', 20)
set(gca,'LineWidth',2);
figure(7)
subplot(1,3,1)
for i=1:10
hold on
h=cdfplot(P_wt(:,i));
set(h,'LineStyle', '-', 'LineWidth',2)
end
title('');
grid off;
%h1=legend({'1','2','3','4','5','6','7','8','9','10'},'FontSize',16);
%xlabel('Value','FontSize',16,'fontname','Times New Roman');
%legend('Location', 'Best');
%set(h1, 'Box', 'off');
ylabel('Cumulative probability','FontSize',16,'fontname','Times New Roman');
set(gca,'fontname','Times New Roman','FontWeight','bold','FontSize',20);
set(gca,'LineWidth',1.5);
subplot(1,3,2)
for i=1:n_reduction
hold on
h=cdfplot(P_pv(:,i));
set(h,'LineStyle', '-', 'LineWidth',2)
end
title('');
grid off;
%h1=legend({'1','2','3','4','5','6','7','8','9','10'},'FontSize',16);
%xlabel('Value','FontSize',16,'fontname','Times New Roman');
%legend('Location', 'Best');
%set(h1, 'Box', 'off');
%ylabel('Cumulative probability','FontSize',16,'fontname','Times New Roman');
set(gca,'fontname','Times New Roman','FontWeight','bold','FontSize',20);
set(gca,'LineWidth',1.5);
subplot(1,3,3)
for i=1:10
hold on
h=cdfplot(P_sum(:,i));
set(h,'LineStyle', '-', 'LineWidth',2)
end
title('');
grid off;
h1=legend({'1','2','3','4','5','6','7','8','9','10'},'FontSize',16);
%xlabel('Value','FontSize',16,'fontname','Times New Roman');
legend('Location', 'Best');
set(h1, 'Box', 'off');
%ylabel('Cumulative probability','FontSize',16,'fontname','Times New Roman');
set(gca,'fontname','Times New Roman','FontWeight','bold','FontSize',20);
set(gca,'LineWidth',1.5);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]高远(Ayantobo,Olusola Olaitan).干旱指标和Copula函数在干旱事件多变量频率分析中的应用[D].西北农林科技大学,2018.
[2]赵继超,袁越,傅质馨,等.基于Copula理论的风光互补发电系统可靠性评估[J].电力自动化设备, 2013, 33(001):124-129.DOI:10.3969/j.issn.1006-6047.2013.01.024.
[3]段偲默,苗世洪,霍雪松,等.基于动态Copula的风光联合出力建模及动态相关性分析[J].电力系统保护与控制, 2019, 47(5):8.DOI:10.7667/PSPC180149.
[4]付婷婷,边俐争,李嫚,等.基于Copula理论的风光互补配网经济运行联合配网重构优化[J].可再生能源, 2023, 41(1):122-128.
🌈4 Matlab代码、数据
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取