← 返回 Day 124 正文

Day 124 · 图解

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