第65步 时间序列建模实战:ARIMA建模(Eviews)

基于WIN10的64位系统演示

一、写在前面

从这一期开始,我们开始入坑时间序列模型。

时间序列是一种数据类型,其中的数据点是按照时间顺序排列的。这种数据类型常常出现在各个领域,比如金融(股票价格的历史变动)、气象(过去几年的天气状况)、医学(一个病人的体温变化)、公共卫生(传染病疫情的走势)等等。

时间序列模型则是一个统计模型,它用于分析和预测时间序列数据。时间序列模型的目标通常是提取时间序列数据中的模式或趋势,比如季节性变化(比如零售业在节假日期间的销售额提高)、趋势(比如城市人口的增长)或周期性(比如每日的温度变化)等等。

时间序列模型其实解决的是回归问题,因此,只要能做回归的算法,理论上可以做时间序列的建模。比如,线性回归、ARIMA、SVM、RF、XGboost还有一些深度学习算法等。

首先,我们以最经典的SARIMA模型开始介绍:

SARIMA模型是季节性自回归积分移动平均模型(Seasonal Autoregressive Integrated Moving Average Model)的缩写,是用于预测季节性时间序列数据的一种模型。SARIMA模型在ARIMA模型的基础上增加了季节性的部分,可以更好地捕捉和描述时间序列数据中的季节性模式。

SARIMA模型的主要组成部分包括:

(1)自回归模型(AR):自回归部分假设当前的观察值是其过去的观察值的线性组合。这个部分与ARIMA模型中的AR部分相同。

(2)差分运算(I):差分运算可以帮助我们将非平稳时间序列转化为平稳时间序列。这个部分与ARIMA模型中的I部分相同。

(3)移动平均模型(MA):移动平均部分假设当前的观察值是其过去的误差项的线性组合。这个部分与ARIMA模型中的MA部分相同。

(4)季节性部分(S):季节性部分考虑了观察值在一年中不同季节的变化。例如,我们可能会假设冰淇淋的销售额在夏季比冬季高。

SARIMA模型有七个重要的参数:非季节性部分的自回归项的数量(p)、非季节性部分的差分的次数(d)、非季节性部分的移动平均项的数量(q)以及季节性部分的自回归项的数量(P)、季节性部分的差分的次数(D)、季节性部分的移动平均项的数量(Q)和季节长度(s)。

SARIMA模型在许多涉及季节性数据的领域都有应用,比如零售、旅游、农业等等。在这些领域,通过考虑数据的季节性变化,SARIMA模型通常可以提供比ARIMA模型更准确的预测。

很多软件都可以实现SARIMA模型的构建,包括Eviews、SPSS、R、Python、Matlab、Stata、SAS等。让我们慢慢学习体会。

二、Eviews建立SARIMA实战

原始数据为某省2005年1月至2016年12月AIDS死亡率的时间序列数据。

(1)双击Eviews6.0打开软件,如果遇到此窗口,点击“I will register later”即可进入软件界面;

(2)建立新的工作窗口(Workfile),点击文件(File)—新的(New)—工作窗口(Workfile);

(3)由于我们的是月发病率的数据,因此“Data specification”下的“Frequency”则选择“Monthly”,而我们的数据是从2004年1月至2016年12月,因此“Start Data”填写“2005:01”,同理“End Data”填写“2016:12”,其他选项默认,点击OK即可;

(4)建立新的对象(Object),用于数据的输入。点击Object(对象)—New Object(新的对象)继而打开New Object(新的对象)窗口;“Type of object(对象类型)”选择“series(序列)”,“Name of object(对象的名字)”则可以随意命名,这里将其命名为x,点击OK即可。

5、1)在工作窗口会发现多了一个名为x的Object(对象),双击打开;

2)开始输入数据,首先要点击“Edit+/-(是否启动编辑)”以切换成可编辑状态;

3)对着第一个空格点击右键—Paste(粘贴)将数据输入;

(6)1)作图观察数据的时间趋势和季节性,点击View(视图)—图表(Graph)打开“Graph Options(图标选项)”窗口,无需设置直接点击确定即可;

