上面的程序是误差服从广义的误差分布(ged)推广形式的模型最大似然法估计参数的小程序,但是在if语句过程中老是报告z1变量未被定义,请高手指点帮忙修改以下.
thanks in advance!!!
'change path to program path %path = @runpath + "../data/" cd %path
' load workfile load sy
series y = sy
' set sample to 1/2/82-7/9/92 (10/6/86 is obs 3945) sample s0 1 1 sample s1 2 500 smpl s1
' get starting values from Gaussian ARCH equation eq1 eq1.arch y c show eq1.output
' declare and initialize parameters coef(1) mu = eq1.c(1) coef(1) omega = eq1.c(2) coef(1) alpha = eq1.c(3) coef(1) beta = eq1.c(4) coef(1) lambda=0.5 coef(1) a=0.2
' set presample values of expressions in logl smpl s0 series sig2=omega(1) series res=0 !pi = @acos(-1)
' set up GARCH likelihood logl ll1 ll1.append @logl logl ll1.append res=y-mu(1) ll1.append sig2 = omega(1)+alpha(1)*res(-1)^2 +beta(1)*sig2(-1) ll1.append u=@gamma(2/lambda(1))/@sqrt(@gamma(3/lambda(1))*@gamma(1/lambda(1))*(1-3*a(1)+3*a(1)^2)-@gamma(2/lambda(1))^2*(1-2*a(1))^2) ll1.append z=res/@sqrt(sig2) ll1.append z1=res/@sqrt(sig2)+(1-2*a(1))*u if z1<=0 then ll1.append log1=@log(lambda(1))+@gammalog(2/lambda(1))-@logu-@gammalog(1/lambda(1))+(@gamma(2/lambda(1))/a/@gamma(1/lambda(1))*z1/u)^lambda(1) else z1>0 ll1.append log1=@log(lambda(1))+@gammalog(2/lambda(1))-@logu-@gammalog(1/lambda(1))-(@gamma(2/lambda(1))/(1-a)/@gamma(1/lambda(1))*z1/u)^lambda(1) endif
' estimate and display output smpl s1 ll1.ml(showopts, m=1000, c=1e-5)
'estimate same model using EViews' ' build-in function
equation eq2 eq2.arch(tdist) y c show eq2 show ll1.output


雷达卡



京公网安备 11010802022788号







