ARMA模型时间序列分析全流程(附python代码)

ARMA模型建模流程

ARMA模型时间序列分析全流程(附python代码)_第1张图片

建模流程

1)平稳性检验

ARMA模型时间序列分析全流程(附python代码)_第2张图片

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

2)白噪声检验

ARMA模型时间序列分析全流程(附python代码)_第3张图片

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

3ACFPACF图绘制

ARMA模型时间序列分析全流程(附python代码)_第4张图片

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

4)模型定阶

ARMA模型时间序列分析全流程(附python代码)_第5张图片

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

5)模型检验

ARMA模型时间序列分析全流程(附python代码)_第6张图片

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

结果分析

1)平稳性检验结果

ARMA模型时间序列分析全流程(附python代码)_第7张图片

discoveries数据集可视化结果

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

2)白噪声检验结果

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

3ACFPACF

ARMA模型时间序列分析全流程(附python代码)_第8张图片

ACF图(左)与PACF图(右)

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

4)模型定阶结果

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

5)预测结果

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

[3.077016771.673555532.309095011.9248518 3.022285342.605900812.812330332.3156652 2.80918062.79388168]

ARMA模型时间序列分析全流程(附python代码)_第9张图片

模型拟合与预测结果图

6)模型检验结果

ARMA模型时间序列分析全流程(附python代码)_第10张图片

残差图

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

ARMA模型特点:

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

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

python代码:https://download.csdn.net/download/m0_48973594/85800097icon-default.png?t=M5H6https://download.csdn.net/download/m0_48973594/85800097 

你可能感兴趣的:(时间序列数据分析,机器学习,数据挖掘,python)