十大时间序列模型最强总结(三)季节性自回归积分滑动平均模型(SARIMA)

三、季节性自回归积分滑动平均模型(SARIMA)

1. 原理

SARIMA 模型是 ARIMA 模型的扩展,用于处理具有季节性成分的时间序列。SARIMA 模型引入了季节性成分,通过增加季节性自回归(SAR)、季节性差分(I)和季节性移动平均(SMA)项来建模。

2. 核心公式

在这里插入图片描述

推导

3. 优缺点

  • 1)优点

  • 适用于处理具有明显季节性成分的时间序列。

  • 可以同时建模季节性和非季节性成分。

  • 2)缺点

  • 模型复杂度高,参数较多,调整较为困难。

  • 需要确定季节性周期。

4. 适用场景

SARIMA 模型适用于具有季节性波动的时间序列数据,如月度销售数据、季节性气象数据等。

5. 核心案例代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX

# 生成示例数据:季节性时间序列
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=120, freq='M')
seasonal_component = 10 + 10 * np.sin(np.linspace(0, 3 * np.pi, 120))
data = seasonal_component + np.random.randn(120) * 2  # 叠加噪声

# 创建DataFrame
df = pd.DataFrame(data, index=dates, columns=['Value'])

# 拟合SARIMA模型 (p=1, d=1, q=1, P=1, D=1, Q=1, s=12)
model = SARIMAX(df['Value'], order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
sarima_result = model.fit()

# 预测未来12个月
forecast = sarima_result.get_forecast(steps=12)
forecast_index = pd.date_range(df.index[-1] + pd.DateOffset(months=1), periods=12, freq='M')
forecast_values = forecast.predicted_mean

# 可视化
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['Value'], label='Observed', color='blue')
plt.plot(forecast_index, forecast_values, label='Forecast', color='orange', linestyle='--')
plt.fill_between(forecast_index,
                 forecast.conf_int().iloc[:, 0],
                 forecast.conf_int().iloc[:, 1],
                 color='#FFA07A', alpha=0.3)  # 使用有效的颜色代码
plt.title('SARIMA Model Forecast')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.grid(True)
plt.show()

图中展示了一个具有季节性波动的时间序列数据(蓝色)和未来 12 个月的预测值(橙色虚线)。预测区间的置信区间用浅橙色阴影表示。SARIMA 模型能够有效捕捉时间序列中的季节性模式。


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

如有侵权,请联系删除。

以下是使用Python实现季节性回归集成移动平均模型(SARIMA)的代码: 首先,导入必要的库: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.statespace.sarimax import SARIMAX ``` 接着,读取时间序列数据: ```python df = pd.read_csv('data.csv', parse_dates=['datetime'], index_col='datetime') ``` 其中,data.csv是一个包含日期时间和时间序列数据的CSV文件,datetime列被解析为日期时间格式,并被设置为索引列。 然后,检查和处理数据: ```python # 检查缺失值 print(df.isnull().sum()) # 填充缺失值 df = df.fillna(method='ffill') # 检查重复值 print(df.duplicated().sum()) ``` 我们发现缺失值并用前向填充方法进行填充,同时也检查了是否有重复值。 接下来,根据季节性和趋势性进行差分: ```python # 差分 diff = df.diff(periods=1) diff = diff.dropna() # 绘制差分后的图像 plt.plot(diff) plt.show() ``` 这里我们选择了一阶差分,并绘制了差分后的时间序列图。 然后,对差分后的时间序列数据进行模型拟合和预测: ```python # 拟合 SARIMA 模型 model = SARIMAX(df, order=(1, 1, 1), seasonal_order=(0, 1, 1, 12)) result = model.fit() # 预测未来 12 个月 forecast = result.predict(start=len(df), end=len(df)+11, dynamic=True) # 绘制预测结果 plt.plot(df, label='Actual') plt.plot(forecast, label='Forecast') plt.legend() plt.show() ``` 这里我们使用了SARIMA模型,其中order和seasonal_order参数分别设置了ARIMA模型的阶数和季节性阶数。我们用拟合好的模型对未来12个月的数据进行预测,并将结果绘制在时间序列图上。 最后,输出模型评估指标: ```python # 输出模型评估指标 print(result.summary()) ``` 这里我们使用result.summary()输出了模型的各项指标,如AIC、BIC、残差等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值