2)由图可知,该序列总体呈缓慢上升趋势,并且有明显的季节性。

(7)1)做自相关图和偏相关图,点击View(视图)—Correlogram(相关图),打开“Correlogram Specification(显示对话框)”,“Correlogram of”下的“Level”表示不进行一般拆分,“1st difference”表示进行一次一般拆分,“2st difference”表示进行二次一般拆分;先选择“Level”,其他选项默认,点击OK。

2)由图可知,在自相关图中,在12、24对应的柱子均高于虚线水平,由此可判断该序列具有季节性(周期为12个月)。另外,上一步作图可知该序列总体呈上升趋势,因此该序列为不平稳序列,应该进行拆分运算。

(8)1)拆分运算,分为一般拆分和季节拆分,进行一次一般拆分,则d = 1,进行一次季节拆分,则D = 1。首先进行一次一般拆分,写入代码:series x1 = x -x(-1),也就是生成一个名为x1的序列,点击回车即可在工作窗口内看到新建立的名为x1的对象;

2)双击x1打开x1序列,并对其进行作图操作,由图可知,该序列上升趋势已经消除;

3)再对x1序列进行自相关和偏相关图的操作,如下图,在自相关图中,在12、24对应的柱子依旧高于虚线水平,因此需要进行一次季节性拆分来消除季节性。

4)写入代码:series x2 = x1 –x1(-12),也就是生成一个名为x2的序列(在x1序列上进行操作,周期为12时写为“x1(-12)”),回车即可在工作窗口生成名为“x2”的对象;

5)双击x2打开x2序列,并对其进行作图操作,如下图;

6)对x2序列进行自相关和偏相关图的操作,如下图,在自相关图中,在12、24对应的柱子依旧高于虚线水平,因此可尝试再进行一次季节性拆分来消除季节性。(注意:如果再进行一次季节拆分效果依旧不明显,则进行一次季节拆分即可,即D = 1,因为每进行一次季节拆分原始数据会损失12个);

7)尝试再进行一次季节拆分,写入代码:series x3 = x2 - x2(-12),生成新的对象x3,对其做自相关和偏相关图,如图可知,在自相关图中,在12、24对应的柱子变得更高了,因此只进行一次季节性拆分即可(D = 1);

(9)1)构建ARIMA模型,这里我们采用逐个参数尝试的方法,根据一般经验来看,疾病发病率ARIMA模型的p、q、P和Q选取的范围为0、1和2即可,因此需要尝试81(3×3×3×3=81)个ARIMA模型,再根据AIC和SBC准则以及参数是否通过假设检验来选出最佳的模型。

2)构建ARIMA模型的代码语法:

例如:ARIMA(2,1,2)(2,1,2)12构建的代码为:

d(log(x),1,12) ar(1) ar(2) ma(1) ma(2) sar(12) sar(24) sma(12) sma(24)

其中,

log(x)为对序列x进行log转换;

d(log(x),1,12)为对序列log(x)进行一次一般拆分和一次季节拆分;

当p = 2时,则ar(1) ar(2),同理p = 1时为ar(1),p = 3时为ar(1) ar(2) ar(3),p = 0时则不用写;

当q = 2时,则ma(1) ma(2),同理p = 1时为ma(1),p = 3时为ma(1) ma(2) ma(3),q = 0时则不用写;

当P = 2时,则sar(12) sar (24),同理P = 1时为sar (12),P = 3时为sar (12) sar (24) sar (36),P = 0时则不用写;

当Q = 2时,则sma(12) sma (24),同理Q = 1时为sma (12),Q = 3时为sma (12) sma (24) sma (36),Q = 0时则不用写;

在举几个例子:

ARIMA(0,1,1)(0,1,0)12构建的代码为:

d(log(x),1,12) ma(1)

ARIMA(1,1,0)(1,1,0)12构建的代码为

d(log(x),1,12) ar(1) sar(12)

ARIMA(1,1,0)(0,1,2)12构建的代码为

