时间序列分析步骤及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;

  • 19
    点赞
  • 210
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SAS中进行时间序列分析可以使用PROC ARIMA和PROC TIMESERIES两个过程来实现。下面是一个示例代码,用于执行时间序列分析和预测: ``` /* 定义时间序列数据集 */ data timeseries; input date y; format date date9.; datalines; 01JAN2020 10 02JAN2020 15 03JAN2020 12 04JAN2020 18 05JAN2020 20 06JAN2020 22 07JAN2020 25 08JAN2020 30 09JAN2020 28 10JAN2020 35 ; /* 设置时间序列过程的选项 */ proc timeseries data=timeseries; id date interval=day; /* 指定日期变量和观测间隔 */ var y; /* 指定要分析的变量 */ run; /* 运行时间序列过程 */ proc arima data=timeseries; identify var=y(stationary=mean); /* 确定时间序列模型 */ estimate p=1 q=1; /* 估计ARMA模型参数 */ forecast lead=5 out=outfore; /* 预测未来5个观测值 */ run; /* 打印预测结果 */ proc print data=outfore; run; ``` 在这个示例代码中,首先定义了一个名为timeseries的时间序列数据集,其中包含了日期(date)和观测值(y)两个变量。然后使用PROC TIMESERIES过程进行时间序列分析,指定了日期变量和观测间隔。接下来,使用PROC ARIMA过程对时间序列模型进行识别和估计,指定了ARMA模型的阶数(p和q)。最后,使用forecast语句进行未来观测值的预测,并将结果保存在outfore数据集中。最后,使用PROC PRINT过程打印预测结果。 请注意,这只是一个简单的示例代码,实际的时间序列分析可能涉及更多的选项和步骤,具体操作根据你的数据和分析目的而定。希望对你有帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值