当前位置:文档之家› ARIMA预测原理以及SAS实现代码

ARIMA预测原理以及SAS实现代码

█ARIMA定义ARIMA的完整写法为ARIMA(p,d,q)►其中p为自回归系数,代表数据呈现周期性波动►d为差分次数,代表数据差分几次才能达到平稳序列►q为移动平均阶数,代表数据为平稳序列,可以用移动平均来处理。

█平稳性检测方法•►方法一:时序图序列始终在一个常数值附近随机波动,且波动范围有界,且没有明显的趋势性或周期性,所以可认为是平稳序列。

下图明显不是一个平稳序列proc gplot data=gdp;plot gdp*year=1 ;symbol c=red i=join v=star;run;•►方法二:自相关图自相关系数会很快衰减向0,所以可认为是平稳序列。

proc arima data= gdp;identify var=gdp stationarity =(adf=3) nlag=12;run;•►ADF单位根检验(精确判断)三个检验中只要有一个Pr<Rho小于0.05即可认定为平稳序列,主要是stationarity=(adf=3) 起作用proc arima data= gdp;identify var=gdp stationarity =(adf=3) nlag=12; run;█白噪声检验Pr>卡方<0.05即可认定为通过白噪声检验。

proc arima data= gdp;identify var=gdp stationarity =(adf=3) nlag=12; run;█非平稳序列转换为平稳序列方法一:将数据取对数。

方法二:对数据取差分dif函数data gdp_log;set gdp;loggdp=log(gdp);cfloggdp=dif(loggdp);run;/**对数数据散点图**/proc gplot;plot loggdp*year=1 ;symbol c=black i=join v=star; run;/* 一阶差分对数数据散点图*/ proc gplot;plot cfloggdp*year=1;symbol c=green v=dot i=join;run;从上图中可以看出,一阶差分后序列已经变成平稳的了,因此,数列需要做一阶差分█转换完毕后再验证下面代码中的(1)就代表1阶差分,adf=3则代表平稳性检验0-3,/* 一阶差分对数数据的自相关图、偏自相关图、纯随机性检验、单位根检验 */ proc arima data=gdp_log;identify var=loggdp(1) stationarity =(adf=3) nlag=12;run;用Q LB统计量作的 2检验结果表明:对数差分后的GDP序列的Q LB统计量的P值为0.0045(<0.05),故序列为非白噪声序列。

单位根检验结果表明:对数差分后的GDP序列有常数均值、无趋势的二阶自回归模型的Tau统计量的P值小于0.0573,故序列基本可以确定为平稳序列,并可初步考虑用ARMA (2,q)模型对它们进行拟合。

█模型定阶/** 定阶 **/proc arima data=gdp_log;identify var=loggdp(1) nlag=6minic p=(0:2) q=(0:4);run;/* minic为一定范围模型定阶——相对最优模型识别 */采用相对最优模型识别,根据上述分析及序列的自相关和偏自相关图,适当选择m = 4,n = 2,使用indentify命令中的minic p = (0: n) q = (0: m)短语进行相对最优模型定阶。

结果显示(图6.10),在p = 1,q = 4时,BIC函数值最小。

执行ARIMA过程的Estimate p = 1 q = 4命令做参数检验,结果未能通过参数检验。

让q在0~3之间取值,通过反复测试,只有ARMA(1, 3)模型与ARMA(1, 0)模型通过参数检验及模型检验,其检验结果及参数估计如图6.11所示。

█参数估计/** 参数估计 **/proc arima data=gdp_log;identify var=loggdp(1);estimate p=1q=4;run;/* SAS支持三种估计,默认为条件最小二乘估计,要制定可增加选项:METHOD=ML 极大似然估计METHOD=ULS 最小二乘估计METHOD=CLS 条件最小二乘估计输出项的含义见王燕 P104*/;从上面可以看出,在p=1q=4时,通不过检验。

p =1 q =3 和p=1 q=0时能通过检验从上面2个模型的检验结果可以看到,它们均为有效模型,但ARMA(1, 0)模型的AIC 为-67,SBC 为-65均比ARMA(1, 3)的AIC 与SBC 小,根据AIC 准则和SBC 准则,ARMA(1, 0)应该更有效,所以应选择前者作为预测模型。

