Time Series sample code

/* 空氣中一氧化碳含量 */
data aero;
set qq;
 
/*indentify*/
proc arima data=aero;
identify var=f2 nlag=24 stationarity=(dickey);
title "民國82年9月至民國84年12月";
 
proc arima data=aero;
identify var=f2(1) nlag=24 stationarity=(dickey)esacf p=(0:10) q=(0:12);
title '1次差分';
 
proc arima data=aero;
identify var=f2(1,12) nlag=24 stationarity=(dickey)esacf p=(0:9) q=(0:12);
title '2次差分';
 
/*估計及診斷*/
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=0 q=(1)(12) plot method=CLS;
title '判斷ARIMA(0,2,1)(0,1,1)12 model 適不適合該時間數列';
 
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=1 q=1 plot method=CLS;
title '判斷ARIMA(1,2,1)12 model 適不適合該時間數列';
 
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=(1 6) q=(4 5 )(12) plot method=CLS;
title '判斷ARIMA(6,2,5)12 model 適不適合該時間數列';
 
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=( 8)  q=(  6) plot method=CLS;
title '判斷ARIMA(8,2,6)12 model 適不適合該時間數列';
 
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=9 q=6 plot method=CLS;
title '判斷ARIMA(9,2,6)12 model 適不適合該時間數列';
 
/*預測未來的階數*/
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=0 q=(1)(12) plot method=CLS;
forecast lead=4 alpha=0.05 out=aero2 id=f1;
 
proc gplot data=aero2;
symbol1 i=join v=plus c=red;
symbol2 i=join v=plus c=blue;
symbol3 i=join v=plus c=green;
plot f2*f1=1 forecast*f1=2 L95*f1=3 U95*f1=3/overlay;
title 'ARIMA(0,2,1)(0,1,1)12 model模式預測與信賴區間';
data aero3;
input x @@;
cards;
0.66 0.6 0.65 0.59
;
 
data aero4;
merge aero2(firstobs=81 keep=forecast) aero3;
xhat= forecast;
drop forecast;
me=x-xhat;
mpe=(x-xhat)/x*100;
mse=(x-xhat)**2;
mae=abs(x-xhat);
mape=abs((x-xhat)/x)*100;
 
proc print data=aero4;
 
proc means data=aero4;
var me mpe mse mae mape;
 
proc arima data=aero;
identify var=f2(1,12) nlag=24;
estimate p=(1  6) q=(4 5)(12) plot method=CLS;
forecast lead=4 alpha=0.05 out=aero5 id=f1;
 
proc gplot data=aero5;
symbol1 i=join v=plus c=red;
symbol2 i=join v=plus c=blue;
symbol3 i=join v=plus c=green;
plot f2*f1=1 forecast*f1=2 L95*f1=3 U95*f1=3/overlay;
title 'ARIMA(6,2,5)(0,1,1)12 model模式預測與信賴區間';
 
data aero7;
merge aero5(firstobs=81 keep=forecast) aero3;
xhat= forecast;
drop forecast;
me=x-xhat;
mpe=(x-xhat)/x*100;
mse=(x-xhat)**2;
mae=abs(x-xhat);
mape=abs((x-xhat)/x)*100;
 
proc print data=aero7;
 
proc means data=aero7;
var me mpe mse mae mape;
run;