ARIMA 非定態模型之AIC BIC HQC最適落後期選擇
DGP為非定態AR(3)模型:
y=0.15+0.15*u(-1)+0.14*u(-2)+0.7*u(-3)+e
係數和=0.99為非定態模型
Max lag期數為6
MA項為0
指令檔
nulldata 100
set seed 89675430
#AR(3);
scalar rho1=0.15
scalar rho2=0.14
scalar rho3=0.7
scalar d=0.15
scalar maxlag=6
scalar zval, pz, zlag, pzstar
scalar replics=10
scalar drop_first=30
matrix lsel =zeros(replics,4)
loop j =1..replics
smpl full
series u=0
series e=normal()
u=d+rho1*u(-1)+rho2*u(-2)+rho3*u(-3)+e
series y=u
dy=diff(y)
lags maxlag;dy
list dyL=dy_*
matrix IC=zeros(3,maxlag+1)
zlag = 0
loop for (i=maxlag; i>=0; i--)
arima i 1 0 ; dy const dyL
genr IC[1,i+1]=$aic
genr IC[2,i+1]=$bic
genr IC[3,i+1]=$hqc
if (i>0 && zlag==0)
zval =abs($coeff(dy_$i)/$stderr(dy_$i))
pz=2*pvalue(z,zval)
if (pz<=0.10)
zlag=i
pzstar=pz
endif
endif
if i>0
dyL -=dy_$i
endif
endloop
matrix iCmin = iminr(IC) -1
lsel[j,1:3] = iCmin'
lsel[j,4]=zlag
endloop
matrix stats=meanc(lsel)|sdc(lsel)
colnames(stats, "AIC BIC HQC z-test")
printf "\n%d replications, test down form %d lags\n" ,replics, maxlag
print "lag order selected: mean on row 1, s.d. on row 2"
printf "\n%8.2f\n",stats
最適落後期選擇結果
AIC BIC HQC z-test
5.80 2.20 2.70 4.70
0.40 0.40 1.19 1.73
由此結果可知,原始模型DGP為AR(3),但由
蒙地卡羅模擬出最適落後期為5,其結果為AIC最好,但實際落後期為3,可知HQC與實際結果較為相近。
附註
若將 maxlag改為4,其最適落後期結果如下
AIC BIC HQC z-test
3.00 2.20 2.50 3.00
0.77 0.40 0.67 1.10
發現maxlag的選擇亦會影響最適落後期的選擇結果。
ARIMA 非定態模型之AIC BIC HQC最適落後期選擇
DGP為非定態AR(3)模型:
y=0.15+0.15*u(-1)+0.14*u(-2)+0.7*u(-3)+e
係數和=0.99為非定態模型
Max lag期數為6
MA項為0
指令檔
nulldata 1000
set seed 89675430
# here we do AR(3)
scalar rho1 = 0.15
scalar rho2 = 0.14
scalar rho3 = 0.7
scalar d = 0.15
drop_first=70
scalar maxlag = 6
scalar zval, pz, zlag, pzstar
scalar replics = 1000
matrix lsel = zeros(replics, 4)
set messages off
set echo off
loop j=1..replics -q
smpl full
series u = 0
series e = normal()
u = d + rho1*u(-1) + rho2*u(-2)+rho3*(-3) + e
series y = u
dy=diff(y)
lags maxlag ; dy
list dyL = dy_*
matrix IC = zeros(3, maxlag+1)
zlag = 0
loop for (i=maxlag; i>=0; i--)-q
smpl 31 60
ols dy 1 dyL
IC[1,i+1] = $aic
IC[2,i+1] = $bic
IC[3,i+1] = $hqc
if (i > 0 && zlag == 0)
zval = abs($coeff(dy_$i)/$stderr(dy_$i))
pz = 2 * pvalue(z, zval)
if (pz <= 0.10)
zlag = i
pzstar = pz
endif
endif
if i > 0
dyL -= dy_$i
endif
endloop
lsel[j,1:3] = iCmin'
lsel[j,4] = zlag
endloop
matrix stats = meanc(lsel) | sdc(lsel)
colnames(stats, "AIC BIC HQC z-test")
printf "\n%d replications, test down from %d lags\n", replics, maxlag
print "Lag order selected: mean on row 1, s.d. on row 2"
printf "\n%8.2f\n", stats
最適落後期選擇結果
AIC BIC HQC z-test
3.00 1.65 2.50 3.30
1.70 1.23 1.60 1.77
由此結果可知,原始模型DGP為AR(3),由
蒙地卡羅模擬出最適落後期為3,其結果為AIC最好。
附註
因為不需考慮MA項,因非定態模型透過一階差分為定態,故為AR(3)模型一致,除了跑ARIMA之外又跑了OLS
發現結果都為AIC最適,但跑OLS較符合原始DGP。