资源描述
实验指导书(ARIMA模型建模与预测)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
16
个人收集整理 勿做商业用途
实验指导书(ARIMA模型建模与预测)
例:我国1952-2011年的进出口总额数据建模及预测
1、模型识别和定阶
(1)数据录入
打开Eviews软件,选择“File”菜单中的“New-—Workfile"选项,在“Workfile structure type”栏选择“Dated –regular frequency”,在“Date specification”栏中分别选择“Annual”(年数据) ,分别在起始年输入1952,终止年输入2011,文件名输入“im_ex”,点击ok,见下图,这样就建立了一个工作文件。
在workfile中新建序列im_ex,并录入数据(点击File/Import/Read Text—Lotus-Excel…,
找到相应的Excel数据集,打开数据集,出现如下图的窗口,在“Data order”选项中选择“By observation-series in columns”即按照观察值顺序录入,第一个数据是从B15开始的,所以在“Upper-left data cell"中输入B15,本例只有一列数据,在“Names for series or number if named in file”中输入序列的名字im_ex,点击ok,则录入了数据):
(2)时序图判断平稳性
双击序列im_ex,点击view/Graph/line,得到下列对话框:
得到如下该序列的时序图,由图形可以看出该序列呈指数上升趋势,直观来看,显著非平稳。
(3)原始数据的对数处理
因为数据有指数上升趋势,为了减小波动,对其对数化,在Eviews命令框中输入相应的命令“series y=log(im_ex)”就得到对数序列,其时序图见下图,对数化后的序列远没有原始序列波动剧烈:
从图上仍然直观看出序列不平稳,进一步考察序列y的自相关图和偏自相关图:
从自相关系数可以看出,呈周期衰减到零的速度非常缓慢,所以断定y 序列非平稳.为了证实这个结论,进一步对其做ADF检验。双击序列y,点击view/unit root test,出现下图的对话框,
我们对序列y本身进行检验,所以选择“Level”;序列y存在明显的线性趋势,所以选择对带常数项和线性趋势项的模型进行检验,其他采用默认设置,点击ok.
检验结果见下图,可以看出在显著性水平0.05下,接受存在一个单位根的原假设,进一步验证了原序列不平稳。为了找出其非平稳的阶数,需要对其一阶差分序列和二阶差分序列等进行ADF检验。
(4)差分次数d的确定
y序列显著非平稳,现对其一阶差分序列进行ADF检验。在对y的一阶差分序列进行ADF单位根检验之前,需要明确y的一阶差分序列的趋势特征。在Eviews命令框中输入相应的命令“series dy1=D(y)”就得到对数序列的一阶差分序列dy1,其时序图见下图
由y的一阶差分序列的时序图可见,一阶差分序列不具有趋势特征,但具有非零的均值。因此,在下图对序列y的单位根检验的对话框中选择“1st difference”,同时选择带常数项、不带趋势项的模型进行检验,其他采用默认设置,点击ok。
检验结果见下图,可以看出在显著性水平0.05下,拒绝存在单位根的原假设,说明序列y的一阶差分序列是平稳序列,因此d=1.
(5)建立一阶差分序列
在Eviews对话框中输入“series x=y-y(-1)”或“series x=y-y(-1)",并点击“回车”,便得到了经过一阶差分处理后的新序列x,其时序图见下图,从直观上来看,序列x也是平稳的,这就可以对x序列进行ARMA模型分析了.
(6)模型识别和定阶
双击序列x,点击view/Correlogram,出现下图对话框,
我们对原始数据序列做相关图,因此在“Correlogram of"对话框中选择“Level”即表示对原始序列做相关,在滞后阶数中选择12(或8=),点击ok,即出现下列相关图:
从x的自相关函数图和偏自相关函数图中我们可以看到,偏自相关系数是明显截尾的,而自相关系数在滞后6阶和7阶的时候落在2倍标准差的边缘。这使得我们难以采用传统的Box-Jenkins方法(自相关偏自相关函数、残差方差图、F检验、准则函数)确定模型的阶数。对于这种情况,本例通过反复对模型进行估计比较不同模型的变量对应参数的显著性来确定模型阶数。
2、模型的参数估计
在Eviews主菜单点击“Quick”-“Estimate Equation”,会弹出如下图所示的窗口,
在“Equation Specification”空白栏中键入“x C AR(1) AR(2) MA(1) MA(2) MA(3) MA(4) MA(5)”等,在“Estimation Settings”中选择“LS-Least Squares(NLS and ARMA)",然后“OK"。或者在命令窗口直接输入“ls x C AR(1) AR(2) MA(1) MA(2) MA(3) MA(4) MA(5)”等.针对序列x我们尝试几种不同的模型拟合,比如ARMA(1,7),ARMA(1,6),ARMA(2,6)等。各种模型的参数显著性t检验的结果(p值)见下表(不显著为零的参数的p值用红色字体表示)
模型
c
ar(1)
ar(2)
ma(1)
ma(2)
ma(3)
ma(4)
ma(5)
ma(6)
ma(7)
Eq02_07
0。0008
0.8009
0。0486
0.4403
0.0002
0。0941
0。9841
0.9726
0.0066
0.0591
Eq02_07_1
0.0005
0。001
0.0122
0
0。0243
0.8189
0。8571
0.0006
0。0043
Eq02_07_2
0。0004
0.0002
0。0098
0
0。0033
0
0
Eq02_06
0.008
0。0053
0。6332
0.1156
0。004
0.5464
0.3428
0.8636
0.0206
Eq02_05
0
0.28
0。1924
0。9096
0.0016
0。2036
0.4605
0。9062
Eq01_07
0.0112
0。1334
0。9916
0。0219
0.9524
0。5713
0.8233
0.0002
0。2726
Eq01_07_1
0.011
0.0875
0。9865
0.0175
0.5543
0。7809
0。0002
0。2531
Eq01_07_2
0。0102
0。0817
0.9892
0.0192
0。6363
0。0002
0.217
Eq01_07_3
0.0072
0。0946
0.9239
0。0163
0
0.1661
Eq01_07_4
0。0069
0.0022
0.0157
0
0.0227
Eq01_06
0。0489
0
0.0003
0.0017
0。5935
0.3162
0.4555
0。0135
Eq01_06_1
0。0025
0
0.0001
0.0005
0
可见,各种估计模型的参数显著性检验中,只有黄色覆盖的包含部分参数的三个模型ARMA(2,7)、ARMA(1,7)和ARMA(1,6)所有参数都显著,现在来比较上述模型的残差方差和信息准则值
模型
残差方差
AIC
BIC
Eq02_07
0.019842
-0。9241
—0.56567
Eq02_07_1
0。019676
-0.94655
-0。62396
Eq02_07_2
0。018908
—1.01569
-0.76479
Eq02_06
0。019489
-0.95607
—0.63348
Eq02_05
0。020896
—0。90082
—0。61408
Eq01_07
0.021495
—0.86034
-0。54061
Eq01_07_1
0.021066
-0。89478
—0。61058
Eq01_07_2
0。02067
-0。92844
-0。67977
Eq01_07_3
0。020351
—0。95904
-0.74589
Eq01_07_4
0.019969
-0.99342
—0。81579
Eq01_06
0。020143
—0。93957
—0。65537
Eq01_06_1
0.019293
—1。02784
—0。85022
由上表可见,方程Eq02_07_2对应的ARMA(2,7)模型的残差方差最小,其次是方程Eq01_06_1对应的ARMA(1,6)模型的残差方差;而方程Eq01_06_1对应的ARMA(1,6)模型的AIC和BIC信息准则都小于方程Eq02_07_2对应的ARMA(2,7)模型的AIC和BIC信息准则,且在估计的模型中,方程Eq01_06_1对应的ARMA(1,6)模型的AIC和BIC信息准则最小,而且由各个模型系数的t检验统计量的p值可知,在方程Eq01_06_1对应的ARMA(1,6)模型中所有模型的系数都显著不为零.所以,我们这里选择由方程Eq01_06_1对应的ARMA(1,6)模型。该模型的估计结果如下
由结果可见,模型的最小二乘估计结果为
误差项方差的估计值为
并且由模型的系数的t统计量及其p值也可以看到,模型所有解释变量的参数估计值在0。01的显著性水平下都是显著的。
3、模型的适应性检验
参数估计后,应对拟合模型的适应性进行检验,实质是对模型残差序列进行白噪声检验。若残差序列不是白噪声,说明还有一些重要信息没被提取,应重新设定模型。可以对残差进行纯随机性检验,也可用针对残差的检验。
(1) 残差序列的生成
残差序列从1954至2011年采用拟合的ARMA(1,6)模型生成,在方程窗口点击proc/make residual series…,
得到下列对话框
将该方程的残差序列定义为a_eq01_06_1即可,可以得到从1954至2011年采用拟合的ARMA(1,6)模型生成的残差序列。前面的1953则是将前面的初始值都设为0而计算的。程序命令如下
a_eq01_06_1 (2)=x(2)-0.151676-0。785440*0+0.463391*0+0。428391*0-0.454978*0
这样得到的序列a_eq01_06_1即为ARMA(1,6)模型的残差序列,a_eq01_06_1序列的自相关偏自相关图如下:
(偏)相关函数值、以及Q—Stat及其p值显示,残差序列不存在自相关,为白噪声,因此模型是适合的模型.模型拟合图如下
(8)模型预测
我们用拟合的有效模型进行短期预测,比如我们预测2012年、2013年、2014年和2015年的进出口总额.先预测2012年、2013年、2014年和2015年的x,再预测进出口总额。
首先需要扩展样本期,在命令栏输入expand 1952 2015,回车则样本序列长度就变成64了,且最后面4个变量值为空。在方程估计窗口点击Forecast,出现下图对话框,
预测方法常用有两种:Dynamic forecast和Static forecast:
动态预测是根据所选择的一定的估计区间,进行多步向前预测(从预测样本的第一期开始计算多步预测):
每一步都是采用前面的预测值计算新的预测值。而样本范围内(1954—2011)的序列实际值是已知的。因此,动态预测只是适应于样本外(2012—2015)预测,而不适应于样本内(1954—2011)预测。
静态预测是滚动的进行向前一步预测,即每预测一次,用真实值代替预测值,加入到估计区间,再进行向前一步预测(利用滞后因变量的实际值而不是预测值计算一步向前(one-step-ahead)预测的结果):
可见,对于样本外(2012-2015)的预测需要提供样本外预测期间的解释变量值。对静态预测,还必须提供滞后因变量的数值。而对于样本外(2012-2015)的预测通常因变量的实际观测值是未知的,所以,静态预测一般只适应于样本内(19542011)预测,不适应于样本外预测(只可以进行向前一步样本外预测)。并且,由计算公式可见,样本内(1954—2011)的静态预测值与模型的拟合值(估计值)相同。
综上所述,在预测时,样本内(1954-2011)预测选用静态预测或模型的拟合值(估计值),样本外(2012-2015)预测选用动态预测。
具体步骤:
(1)进行样本内(1954-2011)静态预测,在方程估计窗口点击Forecast,出现下图对话框,
预测序列记为xf_static_eq01_06_1,预测方法选择“Static forecast”,预测样本区间为“1952—2015”,点击OK,得到下列预测图
(2)将序列的估计值x_fit_eq01_06_1和这里的静态预测序列xf_static_eq01_06_1以组的形式打开,并将组命名为x_fit_xf_static,组序列图形如下
可见,样本内的静态预测序列值严格落在拟合值序列x_fit的曲线上,说明在样本期内(1954—2011)静态预测值与模型的拟合值(估计值)是相等的。
(3)进行样本外(2012-2015)动态预测,在方程估计窗口点击Forecast,出现下图对话框,
预测序列记为xf_dynamic_eq01_06_1,预测方法选择“Dynamic forecast”,预测样本区间为样本外区间“2012—2015”,点击OK,得到下列预测图
(4)建立新的序列x_fit_f存放序列的静态和动态预测值,在样本内(1954-2011)采用静态预测值或序列的拟合值(估计值),在样本外(2012—2015)采用动态预测值.所以,将序列xf_static_eq01_06_1(或序列x_fit_eq01_06_1)中第1954-2011年的数值复制到序列x_fit_f的对应位置,然后将序列xf_dynamic_eq01_06_1中第2012—2015年的数值复制到序列x_fit_f的对应位置,这样得到的序列x_fit_f就是序列x的预测值。
(5)将序列的实际值x和这里的预测序列x_fit_f以组的形式打开,并将组命名为x_x_fit_f,组序列图形,即x的实际值与预测值图形如下
综合上述分析过程,实际上我们是针对原序列(im_ex):1952年—2011年我国进出口总额数据序列,建立了一个ARIMA(1,1,6)模型进行拟合,模型形式如下:
同样,也可以得到序列y的预测值序列y_fit_f和序列im_ex的预测值序列im_ex_fit_f,命令分别为“series y_fit_f=x_fit_f+x_fit_f(-1)”和“series im_ex_fit_f=exp(y_fit_f)”。然后,将序列y和序列im_ex的实际值y和im_ex与这里的预测序列y_fit_f和im_ex_fit_f以组的形式打开,并将组分别命名为y_y_fit_f和im_ex_im_ex_fit_f,组序列图形,即y和im_ex的实际值与预测值图形如下
由图形可以看出,对非平稳序列y和im_ex的预测效果非常差.因此,非平稳序列的预测具有不稳定性,对非平稳序列的预测意义不大。
作业:
1。我国1952—2011年的社会消费品零售总额,按照平稳时间序列建模的步骤,建立ARMA模型,并对第2012年和2013年的社会消费品零售总额进行预测。
展开阅读全文