全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 EViews专版
3616 2
2005-08-14

上面的程序是误差服从广义的误差分布(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

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2005-8-14 12:46:00

指出几点仅供楼主参考

运行到if语句时,ll1的设定还没有完成,当然更没有运行,因此z1变量此时必定是未被定义。是不是应该将if语句放入ll1的设定中?即在if z1<=0 then,else z1>0以及endif三个语句前加上ll1.append

另外,楼主需要考虑,如果将if语句放入ll1的设定中,对ll1进行估计时EViews有个迭代运算次序的问题,z1<=0这个条件不知是不是逐个观测值进行判断。好像上面的程序是按观测值运算的,可以试试。

程序中这句:ll1.append z=res/@sqrt(sig2), 定义的z没有用到啊

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2005-8-14 16:03:00

本人曾经尝试过将if then ,else 以及endif 语句加入ll1.append,但是还是出现上述的问题,另外就是当把res/@sqrt(sig2)直接加入到z1的定义中时,z1无法出来数值,还请高手指教.

另外就是在将z1加入到ll1时,本人是希望z1出来的逐个数值与0对比,但是好象z1代表了一个数列,不知应该如何将数列里的每个数提取出来与0进行判断,希望指点迷津.

谢谢!!!1

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群