MATLAB利用Copula函数进行频率分析
0 Copula函数定义
1 Copula函数
按照构造方法的不同Copula函数可分为三类:椭圆Copula函数、Archimedean Copula函数和二次型Copula函数。
1.1 椭圆Copula函数
Fang等首先提出了椭圆Copula函数的概念,并对其进行了详细的阐述。Gaussian Copula函数和Student t Copula函数是最常用的椭圆Copula函数。
1.1.1 Gaussian Copula函数
1.1.2 t Copula函数
1.2 阿基米德Copula函数
Genest和Mackay(1986)给出了阿基米德Copula(Archimedean Copula)分布函数的定义。Archimedean Copula函数主要分为对称型和非对称型两大类。
Archimedean Copula函数仅含一个参数,结构简单、形式多样,在水文方面的应用极为广泛。
下面列出几种常用的二维Archimedean Copula函数:
Name | Note |
---|---|
Clayton | 下尾相关,对分布的下尾部的变化比较敏感,能够捕捉到下尾相关的变化 |
Gumbel-Hougaard(GH) | 上尾相关,对分布的上尾部的变化比较敏感,能够捕捉到上尾相关的变化 |
Ali-Mikhail-Haq(AMH) | 尾相关 |
Frank | 无尾相关,对称尾部,无法捕捉到随机变量之间的非对称的尾部相关 |
Joe | 上尾相关 |
1.2.1 Clayton Copula函数
式中,u、v均为边缘分布函数;θ为Copula函数参数。
1.2.2 Gumbel-Hougaard(GH)Copula函数
式中,u、v均为边缘分布函数;θ为Copula函数参数。
1.2.3 Ali-Mikhail-Haq(AMH)Copula函数
式中,u、v均为边缘分布函数;θ为Copula函数参数。
1.2.4 Frank Copula函数
式中,u、v均为边缘分布函数;θ为Copula函数参数。
1.2.5 Joe Copula函数
1.2.6 其它
1.3 二次型Copula函数
2 变量相关性度量指标
2.1 Pearson线性相关系数
Pearson相关系数(Pearson Correlation Coefficient)是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。
不同Pearson线性相关系数的示意图如下:
2.2 Kendall秩相关系数
2.3 Spearman秩相关系数
spearman相关系数是衡量两个变量的依赖性的非参数指标。 它利用单调方程评价两个统计变量的相关性。 如果数据中没有重复值, 并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或−1。
2.4 尾部相关系数
在金融风险分析中,人们更关心的是随机变量的尾部相关性(Tail Dependence Coefficient, TDC),也就是当严格随机变量取较大的值或者较小的值时,它对另一个随机变量的取值是否有影响。
尾部相关包括上尾相关和下尾相关。
2.5 MATLAB实现
MATLAB函数如下:
% rho ρ Pearson线性相关系数
% tau τ Kendall秩相关系数
% rhos ρs Spearman秩相关系数
% lambda λ 尾部相关系数rho = corr(X,Y ,'type','pearson');
tau = corr(X,Y , 'type' , 'kendall');
rhos = corr(X,Y , 'type' , 'Spearman');
根据上述函数,可依据所需,绘制相关系数图如下:
3 联合分布模型建立步骤
1.确定特征变量的边缘分布
2.确定Copula函数的参数
3.选择合适的Copula函数,并建立联合分布
4.进行频率分析,计算条件概率和重现期等
4 Copula函数实现代码
【建议】:可参考【MATLAB 统计分析与应用:40个案例分析】一书。
4.1 确定特征变量的边缘分布
4.1.1 K-S检验
K-S法进行检验:
[H,P,KSSTAT,CV] = kstest(X,cdf,alpha)
H=0表示接受假设;H=1表示拒绝原假设,即拒绝指定分布。
P为原假设成立的概率
KSSTAT为测试统计量的值
CV为是否接受假设的临界值。
4.2 确定Copula函数的参数
4.3 优选Copula函数
4.3.1 Deviation Information Criterion, DIC
4.4 频率分析:条件概率分布、重现期等
4.5 The most-likely scenario
【理论学习】
the most-likely combination(MLE) point (d*,s*)
【实例探讨】
根据我的算例,我的实现结果如下:
绘图代码如下:
figure(1)
subplot(2,2,1)
hold on; box on;
contour(Yseries,Xseries,M',[2 2],'w');
DSS = GetContourMatrix(c,2);
h(2)=line( [ min(DSS{1,1}(2,:)) min(DSS{1,1}(2,:)) ],[ 50 200] ,'linestyle','--', 'Color',[0.4118 0.4118 0.4118], 'LineWidth', 1);
h(3)=line( [ 0.5 1.8] ,[ min(DSS{1,1}(1,:)) min(DSS{1,1}(1,:)) ] ,'linestyle','--', 'Color',[0.4118 0.4118 0.4118], 'LineWidth', 1);
[~,h(1)] = contour(Yseries,Xseries,M',[2 2],'k');
h(1).LineWidth = 1.5;
h(4)=plot(MLC(1,2),MLC(1,1), 'r.','markersize',25);
axis([ 0.5 1.75 50 190 ]);
xlabel("Severity");
ylabel("Duration");
hl = legend(h([1 4 ]),"Isoline of T_o_r","Most likely scenario");
set(hl,'Box','off');subplot(2,2,2)
hold on; box on;
plot(ff1{1,1},aaa{1,1},'k:','linewidth',1.5);
index = find(aaa{1,1}==MLC(1,1));
plot(ff1{1,1}(index),aaa{1,1}(index),'r.','markersize',25);
axis([ 0 0.01 50 190 ]);
xlabel("f_D(d)");
ylabel("Duration");subplot(2,2,3)
hold on; box on;
plot(bbb{1,1},ff2{1,1},'k:','linewidth',1.5);
index = find(bbb{1,1}==MLC(1,2));
plot( bbb{1,1}(index),ff2{1,1}(index),'r.','markersize',25 );
axis([ 0.5 1.75 0 2.2]);
xlabel("Severity");
ylabel("f_S(s)");subplot(2,2,4)
hold on; box on;
plot(1:length(UVYFrank{1,1}),UVYFrank{1,1},'k:','linewidth',1.5);
index = find(bbb{1,1}==MLC(1,2));
plot( index ,UVYFrank{1,1}(index),'r.','markersize',25 );
ylabel("f(d,s)");
难过的是,论文中的 边界点(Boundary point) 我不知道怎么得到。
4.6 Bivariate uncertainty envelopes
参考
1.书籍-《MATLAB统计分析与应用:40个案例分析》
2.博客-Copula函数
3.参考文献-Responses of precipitation and runoff to climate warming and implications for future drought changes in China
4.参考文献-Drought hazard transferability from meteorological to hydrological propagation
MATLAB利用Copula函数进行频率分析相关推荐
- matlab pup,matlab利用bar函数画不同颜色直方图
matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...
- 在 Apache Spark 中利用 HyperLogLog 函数实现高级分析
在 Apache Spark 中利用 HyperLogLog 函数实现高级分析 预聚合是高性能分析中的常用技术,例如,每小时100亿条的网站访问数据可以通过对常用的查询纬度进行聚合,被降低到1000万 ...
- matlab利用bar函数画不同颜色直方图
matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...
- 【Mo 人工智能技术博客】利用Logistic函数和LSTM分析疫情数据
利用Logistic函数和LSTM分析疫情数据 作者:林泽龙 Mo 1. 背景 2019 新型冠状病毒 (SARS-CoV-2),曾用名 2019-nCoV,通用简称新冠病毒,是一种具有包膜的正链单股 ...
- 遍历图像 找最小外接矩形 matlab,2018a版本MatLab利用regionprops函数获取图片中物体轮廓最小外接矩形...
2018a版本MatLab利用regionprops函数获取图片中物体最小外接矩形 本次内容,用于介绍利用matlab中的regionprops函数来获取图像区域中的物体的最小外接矩形信息(位置(x, ...
- matlab 利用polyfitpolyval函数进行基线矫正【matlab程序】
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %对原始数据进行基线矫正 %通过矫正,使起始 ...
- MATLAB中copula函数的程序,Copula理论MATLAB应用实例.doc
Copula理论MATLAB应用实例.doc %-------------------------------------------------------------------------- % ...
- MATLAB中滤波函数、频率响应函数以及频率响应函数不同表达形式的转换
一.理论公式 频率响应函数的表达式: 对应的z变换的多项表达式: Z变换的零极点表达形式: Z变换的二阶因子级联形式: 二.滤波函数filter filter函数,仅可以用于零状态响应系统. y=fi ...
- matlab输入频率函数,matlab的czt()函数实现频率细化的实例
fs=256;%采样频率 N=512;%采样点数 nfft=512; n=0:1:N-1;%时间序列号 %n/fs:采样频率下对应的时间序列值 n1=fs*(0:nfft/2-1)/nfft;%F F ...
- Matlab利用scatter函数绘制散点图
Matlab中利用scatter来绘制散点图 函数说明 函数名 scatter 含义 绘制散点图 语法 scatter(x,y) %默认形式 scatter(x,y,sz) %sz: 设置散点标记的 ...
最新文章
- 「系统架构」什么是堡垒机?为什么需要堡垒机?
- 中国公司占据VVC专利贡献榜4席
- SpringBoot学习:在Interillj Idea上快速搭建SpringBoot项目
- SAP 电商云 Spartacus Checkout 端到端测试
- 单模光电转换器怎么接_我对汽车电子电磁兼容测试实验室使用的光电收发器之使用管理方式的一些看法...
- pointnet分割自己的点云数据_细嚼慢咽读论文:PointNet论文及代码详细解析
- python matplotlib模块教程_Python中的Matplotlib模块入门教程
- 职高计算机word教学视频,职高计算机专业Word范例教学三例.doc
- 基于Redis的三种分布式爬虫策略
- 图书馆管理系统(连接数据库)
- 03.获取网页源代码
- FPGA小技巧 - 缩减运算符
- win11更新后任务栏空白怎么办? win11更新后任务栏空白卡死的解决方法
- 如何建立高绩效的团队
- 聚焦医疗数字化,华为医疗物联网更懂智慧医疗
- 炫出我的色彩 HUAWEI nova青春版流光水波纹闪亮来袭
- 10. Joining Data with dplyr in R
- 用python轻松实现数据分析中的RFM建模
- 帝国竞争算法(Imperialist Competitive Algorithm, ICA)
- xml文件使用浏览器打开,提示“This page contains the following errors“解决办法