• 大小: 260KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签: copula  

资源简介

MATLAB代码,资源包括copula函数的全部程序,包括确定边缘分布、函数选择、参数估计、模型检验,并且在每个部分有详细的注释,同时添加数据案例,可以正常运行得出算例结果 整体程序摘自图书,所以代码质量不错

资源截图

代码片段和文件信息

%--------------------------------------------------------------------------
%                         Copula理论及应用实例
%--------------------------------------------------------------------------

%******************************读取数据*************************************
% 从文件hushi.xls中读取数据
hushi = xlsread(‘hushi.xls‘);
% 提取矩阵hushi的第5列数据,即沪市的日收益率数据
X = hushi(:5);
% 从文件shenshi.xls中读取数据
shenshi = xlsread(‘shenshi.xls‘);
% 提取矩阵shenshi的第5列数据,即深市的日收益率数据
Y = shenshi(:5);


%****************************绘制频率直方图*********************************
% 调用ecdf函数和ecdfhist函数绘制沪、深两市日收益率的频率直方图
[fx xc] = ecdf(X);
figure;
ecdfhist(fx xc 30);
xlabel(‘沪市日收益率‘);  % 为X轴加标签
ylabel(‘f(x)‘);  % 为Y轴加标签
[fy yc] = ecdf(Y);
figure;
ecdfhist(fy yc 30);
xlabel(‘深市日收益率‘);  % 为X轴加标签
ylabel(‘f(y)‘);  % 为Y轴加标签


%****************************计算偏度和峰度*********************************
% 计算X和Y的偏度
xs = skewness(X)
ys = skewness(Y)

% 计算X和Y的峰度
kx = kurtosis(X)
ky = kurtosis(Y)


%******************************正态性检验************************************
% 分别调用jbtest、kstest和lillietest函数对X进行正态性检验
[hp] = jbtest(X)  % Jarque-Bera检验
[hp] = kstest(X[Xnormcdf(Xmean(X)std(X))])  % Kolmogorov-Smirnov检验
[h p] = lillietest(X)  % Lilliefors检验

% 分别调用jbtest、kstest和lillietest函数对Y进行正态性检验
[hp] = jbtest(Y)  % Jarque-Bera检验
[hp] = kstest(Y[Ynormcdf(Ymean(Y)std(Y))])  % Kolmogorov-Smirnov检验
[h p] = lillietest(Y)  % Lilliefors检验


%****************************求经验分布函数值*********************
% 调用ecdf函数求X和Y的经验分布函数
[fx Xsort] = ecdf(X);
[fy Ysort] = ecdf(Y);
% 调用spline函数,利用样条插值法求原始样本点处的经验分布函数值
U1 = spline(Xsort(2:end)fx(2:end)X);
V1 = spline(Ysort(2:end)fy(2:end)Y);

% 调用ecdf函数求X和Y的经验分布函数
[fx Xsort] = ecdf(X);
[fy Ysort] = ecdf(Y);
% 提取fx和fy的第2个至最后一个元素,即排序后样本点处的经验分布函数值
fx = fx(2:end);
fy = fy(2:end);

% 通过排序和反排序恢复原始样本点处的经验分布函数值U1和V1
[Xsortid] = sort(X);
[idsortid] = sort(id);
U1 = fx(id);
[Ysortid] = sort(Y);
[idsortid] = sort(id);
V1 = fy(id);


%*******************************核分布估计**********************************
% 调用ksdensity函数分别计算原始样本X和Y处的核分布估计值
U2 = ksdensity(XX‘function‘‘cdf‘);
V2 = ksdensity(YY‘function‘‘cdf‘);


% **********************绘制经验分布函数图和核分布估计图*********************
[Xsortid] = sort(X);  % 为了作图的需要,对X进行排序
figure;  % 新建一个图形窗口
plot(XsortU1(id)‘c‘‘LineWidth‘5); % 绘制沪市日收益率的经验分布函数图
hold on
plot(XsortU2(id)‘k-.‘‘LineWidth‘2); % 绘制沪市日收益率的核分布估计图
legend(‘经验分布函数‘‘核分布估计‘ ‘Location‘‘NorthWest‘); % 加标注框
xlabel(‘沪市日收益率‘);  % 为X轴加标签
ylabel(‘F(x)‘);  % 为Y轴加标签

[Ysortid] = sort(Y);  % 为了作图的需要,对Y进行排序
figure;  % 新建一个图形窗口
plot(YsortV1(id)‘c‘‘LineWidth‘5); % 绘制深市日收益率的经验分布函数图
hold on
plot(YsortV2(id)‘k-.‘‘LineWidth‘2); % 绘制深市日收益率的核分布估计图
legend(‘经验分布函数‘‘核分布估计‘ ‘Location‘‘NorthWest‘); % 加标注框
xlabel(‘深市日收益率‘);  % 为X轴加标签
ylabel(‘F(x)‘);  % 为Y轴加标签


%****************************绘制二元频数直方图***************Copula函数选择,若使用欧氏距离则不采用
% 调用ksdensity函数分别计算原始样本X和Y处的核分布估计值
U = ksdensity

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        8240  2020-05-06 18:07  程序及算法\copula.m
     文件      365056  2009-11-08 12:14  程序及算法\hushi.xls
     文件      365056  2009-11-08 12:15  程序及算法\shenshi.xls
     目录           0  2020-05-06 18:08  程序及算法\

评论

共有 条评论