GDP 对数序列模型的口径为:Bx tt 49853.01155955.0log -+=∇ε其中,x t 表示GDP 序列,模型可写为:t t t t x x x ε++-=--078207.0log 49853.0log 49853.1log 21█预测/**参数估计及预测**/proc arima data=gdp_log;identify var=loggdp(1) nlag=16;estimate p=1q=0;forecast lead=4id=year out=results;run;█还原预测数值并画图/**绘制预测图**/data results;set results;y=exp(loggdp);estimate1=exp(forecast);el95=exp(l95);eu95=exp(u95);run;proc gplot data=results;plot y*year=1 estimate1*year=2 el95*year=3 eu95*year=3/overlay; symbol1c=black i=none v=star;symbol2c=red i=join v=none;symbol3c=green i=join v=none l=2;run;█另一种确定p、q的方式proc arima data= gdp;identify var=gdp stationarity =(adf=3) ;run;直接对gdp求arima模型,可已看出acf是拖尾,而pacf是1阶截尾,所以最好是p=1,q=0█确定p 、q 的方式理论由于),(q p ARMA 模型可以转化为无穷阶移动平均模型,所以),(q p ARMA 模型的自相关系数不截尾。

同理,由于),(q p ARMA 模型也可以转化为无穷阶自回归模型,所以),(q p ARMA 模型的偏自相关系数也不截尾。

总结)(p AR 模型、)(q MA 模型和),(q p ARMA█模型优化指标当一个拟合模型在指定的置信水平α下通过了检验,说明了在这个置信水平α下该拟合模型能有效地拟合时间序列观察值的波动。

但是这种有效的拟合模型并不是惟一的。

如果同一个时间序列可以构造两个拟合模型,且两个模型都显著有效,那么应该选择哪个拟合模型用于统计推断呢?通常采用AIC 和SBC 信息准则来进行模型优化。

1. AIC 准则AIC 准则是由日本统计学家赤池弘次(Akaike )于1973年提出,AIC 全称是最小信息量准则(an information criterion )。

AIC 准则是一种考评综合最优配置的指标,它是拟合精度和参数未知个数的加权函数:AIC =-2ln(模型中极大似然函数值)+2(模型中未知参数个数) (6.68) 使AIC 函数达到最小值的模型被认为是最优模型。

2. BIC 准则AIC 准则也有不足之处:如果时间序列很长,相关信息就越分散,需要多自变量复杂拟合模型才能使拟合精度比较高。

在AIC 准则中拟合误差等于)ˆln(2εσn ,即拟合误差随样本容量n放大。

但是模型参数个数的惩罚因子却与n 无关,权重始终为常数2。

因此在样本容量n 趋于无穷大时,由AIC 准则选择的拟合模型不收敛于真实模型,它通常比真实模型所含的未知参数个数要多。

为了弥补AIC 准则的不足,Akaike 于1976年提出BIC 准则。

而Schwartz 在1978年根据Bays 理论也得出同样的判别准则,称为SBC 准则。

SBC 准则定义为:SBC =-2ln(模型中极大似然函数值)+ln(n)(模型中未知参数个数) (6.69) 它对AIC 的改进就是将未知参数个数的惩罚权重由常数2变成了样本容量n 的对数)ln(n 。

在所有通过检验的模型中使得AIC 或SBC 函数达到最小的模型为相对最优模型。

之所以称为相对最优模型是因为不可能比较所有模型。

表6.2 河南省历年国民生产总值数据█附:完整代码data gdp;infile datalines;input year gdp pgdp;format gdp BEST12.2 pgdp BEST12.2; datalines;1978 162.92 232.31979 190.09 266.71980 229.16 316.71981 249.69 340.11982 263.30 3531983 327.95 432.91984 370.04 481.61985 451.74 579.71986 502.91 635.31987 609.60 755.81988 749.09 909.91989 850.71 1012.31990 934.65 1090.61991 1045.73 1201.21992 1279.75 1452.31993 1662.76 1867.41994 2224.43 2475.21995 3002.74 3312.81996 3661.18 4007.41997 4079.26 4430.11998 4356.60 4695.11999 4576.10 4893.72000 5137.66 54442001 5640.11 5923.62002 6168.73 6436.52003 7048.59 7570.22004 8815.09 9469.9;run;/** 原始数据散点图 **/proc gplot data=gdp;plot gdp*year=1 ;symbol c=red i=join v=star;run;/*注 symbol常用参数C—图形颜色,red_红色,black_黑色,green_绿色,blue_蓝色,pink_洋红等 */ /* V—观测值的图形,star_*, dot_., cicle_圆圈,diamond_菱形,none_不标 */ /* I—观察值的链接方式,join_线连,spline_光滑连接,needle_作观察值到横轴悬垂线,none_不连 */proc arima data= gdp;identify var=gdp stationarity =(adf=3) ;run;/** 原始数据对数、差分变换 **/data gdp_log;set gdp;loggdp=log(gdp);cfloggdp=dif(loggdp);run;/**对数数据散点图**/proc gplot;plot loggdp*year=1 ;symbol c=black i=join v=star;run;/* 一阶差分对数数据散点图*/proc gplot;plot cfloggdp*year=1;symbol c=green v=dot i=join;run;/* 一阶差分对数数据的自相关图、偏自相关图、纯随机性检验、单位根检验 */proc arima data=gdp_log;identify var=loggdp(1) stationarity =(adf=3) nlag=12;run;/* loggdp(1)这里的数1为差分阶数 *//** 定阶 **/proc arima data=gdp_log;identify var=loggdp(1) nlag=6minic p=(0:2) q=(0:4);run;/* minic为一定范围模型定阶——相对最优模型识别 *//** 参数估计 **/proc arima data=gdp_log;identify var=loggdp(1);estimate p=1q=0OUTEST=b outstat=c;run;/* SAS支持三种估计,默认为条件最小二乘估计,要制定可增加选项:METHOD=ML 极大似然估计METHOD=ULS 最小二乘估计METHOD=CLS 条件最小二乘估计输出项的含义见王燕 P104*/;/**参数估计及预测**/proc arima data=gdp_log;identify var=loggdp(1) nlag=16;estimate p=1q=0;forecast lead=4id=year out=results;run;/**绘制预测图**/data results;set results;y=exp(loggdp);estimate1=exp(forecast);el95=exp(l95);eu95=exp(u95);run;proc gplot data=results;plot y*year=1 estimate1*year=2 el95*year=3 eu95*year=3/overlay; symbol1c=black i=none v=star;symbol2c=red i=join v=none;symbol3c=green i=join v=none l=2;run;。

相关主题