ARMA模型建模流程

Python ARMA模型预测 arma模型预测步骤_机器学习

建模流程

1)平稳性检验

Python ARMA模型预测 arma模型预测步骤_数据挖掘_02

原始数据data经过清洗得到data_new,然后进行平稳性检验,非平稳数据无法采用ARMA模型进行预测,ADF检验可以用来确定数据的平稳性,这里导入的是statsmodels包下的adfuller函数。

2)白噪声检验

Python ARMA模型预测 arma模型预测步骤_数据_03

白噪声数据没有分析价值,所以要进行白噪声检验,LB检验可以确定数据是否为白噪声,这里导入的是statsmodels包下的acorr_ljungbox函数。

3)ACF、PACF图绘制

Python ARMA模型预测 arma模型预测步骤_python_04

自相关函数与偏自相关函数图可以用来进行模型的识别,这里我们直接使用statsmodels包下的plot_acf和plot_pacf函数绘制ACF和PACF图。

4)模型定阶

Python ARMA模型预测 arma模型预测步骤_数据挖掘_05

使用AIC准则进行模型参数估计,从statsmodels包导入ARIMA(p,0,q),即ARMA(p,q),通过循环遍历找出使得AIC值最小的模型参数。

5)模型检验

Python ARMA模型预测 arma模型预测步骤_数据_06

在使用ARMA模型进行预测后,通过计算真实值与预测值之间的差值得到残差序列,并使用LB检验确定残差序列是否为白噪声,若是白噪声,则模型性能较好,反之则差。

结果分析

1)平稳性检验结果

Python ARMA模型预测 arma模型预测步骤_数据挖掘_07

discoveries数据集可视化结果

绘制时间序列数据图像,观其大致平稳,进行ADF检验,得到概率p值为0.007,小于0.05,认为序列平稳。

2)白噪声检验结果

LB检验的概率p值为0.0054,认为该时间序列为非白噪声序列,可以进行后续分析。

3)ACF、PACF图

Python ARMA模型预测 arma模型预测步骤_数据挖掘_08

ACF图(左)与PACF图(右)

可以看出,ACF和PACF图均呈现出明显的拖尾特点,且有一定的周期性,所以需要选取ARMA模型。

4)模型定阶结果

根据AIC准则,选取使得AIC值最小的参数,p=4,q=4,即模型ARMA(4,4)。

5)预测结果

未来10个时间点的预测结果为:

[3.07701677,1.67355553,2.30909501,1.9248518 ,3.02228534,2.60590081,2.81233033,2.3156652 ,2.8091806,2.79388168]

Python ARMA模型预测 arma模型预测步骤_python_09

模型拟合与预测结果图

6)模型检验结果

Python ARMA模型预测 arma模型预测步骤_机器学习_10

残差图

从残差图可以看出,残差序列平稳,进行白噪声检验,得到LB检验的概率p值为0.277,认为残差序列为白噪声序列,模型性能较好。

ARMA模型特点:

优点:模型简单,易于解释。

缺点:只能处理平稳时间序列,而现实生活中的数据以非平稳时间序列为主;只适用于短期预测。