clear
clc
%
N=1000;
alpha1=0.6;
alpha2=0.4;
N1=alpha1*N;
N2=alpha2*N;
rho1=0.3;
rho2=0.9;
xx1=copularnd('Gaussian',rho1,N1);
xx2=copularnd('Gaussian',rho2,N2);
xx=[xx1;xx2];
xxx=xx(:,1);
yyy=xx(:,2);
U=xxx;
V=yyy;
%利用EM算法进行估计运算
S=2; % S为Copula个数
N=length(U); % N为样本容量
th=0.000001; %收敛条件
a=2.21;
gama=0.65; %参数初始化
rana=[1/2,1/2]'; %权重参数初始化
a1=copulafit('Gaussian',[U V]);
a2=copulafit('Gaussian',[U,V])+0.1;
theta=[a1(1,2),a2(1,2)]'; %相依结构参数初始化
t=inf;
count=0; %迭代次数
COPULA=zeros(N,S); %COPULA函数矩阵
ranack=zeros(S,1); %λ(k)*copula(n,k) n固定
RZNK=zeros(N,S); %λ(k)*copula(n,k)/sum(λ(k)*copula(n,k))
SCADD=zeros(S,1); %λ(k)*SCAD(λ(k))
turntheta_old=zeros(S,1);
linss1=zeros(2,51); %用来存储各个Copula权重参数的变化
linss2=zeros(2,51); %用来存储各个Copula相依参数的变化
while t>=th&&count<=50
rana_old=rana;
theta_old=theta;
turntheta_old(1)=tan(pi*theta_old(1)/2);
turntheta_old(2)=tan(pi*theta_old(2)/2);
%由于相依结构参数有约束限制,故将参数进行转换,从而用无约束最优化方法来解决
%计算COPULA矩阵
for n=1:N
COPULA(n,1)=copulapdf('Gaussian',[U(n,:) V(n,:)],theta_old(1));
%Gaussian Copula密度函数值
COPULA(n,2)=copulapdf('Gaussian',[U(n,:) V(n,:)],theta_old(2));
%Gaussian Copula密度函数值
end
%计算SCADD
for k=1:S
SCADD(k)=rana_old(k)*SCAD(rana_old(k),a,gama);
end
delta=N*(1-sum(SCADD));
%E步
%开始求rznk
for cn=1:N
for cm=1:S
ranack(cm)=rana_old(cm)*COPULA(cn,cm);
end
for cm=1:S
RZNK(cn,cm)=ranack(cm)/sum(ranack);
end
end
%M步
%求权重参数的更新方程
for cm=1:S
rana(cm)=(sum(RZNK(:,cm))-N*rana_old(cm)*SCAD(rana_old(cm),a,gama))/delta;
end
if sum(rana<0)>=1
rana=rana_old;
break;%判断如果出现rana小于0的情况,则终止跳出循环
end
rana;
linss1(:,count+1)=rana;
%求相依结构参数的更新方程
%采用BFGS方法求相依结构参数的更新方程
[turntheta,fval,exitflag,output,grad,hessian]=runtheta(N,U,V,RZNK,t);
turntheta;
%再把相依结构参数转换回来
theta(1)=atan(turntheta(1))*2/pi;
theta(2)=atan(turntheta(2))*2/pi;
theta;
linss2(:,count+1)=theta;
%判断终止条件
t=max([norm(rana_old(:)-rana(:));norm(theta_old(:)-theta(:))]);
count=count+1;
end
count =
51
theta
theta =
0.1998
0.8889
rana
rana =
0.5920
0.4080
theta =
0.2419
0.8898
rana
rana =
0.5404
0.4596
Mix-Copula.zip_Mix-Copula_copula 注释_mix_混合Copula函数估计_辅助学习
版权申诉
5星 · 超过95%的资源 187 浏览量
2022-07-15
12:36:15
上传
评论 5
收藏 12KB ZIP 举报
JonSco
- 粉丝: 67
- 资源: 1万+
最新资源
- 百度贴吧12.57.5.0.apk
- JavaScript,简称JS,是一种在Web开发中举足轻重的客户端脚本语言 它最初由Netscape公司的布兰登·艾奇在199
- 什么是智慧司库?什么是智慧司库?
- PHP(Hypertext Preprocessor,超文本预处理器)是一种流行的服务器端脚本语言,尤其适用于Web开发 它诞生
- 基于GD32F103C8T6的USBD工程实例
- Go(也被称为Golang)是由Google公司开发的一种静态强类型、编译型的编程语言 自2007年诞生以来,Go凭借其简洁、高
- Visual Basic(简称VB)是由微软公司开发的一种高级编程语言,特别适用于Windows环境下的应用程序开发 以下是关于
- Delphi是一款在Windows平台上广受欢迎的快速应用程序开发工具(RAD),由最初的Borland公司(现已转移至Emba
- axios-javaweb项目
- 可以帮我看看是什么错吗?
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论15