楼主,我觉得“start gibbs toop”中的似然函数(第9——42行)可以改成这样,会和模型更符合一些
beta_by_s=zeros(n,1);
for t=1:n
if S(t)==1
beta_by_s(t)=beta(1,1);
else
if S(t)==2
beta_by_s(t)=beta(2,1);
else
beta_by_s(t)=beta(3,1);
end
end
end
err_by_s=y-beta_by_s;
h_by_s=zeros(n,1);
if S(1)==1
h_by_s(1)=a_1(1)/(1-a_1(2)-a_1(3)-a_1(4));
else
if S(2)==2
h_by_s(1)=a_2(1)/(1-a_2(2)-a_2(3)-a_2(4));
else
h_by_s(1)=a_3(1)/(1-a_3(2)-a_3(3)-a_3(4));
end
end
if S(2)==1
h_by_s(2)=a_1(1)+a_1(2)*err_by_s(1)^2;
else
if S(2)==2
h_by_s(2)=a_2(1)+a_2(2)*err_by_s(1)^2;
else
h_by_s(3)=a_3(1)+a_3(2)*err_by_s(1)^2;
end
end
if S(3)==1
h_by_s(3)=a_1(1)+a_1(2)*err_by_s(2)^2+a_1(3)*err_by_s(1)^2;
else
if S(3)==2
h_by_s(3)=a_2(1)+a_2(2)*err_by_s(2)^2+a_2(3)*err_by_s(1)^2;
else
h_by_s(3)=a_3(1)+a_3(2)*err_by_s(2)^2+a_3(3)*err_by_s(1)^2;
end
end
for t=4:n
if S(t)==1
h_by_s(t)=a_1(1)+a_1(2)*err_by_s(t-1)^2+a_1(3)*err_by_s(t-2)+a_1(4)*err_by_s(t-3);
else
if S(t)==2
h_by_s(t)=a_2(1)+a_2(2)*err_by_s(t-1)^2+a_2(3)*err_by_s(t-2)+a_2(4)*err_by_s(t-3);
else
h_by_s(t)=a_3(1)+a_3(2)*err_by_s(t-1)^2+a_3(3)*err_by_s(t-2)+a_3(4)*err_by_s(t-3);
end
end
end
lterm_by_s=(err_by_s.^2)./h_by_s;
h_s1=h_by_s(S==1);
h_s2=h_by_s(S==2);
h_s3=h_by_s(S==3);
lterm_s1=lterm_by_s(S==1);
lterm_s2=lterm_by_s(S==2);
lterm_s3=lterm_by_s(S==3);
llike1=-0.5*sum(log(h_s1))-0.5*sum(lterm_s1);
llike2=-0.5*sum(log(h_s2))-0.5*sum(lterm_s2);
llike3=-0.5*sum(log(h_s3))-0.5*sum(lterm_s3);
我对MRS-GARCH了解有限,上面的程序是我自己的看法,不知道对不对。


雷达卡
京公网安备 11010802022788号







