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

1. 原理

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

2. 核心公式

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

推导

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

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()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.

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