好的,我来帮你系统梳理 时间序列预测中的 ARIMA 模型,从概念、原理到建模步骤,让你快速理解和应用。


1️⃣ ARIMA 模型简介

ARIMA 是 AutoRegressive Integrated Moving Average 的缩写,即 自回归-差分-移动平均模型

  • 应用场景:时间序列预测,如股票价格、销售额、气温等
  • 特点
    1. 适用于 非平稳时间序列(通过差分变平稳)
    2. 同时考虑 自回归 (AR) 和 移动平均 (MA)

2️⃣ ARIMA 模型组成

ARIMA(p,d,q) 三个参数含义:

参数含义
p自回归阶数(AR,AutoRegressive)
d差分阶数(I,Integrated)
q移动平均阶数(MA,Moving Average)

2.1 自回归 AR(p)

  • 用过去 p 个时间点的值预测当前值:

Xt=ϕ1Xt−1+ϕ2Xt−2+…+ϕpXt−p+ϵt

2.2 移动平均 MA(q)

  • 用过去 q 个误差项预测当前值:

Xt=ϵt+θ1ϵt−1+…+θqϵt−q

2.3 差分 I(d)

  • 对非平稳序列进行 d 阶差分,使序列平稳:

Yt=Xt−Xt−1(一阶差分)


3️⃣ ARIMA 建模流程

3.1 检查平稳性

  • 平稳性要求:均值、方差随时间不变
  • 方法:
    • 绘图:时序图、ACF/PACF
    • 统计检验:ADF(Augmented Dickey-Fuller)检验
from statsmodels.tsa.stattools import adfuller
result = adfuller(time_series)
print('ADF检验 p-value:', result[1])

3.2 差分处理

  • 若非平稳,进行差分:
diff_series = time_series.diff().dropna()

3.3 确定 p 和 q

  • ACF(自相关函数) → 确定 MA(q) 阶数
  • PACF(偏自相关函数) → 确定 AR(p) 阶数

3.4 模型训练

from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(time_series, order=(p, d, q))
result = model.fit()
print(result.summary())

3.5 模型诊断

  • 检查残差是否 白噪声
  • 使用 plot_diagnostics 可视化:
result.plot_diagnostics(figsize=(10,6))

3.6 预测

forecast = result.forecast(steps=10)  # 预测未来10个时间点
print(forecast)


4️⃣ ARIMA 模型优缺点

优点

  • 对短期预测精度高
  • 模型理论成熟,易解释

缺点

  • 对季节性不敏感(需使用 SARIMA)
  • 依赖历史数据,长期预测效果差
  • 参数选择需谨慎(p,d,q)

5️⃣ ARIMA 与 SARIMA 区别

模型说明
ARIMA无季节性,适用于非平稳序列
SARIMA增加季节性参数 (P,D,Q,s),适用于季节性序列

6️⃣ 总结

  1. 核心思想:利用自回归和移动平均对平稳化后的时间序列进行建模
  2. 建模步骤
    1. 平稳性检验(ADF)
    2. 差分处理使序列平稳
    3. 根据 ACF/PACF 确定 p/q
    4. 训练 ARIMA 模型
    5. 模型诊断与残差分析
    6. 预测未来数据

ARIMA 是时间序列分析基础,理解 AR、I、MA 及建模流程,对于金融预测、销售预测和气象预测都非常重要。