时间序列分析步骤及sas代码

•         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;

你可能感兴趣的:(数学建模)