【统计模型】基于SARIMA和ARIMA统计预测模型研究(Python代码实现)

本文介绍了ARIMA模型和SARIMA模型在时间序列分析中的使用。首先,详细阐述了ARIMA模型的构建步骤,包括平稳性检验、差分、参数选择和模型有效性验证。接着,讨论了SARIMA模型,它考虑了季节性因素,适合处理具有季节性的序列。文章通过Python代码展示了模型的实现过程,并给出了预测结果的可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

👨‍🎓个人主页:研学社的博客    

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

1.1 ARIMA模型

1.2 SARIMA

📚2 运行结果

2.1 ARIMA模型

2.2 SARIMA

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

1.1 ARIMA模型

ARIMA模型,也称为求和自回归移动平均自模型,实际上根检验。ADF检验是判断时间序列是否存在单位根:如果不存是差分运算与ARMA模型的结合。ARIMA(p,d,q)模型记为:

 

获得观察值时间序列后,通过以下步骤完成ARIMA建模分析过程:
(1)对时间序列数据进行平稳性检验。如果该序列不平稳,转步骤(2);若该序列平稳,再进行白噪声检验,若为序表1 原序列及一阶差分序列ADF检验列检验为白噪声,模型终止;若不是白噪声,转步骤(3)。

 可以看出,一阶差分后序列的p值为1.23e-29,远小于0.05,因此认为一阶差分后的序列平稳。也可以通过绘制折线图,观察时间序列的平稳性,如图1所示,原序列的时序图呈现下降趋势,从最高点320下降到190左右,显然原序列不平稳;一阶差分后的时序图围绕一个常数值上下波动,且波动范围不大,认为一阶差分后的序列是平稳的。

(2)当时间序列处于不平稳时,可通过d阶差分使非平稳
(3)求解观测序列的样本自相关系数(ACF)和偏自相关势,从最高点320下降到190左右,显然原序列不平稳;一阶差系数(PACF)的值。分后的时序图围绕一个常数值上下波动,且波动范围不大,认
(4)根据样本自相关系数和偏自相关系数表现出来的截尾为一阶差分后的序列是平稳的。性和拖尾性质,确定p和q的值,对ARIMA(p,d,q)模型进行拟合。
(5)估计模型中的未知参数的值。
(6)通过残差序列白噪声检验,说明模型的有效性。如果拟合模型不通过检验,转向步骤(4),调整p和q的值,重新拟合模型。
(7)利用拟合模型ARIMA(p,d,q),预测该时间序列未来几期的数值。

1.2 SARIMA

季度性差分自回归滑动均衡模型( SARIMA 模型)是差分自回归移动平均模型(ARIMA 模型)的改良模型,将非平滑时间序列转换为平滑周期序列,同时将因变换为仅通过对其落后值和随机误差项的现值和落后值加以返回 [10] 。因为该模式不仅可以对非规则的非平滑的时间序列数据加以分
析,并且把时间序列数据中常见的季节特性也作为考虑,所以适用于中等甚至更多长度的时间序列数据模型 [11] 。记为原始周期序列的 yt ,其 SARIMA 模型的实质上是先对 yt 进行逐期差分,先去掉周期序列的趋势性,而后实行季度差分,再去掉季度性。后经以上所述处理过程,所形成的模型就可以表示为:

 

📚2 运行结果

2.1 ARIMA模型

# 显示原数据
plt.figure(figsize=(15, 8))
plt.title('AQI')
plt.xlabel('time')
plt.ylabel('AQI')
plt.plot(df, 'blue', label='AQI')
plt.legend()
plt.show()

##自相关和偏自相关
tsplot(ts_data, lags=20)

train_data, test_data = df[0:int(len(df)*0.8)], df[int(len(df)*0.8):]
#画出训练集和测试集的原数据(open 价格)
plt.figure(dpi=100, figsize=(40,12))
plt.title('Air Quality Index of Nanning City', size=40)
plt.xlabel('time/day',size=30)
plt.ylabel('AQI',size=30)
plt.plot(train_data, 'b', label='Training Data',linewidth=3)
plt.plot(test_data, 'g', label='Testing Data',linewidth=3)
font = {'serif': 'Times New Roman','size': 30}
plt.rc('font', **font)
plt.legend()
plt.show()

#显示预测结果和原数据
plt.figure(figsize=(10,5))
plt.plot(df, 'green', color='blue', label='Training Data')
plt.plot(test_data.index, predictions, color='green', marker='o', linestyle='dashed', label='Predicted Price')
plt.plot(test_data.index, test_data, color='red', label='Actual Price')
plt.title('AQI')
plt.xlabel('time')
plt.ylabel('AQI')
plt.legend()
plt.show()

 

 

#只显示预测部分,不显示训练数据部分
plt.figure(figsize=(12,7))
plt.plot(test_data.index, predictions, color='green', marker='o', linestyle='dashed',label='Predicted Price')
plt.plot(test_data.index, test_data, color='red', label='Actual Price')
plt.title('营业收入')
plt.xlabel('time')
plt.ylabel('AQI')
plt.legend()
plt.show()

2.2 SARIMA

# 显示原数据
plt.figure(figsize=(15, 8))
plt.title('风速')
plt.xlabel('时间')
plt.ylabel('最大风速')
plt.plot(df, 'b', label='AQI')
plt.legend()
plt.show()

##自相关和偏自相关
tsplot(ts_data, lags=20)

train_data, test_data = df[0:int(len(df)*0.8)], df[int(len(df)*0.8):]
#画出训练集和测试集的原数据(open 价格)
plt.figure(dpi=100, figsize=(40,12))
plt.title('Air Quality Index of Nanning City', size=40)
plt.xlabel('time/day',size=30)
plt.ylabel('AQI',size=30)
plt.plot(train_data, 'b', label='Training Data',linewidth=3)
plt.plot(test_data, 'g', label='Testing Data',linewidth=3)
font = {'serif': 'Times New Roman','size': 30}
plt.rc('font', **font)
plt.legend()
plt.show()

#只显示预测部分,不显示训练数据部分
plt.figure(figsize=(12,7))
plt.plot(test_data.index, predictions, color='b', marker='o', linestyle='dashed',label='Predicted')
plt.plot(test_data.index, test_data, color='red', label='Actual')
plt.title('SARIMA')
plt.xlabel('time')
plt.ylabel('AQI')
plt.legend()
plt.show()

 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]王沛智,梅栴,高巍.基于SARIMA模型的黄金价格预测[J].电子技术与软件工程,2022(23):233-237.

[2]黄梦婷.基于ARIMA模型的股票价格预测实证研究[J].内江科技,2023,44(03):61-62.

🌈4 Python代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值