摘要:时间序列模型利用历史资料进行延伸预测,也称历史引伸预测法。是以时间序列所能反映的社会经济现象的发展过程和规律性,进行引伸外推,预测其发展趋势的方法。
时间序列建模步骤:
1. 时间序列平稳性检验:如果一个时间序列的概率分布与时间无关,则成为平稳序列。
2. 时间序列平稳化和零均值化:时间序列预测模型是建立在平稳序列的基础上的,由于日常所见的数据序列大多是非平稳序列,故需要转换为平稳序列,转换后需要进行零均值化处理。
3. 自回归模型(AR模型)、移动平均模型(MA模型)和自回归移动平均模型(ARMA模型)阶数识别,确定模型阶数p和q值:
-
- AR模型:某个观测值Xt与其滞后p期的观测值的线性组合再加上随机误差项。即:Xt= φ1Xt-1+φ2Xt-2+……+φpXt-p+at;
- MA模型:某个观测值Xt与先前t-1,t-2,t-q个时刻进入系统的q个随机误差项即at,at-1,……,Xt-q的线性组合。即:Xt=at-θ1at-1-θ2at-2-……-θqXt-q;
- ARMA模型:即观测值不仅与其以前p个时刻的自身观测值有关,而且还与其以前时刻进入系统的q个随机误差存在一定的依存关系。即Xt= φ1Xt-1+φ2Xt-2+……+φpXt-p+at-θ1at-1-θ2at-2-……-θqXt-q。
4. 参数估计:确定p、q值后,运用最大似然、最小二乘法等算法估计模型参数(φi 和θj,i=1,2,…,p;j=1,2,……,q)值。
5. 模型预测:利用显著的模型对时间序列进行预测。
以下就使用sashelp.air这份时间序列数据集进行预测模型的建立。
1. 平稳性识别proc gplot data=sashelp.air;
plot air*date;
symbol c=red i=spline v=dot;
run;
通过趋势图不难发现其存在长期趋势并且随着季节存在周期性的变动。
2. 时间序列平稳化和零均值化观察发现使用一阶差分可得平稳化和零均值化时间序列。
proc arima data=sashelp.air;
identify var=air(1) nlag=30;
run;
白噪声检验原假设:一阶差分值是白噪声。
1阶差分和1阶差分的ACF(自相关系数)、PACF(偏自相关系数)和IACF(逆自相关系数)。
3. 模型识别
通过图像我们可以发现ACF拖尾,PACF12阶截尾,故选择AR模型。
模型参数的确定主要有三种方法:
- ESACF(延伸自相关系数法)
- SCAN(最小典型相关法)
- MINIC(最小信息准则法)
这里以MINIC为例:
proc arima data=sashelp.air;
identify var=air(1) nlag=30 minic p=(0:12) q=(0:12);
/*还可以添加选项minic, esacf, scan*/
run;
4. 参数估计和检验proc arima data=sashelp.air;
identify var=air(1) nlag=30;
estimate p=12 q=0 ML;
/*还可以添加选项method=ML(极大似然)、ULS(非条件最小二乘法)、CLS(最小二乘法)*/
run;
结果:
1 + 0.18266 B**(1) + 0.2696 B**(2) + 0.22644 B**(3) + 0.26291 B**(4) + 0.19729 B**(5) + 0.26238 B**(6) + 0.21259 B**(7) + 0.31246 B**(8) + 0.17541 B**(9) + 0.29835 B**(10) + 0.16218 B**(11) – 0.64715 B**(12)
5. 模型预测proc arima data=sashelp.air plots(only)=forecast(forecast);
identify var=air(1) nlag=30;
estimate p=12 q=0 ML;
forecast lead=10out=out;
run;
参考资料:《深入解析SAS:数据处理、分析优化与商业分析》
来源:SAS建模
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。