Sir : Can you teach me how to store rolling estimates coefficient using matix ?
The code copy from the Eview8 's sample programs (rollfcst1.prg), I wrote some lines myself (marked on red) on the original codes.I want to store all beta cofficient(coeff1 coeff2 coeff3 ) and statistics(coeff4 coeff5 coeff6) on every one looping, from OLS estimate procedure, I hope result like below table:
nroll coeff1 coeff2 coeff3 coeff4 coeff5 coeff6
1 -13.5 8.6 4.3 -1.65 1.96 2.54
2 -3.6 7.2 2.1 - 3.01 2.04 1.89
3 . . . . . .
4
' create workfile
wfcreate rollfcst q 1968 1982
' fill data
series y
y.fill3.733,3.567,3.533,3.400,3.400,3.433,3.576,3.567,4.167,4.733,5.167,5.867,5.900,5.900,6.033,5.967,5.767,5.633,5.600,5.333,4.933,4.867,4.833,4.800,5.033,5.133,5.633,6.667,8.133,8.767,8.600,8.433,7.633,7.467,7.833,7.900,7.467,7.100,6.900,6.633,6.200,6.000,5.967,5.833,5.733,5.767,5.800,5.867,6.133,7.500,7.633,7.500,7.333,7.400,7.333,8.367,8.767,9.367,9.500,10.53
' set window size
!window = 20
' get size of workfile
!length = @obsrange
' declare equation for estimation
equation eq1
' declare series for final results
series yhat 'point estimates
series yhat_se ' forecast std.err.
' set step size
!step = 4
'calculate number of rolls
!nrolls = @floor((!length-!window)/!step)
'matrix to store coefficient estimates
matrix(!nrolls ,3) coeff ' where 3 is the number of coefficients
' move sample !step obs at a time
for !i = 1 to !length-!window+1-!step step!step
'set sample to estimation period
smpl@first+!i-1 @first+!i+!window-2
'estimate equation
eq1.lsy c y(-1) y(-2)
coeff(!i,1)= eq1.@coef(1)
coeff(!i,2)=eq1.@coef(2)
coeff(!i,3)=eq1.@coef(3)
coeff(!i,4)=eq1.@coef(4)
coeff(!i,5)=eq1.@coef(5)
coeff(!i,6)=eq1.@coef(6)
'reset sample to forecast period
smpl@first+!i+!window-1 @first+!i+!window-2+!step
'make forecasts in temporary series first
eq1.forecast(f=na)tmp_yhat tmp_se
'copy data in current forecast sample
yhat= tmp_yhat
yhat_se= tmp_se
next
THS !