一、主要内容
根据SARIMA 实验的基本流程,对强生每股季度利润进行建模预测。
1 )进行数据可视化操作。
2 )进行季节性分析和平稳性分析。
3 )如有必要,进行平稳化操作,并且检查是否为白噪音。
4 )画出ACF 、PACF 图像,利用阶数搜索确定合理的阶数。
5 )选择三个模型(SARIMA 、ARIMA 、Xgboost )分析误差,预测未来。
二、python编程实现
1 )数据读取与预处理
读取原始数据,设置时间为行索引,选择其中的”value “列作为实验对象。
2 )数据可视化
绘制强生每股季度利润图,观察序列平稳性、趋势性和周期性。
3)平稳性检验
使用STL 方法将原始数据分解为趋势项、季节项和随机项;定义stationary_plot 函数,用以在一张图上绘制原始序列、均值序列、标准差序列;定义test_stationarity 函数,对序列进行ADF 检验,检验其平稳性。
4 )序列平稳化
对原始序列进行1 阶4 步差分,对差分得到的序列进行ADF 检验,若平稳,就使用定义的test_white_nosie 函数检验差分序列是否为白噪声序列。
5)建立模型
经过模型定阶,建立以下三个模型:model1 为SARIMA 模型,是本实验的主要模型,model2 为不考虑季节性的ARIMA 模型,model3 为Xgboost 模型,其中model2 和model3 为对比模型。
6 )模型预测
使用建立的模型对原始序列进行预测。
定义func_plot 函数用来绘制model1 和model2 的预测图像。
三、结果分析
1 )数据可视化结果
绘制原始数据折线图,观察到序列不平稳,具有明显的上升趋势和周期为4 的季节性。
原始序列数据可视化结果
2 )平稳性检验结果
原始序列分解图
对原始序列进行分解,得到趋势项、季节项和随机项.
原始序列及均值方差图
原始序列均值ACF 与PACF 图
从ACF 图和PACF 图可以看出,原始序列均值存在明显的自相关性,经过ADF 检验,得到概率p 值为1.0 ,认为序列不平稳。
3 )差分平稳与白噪声检验结果
经过对原始序列进行1 阶4 步差分,新序列经过ADF 检验得到概率p 值为1.08 ×10-8 ,认为差分序列满足平稳性要求,后经过LB 检验认为差分序列为非白噪声序列,可以进行后续分析。
4 )模型定阶结果
原始序列ACF 与PACF 图
首先绘制ACF 和PACF 图,可以看出,原始序列存在明显的拖尾现象,并可以看到季节性;然后进行网格搜索定阶,得到对应AIC 值最小的模型为ARIMA(0,0,0)×(1,0,0,4)。
5 )模型检验结果(SARIMA 模型、ARIMA 模型与Xgboost 模型)
SARIMA 模型检验结果图
ARIMA 模型检验结果图
Xgboost 模型残差序列图
由模型检验结果图可以看出,三个模型的残差序列在后期都有较大的波动,其中Xgboost 模型在前期季节性不明显时的表现效果较好。
6 )预测结果
SARIMA 模型(左)与ARIMA 模型(右)预测结果图
Xgboost 模型预测结果图
SARIMA 模型特点:
优点:模型简单,易于解释;可以通过差分处理非平稳时间序列,通过季节分解处理包含季节性的序列。
缺点:只适用于短期预测,长期预测准确度较低。
完整python代码如下:
Original: https://blog.csdn.net/m0_48973594/article/details/125646310
Author: 爱雅汇
Title: SARIMA模型时间序列数据分析(附python代码)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/692675/
转载文章受原作者版权保护。转载请注明原作者出处!