d(log(x),1,12) ar(1) sma(12) sma(24)

3)如下图,构建81个ARIMA模型寻找最佳模型,即AIC和SBC值最小,R2最高;

4)这里介绍如何用软件构建ARIMA(1,1,0)(0,1,2)12,点击Eviews主界面的工具栏中的“Quick(快捷)”—“Estimate Equation(构建等式)”打开“Equation Estimation(等式构建窗口)”,输入代码:d(log(x),1,12) ar(1) sma(12) sma(24),“Sample(样本)”输入“2004M01 2015M12”,也就是用2004年1月至2015年12月的月发病率来构建样本,之后用最佳模型预测2016年12个月的月发病率,其他选项默认,点击确定即可;

5)返回结果界面,首先看参数的假设检验,如果一个参数的p值大于0.05,则应该剔除该模型,下面的参数则不用考虑,直接进入下一个模型的构建;例如ARIMA(1,1,0)(0,1,2)12模型的参数都通过假设检验, R方等于0.482608,AIC值等于1.140204,SBC值等于1.210645;点击“Estimate(构建)”继续下一个模型的构建。

6)构建下一个模型,输入代码d(log(x),1,12) ar(1) ar(2) ma(1) sar(12) sar(24) sma(12) sma(24)构建ARIMA(2,1,1)(2,1,2)12模型,结果如下,3个参数均没有通过假设检验,因此该模型作废,进入下一个模型的构建。

7)重复上面的步骤构建模型,选出最优模型。下面是选出的最优模型:ARIMA(1,1,1)(2,1,1)12模型,其参数如下:

(10)1)运用最优模型进行拟合,点击“Forecast(预测)”打开“Forecast(预测)”窗口,选择“Static forecast(静态预测)”,“Forecast sample(预测样本)”输入“2005m01 2015m12”,即用模型拟合2005年1月至2015年12月的月发病率,其他选项默认,点击OK即可;

2)返回结果如下图,其中预测的具体结果保存在名为xf的对象中;

3)双击对象xf,可见预测的具体数值,如下图,可以看到损失了2005年1月到2008年2月一共38个月(3年加2个月)的数据,这是因为:a)进行了一次一般拆分和季节拆分,一次一般拆分损失1个数据,而一次季节拆分损失12个数值;b)模型参数中p = 1且P = 2,p = 1则损失1个数值,而P = 2则损失2× 12 = 24个数值。

(11)1)运用模型进行预测,同样点击“Forecast(预测)”打开“Forecast(预测)”窗口,选择“Dynamic forecast(动态预测)”,“Forecast sample(预测样本)”输入“2016m01 2016m12”,即用模型拟合2016年1月至2016年12月的月发病率,其他选项默认,点击OK即可;

2)返回结果如下图,其中预测的具体结果保存在也名为xf的对象中;

(12)1)评估模型的拟合和预测性能,计算mean square error (MSE)(均方差), mean absolute error (MAE)(平均绝对误差) 和mean absolute percentage error (MAPE)(平均相对误差)公式如下:

其中,Xt为实际值,Xt^为预测值,n为总数。

2)计算以上误差可以在excel中实现,最后的结果如下:

拟合误差

预测误差

MAE

MAPE

MSE

MAE

MAPE

MSE

ARIMA

0.0688

0.1890

0.0125

0.0373

0.0721

0.0024

一般认为,MAPE小于0.1则预测效果优秀。

三、关于Eviews

EViews(经济观察图形界面软件)是一款非常强大的统计分析软件,它广泛应用于社会科学、经济学、统计学等领域的数据分析和预测。EViews提供了用户友好的图形用户界面和命令行界面,使得构建SARIMA模型变得相对容易。重要的是,EViews提供了全面的统计检验,可以用来检验SARIMA模型的适用性和预测效果,例如单位根检验(SPSS就没有)、白噪声检验、残差诊断等。

四、数据

链接:https://pan.baidu.com/s/1WKNmpFA4ySE09tTSN8uvrw?pwd=wfyt

提取码:wfyt

  • 24
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jet4505

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值