* * ARIMA.PRG * open data quarterly.xls calendar 1960 1 4 data(format=xls,org=columns) 1960:01 2002:01 ppi graph(header='Producer Price Index, 1995=100') # ppi * set logppi = log(ppi) * corr(partial=ppcorrs,number=35) logppi / pcorrs graph(header='Correlations of Log PPI',key=below,style=bar,nodates,min=-1.0,max=1.0,number=0) 2 # pcorrs # ppcorrs * diff logppi / dlogppi * corr(partial=pdpcorrs,number=35) dlogppi / dpcorrs graph(header='Correlations of 1st Diff',key=below,style=bar,nodates,min=-1.0,max=1.0,number=0) 2 # dpcorrs # pdpcorrs * boxjenk(diffs=1,constant,ar=1) logppi / resids correlate(number=35) resids / rescorrs graph(header='AR(1)',style=bar,nodates,min=-1.0,max=1.0,number=1) # rescorrs 2 * * boxjenk(diffs=1,constant,ar=2) logppi / resids correlate(number=35) resids / rescorrs graph(header='AR(2)',style=bar,nodates,min=-1.0,max=1.0,number=0) # rescorrs 2 * * boxjenk(diffs=1,constant,ar=1,ma=1) logppi / resids correlate(number=35) resids / rescorrs graph(header='ARMA(1,1)',style=bar,nodates,min=-1.0,max=1.0,number=0) # rescorrs 2 * * boxjenk(diffs=1,constant,ar=1,ma=1,sar=1) logppi / resids correlate(number=35) resids / rescorrs graph(header='(1,1)x(1,0)',style=bar,nodates,min=-1.0,max=1.0,number=0) # rescorrs 2 * boxjenk(diffs=1,constant,ar=1,ma=||1,4||) logppi / resids correlate(number=35) resids / rescorrs graph(header='(1,(1,4))',style=bar,nodates,min=-1.0,max=1.0,number=0) # rescorrs 2 * * * Estimate the model through the end of 1997, then forecast the remainder of the * sample. Graph the forecast with the actuals. * boxjenk(diffs=1,constant,ar=1,ma=||1,4||,define=favored) logppi * 1997:4 resids uforecast(equation=favored) forecast 1998:1 2002:1 graph(header='Forecasts vs Actuals') 2 # forecast # logppi 1997:1 * * uforecast(equation=favored,static) onestep 1998:1 2002:1 graph(header='One-Step Forecasts vs Actuals') 2 # onestep # logppi 1997:1 * source uforeerr.src @uforeerrors logppi onestep * * Generate forecast statistics on steps 1 to 8 * theil(setup) 1 8 2002:1 # favored do time=1998:1,2001:4 theil time boxjenk(noprint,diffs=1,constant,ar=1,ma=||1,4||,define=favored) logppi * time resids end do time theil(dump) * * Using the procedures * source bjtrans.src @bjtrans ppi * source bjident.src @bjident(trans=log,diffs=2) ppi * source bjfore.src @bjfore(diffs=1,ars=1,mas=1,constant) logppi 1998:1 2002:1 fore11 resids graph(header='Forecasts vs Actuals') 2 # fore11 # logppi 1997:1 * * source regcorrs.src @regcorrs(dfc=%narma) resids