proc likelihood(prmtr1);
local prmtr,p11,p22,p12,p21,p,u1,u2,w1,w2,a1,a2,b1,b2,li,
ph1,ph2,ph,px,h1,h2,h,err,err1,err2,
pdf1,pdf2,pdfjz,pdf,pdf_fnl,
i;
external proc trans;
prmtr=trans(prmtr1);
p11=prmtr[1,1];p22=prmtr[2,1];u1=prmtr[3,1];u2=prmtr[4,1];
w1=prmtr[5,1];w2=prmtr[6,1];a1=prmtr[7,1];b1=prmtr[8,1];
a2=prmtr[9,1];b2=prmtr[10,1];
li=0;
err1=r-ones(nuber,1)*u1;
err2=r-ones(numer,1)*u2;
p12=1-p11; p21=1-p22;
p=(p11~p12|p21~p22);
@-----------以马氏链的边缘分布代替后验分布的初始值--------@
ph1=(1-p22)/(2-p11-p22);
ph2=(1-p11)/(2-p11-p22);
ph=ph1|ph2;
@-----------对两种不同状态下的条件方差赋初值-------@
h1=w1/(1-a1-b1); h2=w2/(1-a2-b2);
i=2;
do until i>number;
@----------消除条件方差计算中的路径依赖----------@
h=ph1*(u1^2+h1)+ph2*(u2^2+h2)-(ph1*u1+ph2*u2)^2;
err=r[i-1,1]-(ph1*u1+ph2*u2);
@----------求每种状态下的条件方差-----------@
h1=w1+a1*err^2+b1*h;
h2=w2+a2*err^2+b2*h;
@----------求每种状态下的概率密度函数-------@
pdf1=-0.5*ln(2*pi*h1)-0.5*err1[i,1]^2/h1;
pdf1=exp(pdf1);
pdf2=-0.5*ln(2*pi*h2)-0.5*err2[i,1]^2/h2;
pdf2=exp(pdf2);
pdfjz=(pdf1~0|0~pdf2);
@----------求先验概率-------------@
px=p*ph;
@----------求不依赖于状态的概率密度函数-------@
pdf=pdfjz*px;
pdf_fnl=pdf[1,1]+pdf[2,1];
@----------得到新的后验概率----------@
ph=pdf*(1/pdf_fnl);
ph1=ph[1,1];
ph2=ph[2,1];
@----------------------------------------@
li=li+ln(pdf_fnl);
i=i+1;
endo;
li=-li;
retp(li);
endp;
proc trans(c0);
local c1;
c1=c0;
c1[1,1]=1/(1+exp(-c0[1,1]));
c1[2,1]=1/(1+exp(-c0[2,1]));
c1[7,1]=exp(c0[7,1])/(1+exp(c0[7,1])+exp(c0[8,1]));
c1[8,1]=exp(c0[8,1])/(1+exp(c0[7,1])+exp(c0[8,1]));
c1[9,1]=exp(c0[9,1])/(1+exp(c0[9,1])+exp(c0[10,1]));
c1[10,1]=exp(c0[10,1])/(1+exp(c0[9,1])+exp(c0[10,1]));
retp(c1);
endp;
proc tran_inv(c0);
local c1;
c1=c0;
c1[1,1]=-ln((1-c0[1,1])/c0[1,1]);
c1[2,1]=-ln((1-c0[2,1])/c0[2,1]);
c1[9,1]=ln(c0[9,1]/(1-c0[9,1]-c0[10,1]));
c1[10,1]=ln(c0[10,1]/(1-c0[9,1]-c0[10,1]));
c1[7,1]=ln(c0[7,1]/(1-c0[7,1]-c0[8,1]));
c1[8,1]=ln(c0[8,1]/(1-c0[7,1]-c0[8,1]));
retp(c1);
endp;
以上是程序求似然函数的过程,在运行的时候,总是会有这样的提示;“ Nested procedure definition G0155”和“Syntax error G0008 : 'proc trans(c0)' ” 并且软件指示错误出在上面程序中我用红字标示的那一行,但是我看不出问题在哪里也不知道如何修改,希望大家能帮忙看看问题出在哪里,谢谢。