SARIMA模型时间序列数据分析(附python代码)

一、主要内容

根据SARIMA 实验的基本流程,对强生每股季度利润进行建模预测。

1 )进行数据可视化操作。

2 )进行季节性分析和平稳性分析。

3 )如有必要,进行平稳化操作,并且检查是否为白噪音。

4 )画出ACF 、PACF 图像,利用阶数搜索确定合理的阶数。

5 )选择三个模型(SARIMA 、ARIMA 、Xgboost )分析误差,预测未来。

二、python编程实现

1 )数据读取与预处理

SARIMA模型时间序列数据分析(附python代码)

读取原始数据,设置时间为行索引,选择其中的”value “列作为实验对象。

2 )数据可视化

SARIMA模型时间序列数据分析(附python代码)

绘制强生每股季度利润图,观察序列平稳性、趋势性和周期性。

3)平稳性检验

SARIMA模型时间序列数据分析(附python代码)

SARIMA模型时间序列数据分析(附python代码)

SARIMA模型时间序列数据分析(附python代码)

使用STL 方法将原始数据分解为趋势项、季节项和随机项;定义stationary_plot 函数,用以在一张图上绘制原始序列、均值序列、标准差序列;定义test_stationarity 函数,对序列进行ADF 检验,检验其平稳性。

4 )序列平稳化

SARIMA模型时间序列数据分析(附python代码)

SARIMA模型时间序列数据分析(附python代码)

对原始序列进行1 阶4 步差分,对差分得到的序列进行ADF 检验,若平稳,就使用定义的test_white_nosie 函数检验差分序列是否为白噪声序列。

5)建立模型

SARIMA模型时间序列数据分析(附python代码)

经过模型定阶,建立以下三个模型:model1 为SARIMA 模型,是本实验的主要模型,model2 为不考虑季节性的ARIMA 模型,model3 为Xgboost 模型,其中model2 和model3 为对比模型。

6 )模型预测

SARIMA模型时间序列数据分析(附python代码)

使用建立的模型对原始序列进行预测。

SARIMA模型时间序列数据分析(附python代码)

定义func_plot 函数用来绘制model1 和model2 的预测图像。

三、结果分析

1 )数据可视化结果

绘制原始数据折线图,观察到序列不平稳,具有明显的上升趋势和周期为4 的季节性。

SARIMA模型时间序列数据分析(附python代码)

原始序列数据可视化结果

2 )平稳性检验结果

SARIMA模型时间序列数据分析(附python代码)

原始序列分解图

对原始序列进行分解,得到趋势项、季节项和随机项.

SARIMA模型时间序列数据分析(附python代码)

原始序列及均值方差图

SARIMA模型时间序列数据分析(附python代码)

原始序列均值ACF 与PACF 图

从ACF 图和PACF 图可以看出,原始序列均值存在明显的自相关性,经过ADF 检验,得到概率p 值为1.0 ,认为序列不平稳。

3 )差分平稳与白噪声检验结果

经过对原始序列进行1 阶4 步差分,新序列经过ADF 检验得到概率p 值为1.08 ×10-8 ,认为差分序列满足平稳性要求,后经过LB 检验认为差分序列为非白噪声序列,可以进行后续分析。

4 )模型定阶结果

SARIMA模型时间序列数据分析(附python代码)

原始序列ACF 与PACF 图

首先绘制ACF 和PACF 图,可以看出,原始序列存在明显的拖尾现象,并可以看到季节性;然后进行网格搜索定阶,得到对应AIC 值最小的模型为ARIMA(0,0,0)×(1,0,0,4)。

5 )模型检验结果(SARIMA 模型、ARIMA 模型与Xgboost 模型)

SARIMA模型时间序列数据分析(附python代码)

SARIMA 模型检验结果图

SARIMA模型时间序列数据分析(附python代码)

ARIMA 模型检验结果图

SARIMA模型时间序列数据分析(附python代码)

Xgboost 模型残差序列图

由模型检验结果图可以看出,三个模型的残差序列在后期都有较大的波动,其中Xgboost 模型在前期季节性不明显时的表现效果较好。

6 )预测结果

SARIMA模型时间序列数据分析(附python代码)

SARIMA 模型(左)与ARIMA 模型(右)预测结果图

SARIMA模型时间序列数据分析(附python代码)

Xgboost 模型预测结果图

SARIMA 模型特点:

优点:模型简单,易于解释;可以通过差分处理非平稳时间序列,通过季节分解处理包含季节性的序列。

缺点:只适用于短期预测,长期预测准确度较低。

完整python代码如下:

SARIMA模型时间序列数据分析python代码-数据挖掘文档类资源-CSDN下载使用SARIMA模型进行时间序列数据分析编程语言:python代码编辑器:jupyternot更多下载资源、学习资料请访问CSDN下载频道.SARIMA模型时间序列数据分析(附python代码)https://download.csdn.net/download/m0_48973594/85933141 ;

Original: https://blog.csdn.net/m0_48973594/article/details/125646310
Author: 爱雅汇
Title: SARIMA模型时间序列数据分析(附python代码)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/692675/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球