全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Gauss专版
2272 0
2014-03-11
请教大家,garch参数估计怎么对其范围进行限制,使得其第一个参数参数项大于0,后面两个参数大于0并相加小于1.在网上找到一个代码,使用maxlik模块,但却没有对参数进行限制,奇怪的是模拟了一下,该代码可以正常估计。
/**** Start Estimation maxlik ****/


/**  Global Maxlik Parameters **/


#include maxlik.ext;
maxset;
_max_GradTol    = 1e-6;
_max_Switch    =2~5|0.01~0.01|5~5|0.01~0.01;
_max_Algorithm = 2;
_max_LineSearch= 1;
_max_MaxIters=1000;
_max_GradMethod= 1;
_max_CovPar    = 3;
_max_GradStep   =1e-2;
_max_RandRadius=0.1;
_max_MAXTry=500;
__output       = 1;




/** Data used in the likelihood function **/
data=y;


/** Define starting values for the parameters (theta0) **/


/*
__output=1;
{coef,ll,res,vcb,aic,sbc}=arima(0,y,1,0,1,1);
success=saved(y~res,"GARCH","y1"~"r1");
*/


theta0=0.1|0.1|0.1|0.1|0.1|0.1;




/* Define Parameter Labels */


_max_ParNames="c"|"phi1"|"theta1"|"omega"|"alpha1"|"beta1";


/* Define empty residual, std residual & cond. covariance vector */


res=zeros(rows(data),1);
sres=zeros(rows(data),1);
cv=zeros(rows(data),1);


{thetahat,ll,g,vc,ret}=maxlik(data,0,&lfct_ARMAGARCH,theta0);
call maxprt(thetahat,ll,g,vc,ret);


proc(1) = lfct_ARMAGARCH(_theta,_data);
local _cm, _cv, _mlag, _ce, _i, _ll, _rd;
local _c, _phi1, _thet1;
local _w, _alpha1, _beta1;


/* Initialize ARMA-GARCH Parameters */


_c=_theta[1];
_phi1=_theta[2];
_thet1=_theta[3];
_w=_theta[4];
_alpha1=_theta[5];
_beta1=_theta[6];


/* Initialization conditional mean & variance function and re-defintion data*/


@Define max lag@ _mlag=1;
_rd=rows(data);
_cm=meanc(_data).*ones(_rd+_mlag,1);
_cv=ones(_rd+_mlag,1).*(stdc(data)^2);
_ce=zeros(_rd+_mlag,1);
_data=zeros(_mlag,1)|_data;


/* Recursive computation of the conditional mean function at every point t, based on _theta */


for _i (1+_mlag,_rd+_mlag,1);
_cm[_i]=_c+_phi1*_data[_i-1]+_thet1*(_ce[_i-1]@*(_i>1+_mlag)@);
_ce[_i]=_data[_i]-_cm[_i];
_cv[_i]=_w+_beta1*_cv[_i-1]+_alpha1*(_ce[_i-1]@*(_i>1+_mlag)@)^2;
endfor;




/* Construct residuals by re-definition of the global variables*/


res=trimr(_data-_cm,_mlag,0);
sres=trimr((_data-_cm)./sqrt(_cv),_mlag,0);
cv=trimr(_cv,_mlag,0);


/* log-likelhood */


_ll=trimr(-ln(sqrt(_cv))-0.5*((_data-_cm)./sqrt(_cv))^2,_mlag,0);


retp(_ll);
endp;

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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