• 1. 时间序列数据的预处理:平稳性检验、纯随机性检验
• 2. 平稳时间序列数据分析
• 3. 非平稳时间序列数据分析
一. 时间序列数据的预处理
(1) 平稳性检验
程序:
data a;input x @@;
time=_n_;
cards;
17.4 20 17.9 14.1 12.9 13.6 14.9
18.2 16.8 16.9 17.6 18.9 19.3 17.7
15.6 15 16.8 18.5 19.5 19 17.5
14.5 14.3 16.2 16.5 16 17.5 19.6
20 19.3 17 15.4 15.4 16.9 18.2
17.7 17 16.8 15.2 14.5 16 17.1
;
procgplot;
plot x*time;
symbolv=diamondi=joinc=blue;
procarimadata=a;
identifyvar=x;
run;
程序运行结果显示为:
1. 时序图 2.自相关系数图
结合时序图(在一条平行于x轴的线上起伏变化)和自相关系数图(在7阶以内收敛于0,两倍标准误差)
稳定时间序列:
(2)纯随机性检验(白噪声检验)
原假设为白噪声序列,需拒绝原假设,则所有p值<0.05,则满足随机性。
(3)模型识别
将对应语句修改为:identify var=factory nlag=18 minic p=(0:5) q=(0:5);
运行结果显示最小信息值及其对应模型为RA()或MA()。
(4)模型拟合
estimate p=a q=b method=ml;(a,b为对应p,q值。必要时需采用疏系数,如:p=(2,4,5))
(5)预测并作出拟合图
forecast id=time lead=5 out=results;/*lead预测期数,id指定身份变量,out预测结果存入某数据集*/
proc gplot data=results;
plot factory*time=1 forecast*time=2 l95*time=3u95*time=3/overlay;
symbol1 v=star i=join c=black;
symbol2 v=none i=join c=red;
symbol3 v=none i=join c=green;
run;
非稳定时间序列
一. 差分运算
data a;input x@@;
dif1=dif(x);
time=_n_;
cards;
1.05 -0.84 -1.42 0.2 2.81 6.72 5.4 4.38
5.52 4.46 2.89 -0.43 -4.86 -8.54 -11.54 -16.22
-19.41 -21.61 -22.51 -23.51 -24.49 -25.54 -24.06 -23.44
-23.41 -24.17 -21.58 -19 -14.14 -12.69 -9.48 -10.29
-9.88 -8.33 -4.67 -2.97 -2.91 -1.86 -1.91 -0.8
;
procgplot;plot x*time dif1*time;symbolc=blacki=joinv=star;
procarima;
identifyvar=x(1)nlag=22minicp=(0:5)q=(0:5);
estimatep=1 noint method=ml;
forecastlead=3id=timeout=out;/*forecastΪԤ²â¹Ø¼ü´Ê£¬leadΪԤ²â½×Êý*/
procgplotdata=out; plot x*time=1 forecast*time=2 l95*time=3 u95*time=3/overlay;
symbol1c=blacki=nonev=star; symbol2c=redi=joinv=none;symbol3c=bluei=joinv=none;
run;
二.简单季节模型和乘积季节模型
一阶差分12步+乘积季节模型
data a;input x@@;
dif1_12=dif12(dif(x));
time=intnx('quarter','1jan1948'd,_n_-1);
format time year4.;
cards;
/*数据省略*/
;
proc gplot; plot x*time dif1_12*time; symbol c=blacki=join v=star;
proc arima; identify var=x(1,12);
estimate p=1 q=(1)(12) noint;
forecast lead=0 id=time out=out;
proc gplot data=out;
plot x*time=1 forecast*time=2 /overlay;
symbol1 c=blacki=none v=star; symbol2 c=redi=join v=none;
run;