* * This is program LIV_RTIMA11_p_08Nov.prg on 11/14/08 * It runs real-time forecasts to see if improvement is possible over LIV * Compare survey forecast RMSEs to QRTSIC & RTSIC via RMSE * Does this with latest available & calculates RMSEs for subsamples * Adds subsamples * Modified 06Nov to do DM test * cal 1947 1 2 alloc 0 2010:2 * * set some parameters * ffirst = first forecast date * flast = last forecast date * afirst = first actual date * alast = last actual date * declare series z source(noecho) c:\Data\msetest2.src compute ffirst = 1971:1 ; * first forecast compute flast = 2007:2 ; * last forecast compute afirst = 1965:2 ; * first actual compute alast = 2007:2 ; * last actual compute aflast = 2006:2 ; * last actual minus one year for lag in forecast * open data c:\data\LIVPIE1.xls data(format=xls,org=obs) ffirst flast livpie1 * * First, test capturing the right actuals * open data c:\data\LIV_actuals_p_08May.xls data(format=xls,org=obs,select=2) afirst alast actual_l_q5 actual_1q_q5 actual_1y_q5 $ actual_3y_q5 actual_pb_q5 * print(dates) afirst flast livpie1 actual_l_q5 actual_1q_q5 actual_1y_q5 $ actual_3y_q5 actual_pb_q5 open data c:\data\IMA11_fore_p08.xls data(format=xls,org=obs,select=2) afirst alast dxq4_hat dxq4q_hat print(dates) afirst flast livpie1 dxq4_hat dxq4q_hat compute vtot = 85 ;* change this declare series z1 pi1 pi1a declare series newfor declare series pinf declare vector[series] x(vtot) dxq(vtot) dxq4(vtot) * *************************************************** * * * Part 5. Calculate RMSEs * * * * * *************************************************** compute [vector[string]] actualbl = $ ||'latest','1 quarter','1 year','3 years','pre-bench'|| compute i = 1 * dofor z1 = actual_l_q5 actual_1q_q5 actual_1y_q5 actual_3y_q5 actual_pb_q5 * display ' ' display 'IMA vs LIV vs IMALA' display 'Actuals are ' actualbl(i) display ' ' * compute flast5 = flast - 3 * set pi1 / = z1(t+2) set e = pi1 - livpie1 set newerror = pi1 - dxq4_hat set quasie = pi1 - dxq4q_hat print(dates) ffirst flast5 pi1 livpie1 dxq4_hat e newerror print(dates) ffirst flast5 pi1 dxq4q_hat quasie * ***descriptive statistics of forecast errors smpl ffirst ffirst+20 * * display 'Subsample: the first ten years from 1971:1 to 1980:2' display 'Statistics for survey forecast error' statistics e * * display 'Statistics for IMA11 forecast error' statistics newerror * display 'Statistics for IMA11 quasi (latest available data) forecast error' statistics quasie * * display ' ' * ***Calculate RMSE * compute ts = %nobs compute ae = %dot(e,e) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'This is actuals = ' actualbl(i) display ' ' display 'Root Mean Square Forecast Error for survey =' rmsee * compute ts = %nobs compute ae = %dot(newerror,newerror) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'Root Mean Square Forecast Error for IMA11 forecast =' rmsee * compute ts = %nobs compute ae = %dot(quasie,quasie) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'Root Mean Square Forecast Error for IMA11 quasi (latest available data) forecast =' rmsee * @msetest2(nopictures) livpie1 dxq4_hat pi1 ffirst ffirst+20 3 p11 p1 @msetest2(nopictures) livpie1 dxq4q_hat pi1 ffirst ffirst+20 3 p12 p2 * smpl ffirst flast5 * * display 'Full Sample' display 'Statistics for survey forecast error' statistics e * * display 'Statistics for IMA11 forecast error' statistics newerror * display 'Statistics for IMA11 quasi (latest available data) forecast error' statistics quasie * * display ' ' * ***Calculate RMSE * compute ts = %nobs compute ae = %dot(e,e) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'This is actuals = ' actualbl(i) display ' ' display 'Root Mean Square Forecast Error for survey =' rmsee * compute ts = %nobs compute ae = %dot(newerror,newerror) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'Root Mean Square Forecast Error for IMA11 forecast =' rmsee * compute ts = %nobs compute ae = %dot(quasie,quasie) compute rmsee = sqrt(ae/ts) *compute rmse(2,1) = rmsee display 'Root Mean Square Forecast Error for IMA11 quasi (latest available data) forecast =' rmsee * @msetest2(nopictures) livpie1 dxq4_hat pi1 ffirst flast5 3 p21 p3 @msetest2(nopictures) livpie1 dxq4q_hat pi1 ffirst flast5 3 p22 p4 * End of new part compute i = i + 1 end do for *