Copula理论MATLAB应用实例.doc
%--------------------------------------------------------------------------
% Copula理论及其在matlab中的实现程序应用实例
%--------------------------------------------------------------------------
%******************************读取数据*************************************
% 从文件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进行正态性检验
[h,p] = jbtest(X) % Jarque-Bera检验
[h,p] = kstest(X,[X,normcdf(X,mean(X),std(X))]) % Kolmogorov-Smirnov检验
[h, p] = lillietest(X) % Lilliefors检验
% 分别调用jbtest、kstest和lillietest函数对Y进行正态性检验
[h,p] = jbtest(Y) % Jarque-Bera检验
[h,p] = kstest(Y,[Y,normcdf(Y,mean(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
[Xsort,id] = sort(X);
[idsort,id] = sort(id);
U1 = fx(id);
[Ysort,id] = sort(Y);
[idsort,id] = sort(id);
V1 = fy(id);
%*****************************