Day 124 — 时间序列预测 — 图解
1. 时间序列组成成分
原始时间序列 Y(t)
Y(t) = T(t) + S(t) + C(t) + ε(t)
┌─────────────────────────────────────────┐
│ 趋势 T(t) │
│ ╱ │
│ ╱ │
│ ╱ │
│╱ │
├─────────────────────────────────────────┤
│ 季节性 S(t) │
│ /\ /\ /\ /\ │
│ / \ / \ / \ / \ │
│/ \/ \/ \/ \ │
├─────────────────────────────────────────┤
│ 周期性 C(t) │
│ ────╱╲────────╱╲──── │
│ ╱ ╲ ╱ ╲ │
│ ╱ ╲ ╱ ╲ │
├─────────────────────────────────────────┤
│ 残差 ε(t) │
│ ~ ~ ~ ~ ~ ~ ~ │
└─────────────────────────────────────────┘
2. ARIMA 建模流程
ARIMA 建模流程
┌──────────────┐
│ 原始数据 │
└──────┬───────┘
│
▼
┌──────────────┐ ┌──────────────┐
│ ADF 检验 │────▶│ p < 0.05? │
│ 平稳性检验 │ └──────┬───────┘
└──────────────┘ │
是 │ 否
┌────────┤────────┐
▼ ▼
┌────────────┐ ┌────────────┐
│ 差分 d=0 │ │ 差分 d=1 │
└──────┬─────┘ └──────┬─────┘
│ │
└────────┬────────┘
│
▼
┌────────────────┐
│ ACF / PACF 图 │
│ 确定 p, q │
└───────┬────────┘
│
▼
┌────────────────┐
│ 拟合 ARIMA │
│ (p, d, q) │
└───────┬────────┘
│
▼
┌────────────────┐
│ 残差检验 │
│ Ljung-Box │
└───────┬────────┘
│
▼
┌────────────────┐
│ 预测 │
└────────────────┘
3. ARIMA 各组件图解
ARIMA(p, d, q) 组件
┌─────────────────────────────────────────────┐
│ AR(p) - 自回归 │
│ │
│ y(t) = φ₁y(t-1) + φ₂y(t-2) + ... + ε(t) │
│ │
│ 含义: 当前值是过去p个值的加权和 │
│ 例子: 昨天的销售额影响今天的销售额 │
├─────────────────────────────────────────────┤
│ I(d) - 差分 │
│ │
│ Δy(t) = y(t) - y(t-1) │
│ Δ²y(t) = Δy(t) - Δy(t-1) │
│ │
│ 含义: 用差分消除趋势,使序列平稳 │
├─────────────────────────────────────────────┤
│ MA(q) - 移动平均 │
│ │
│ y(t) = ε(t) + θ₁ε(t-1) + ... + θ_qε(t-q) │
│ │
│ 含义: 当前值受过去q个预测误差的影响 │
│ 例子: 昨天预测偏高,今天可能偏低 │
└─────────────────────────────────────────────┘
4. Prophet 模型结构
Prophet 模型 y(t) = g(t) + s(t) + h(t) + ε(t)
┌─────────────────────────────────────────────┐
│ 趋势 g(t) │
│ │
│ 线性趋势: g(t) = (k + a(t)·δ)t + m(t) │
│ 逻辑增长: g(t) = C(t) / (1 + e^(-(k+t)δ))│
│ │
│ k: 增长率 │
│ C(t): 容量上限 │
│ δ: 趋势变化点 │
├─────────────────────────────────────────────┤
│ 季节性 s(t) │
│ │
│ s(t) = Σ [aₙcos(2πnt/P) + bₙsin(2πnt/P)] │
│ │
│ P: 周期 (年=365.25, 周=7, 天=1) │
│ n: 傅里叶级数阶数 │
├─────────────────────────────────────────────┤
│ 节假日 h(t) │
│ │
│ h(t) = Σ κᵢ · 1[t ∈ Dᵢ] │
│ │
│ Dᵢ: 节假日日期集合 │
│ κᵢ: 节假日效应 │
└─────────────────────────────────────────────┘
5. 模型选择决策树
时间序列模型选择
数据有季节性?
├── 是 → 数据量大 (>1000)?
│ ├── 是 → Prophet / DeepAR
│ └── 否 → SARIMA / Prophet
└── 否 → 数据平稳?
├── 是 → ARMA / ARIMA(0,d,0)
└── 否 → ARIMA
需要多步预测?
├── 短期 (1-30天) → ARIMA / Prophet
└── 长期 (>30天) → Prophet / LSTM
有外部变量?
├── 是 → SARIMAX / Prophet + regressors
└── 否 → ARIMA / Prophet