' compare rolling forecast with and without coef update
' for version 4
' last checked 11/3/2000 h

' create workfile
workfile rollfcst q 1968 1982

' fill data
series y
y.fill 3.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		' with coef update
equation eq2		' without

' estimate using first window sample
smpl @first @first+!window-1
eq2.ls y c y(-1) y(-2)

' declare series for final results
series yhat1		' point estimates
series yhat2		

' set step size
!step = 4

' 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.ls y c y(-1) y(-2)
	' 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_yhat1
	eq2.forecast(f=na) tmp_yhat2
	' copy data in current forecast sample
	yhat1 = tmp_yhat1
	yhat2 = tmp_yhat2
next

' plot actual and rolling forecasts with confidence bounds
smpl @all

graph graph1.line y yhat1 yhat2
graph1.options size(8,2) linepat
graph1.setelem(1) lcolor(blue) lpat(solid) legend(actual)
graph1.setelem(2) lcolor(red) lpat(solid) legend(with coef update)
graph1.setelem(3) lcolor(green) lpat(dash1) legend(without)
graph1.legend position(0,0) columns(1)
graph1.addtext(t) Comparison of rolling forecast with and without coefficient update

show graph1