📈 时间序列成分 趋势 · 季节性 · 周期性 · 残差

⏳ 分解方法:加法模型 / 乘法模型 ✨ 中小学生色系 · 双边框设计
📊

趋势

长期上升或下降的平滑分量,反映核心方向。

例:GDP 逐年增长、气温长期变暖
🔁

季节性

固定周期(如年、月、周)的重复波动。

例:冰淇淋销量夏季高峰,冬季低谷
🌊

周期性

非固定周期的涨落,通常与经济或环境相关。

例:经济扩张/收缩周期,太阳黑子活动
🍂

残差

剔除趋势、季节、周期后剩余的随机噪声。

例:突发事件、测量误差、不规则波动

🧮 分解模型对比 加法 vs 乘法

模型 公式 适用场景 成分关系
➕ 加法模型 Y = T + S + C + R 季节/周期幅度不随趋势变化 各成分独立相加
✖️ 乘法模型 Y = T × S × C × R 季节/周期幅度随趋势成比例变化 成分相互影响,乘积关系
⚖️ 伪加法模型 Y = T + T×(S-1) + … 含零值或负值时调整 混合形式
💡 加法:Y = 趋势 + 季节 + 周期 + 残差   |   乘法:Y = 趋势 × 季节 × 周期 × 残差

🧬 时间序列分解示意 加法模型

Y (原始) T (趋势) S (季节) C (周期) R (残差) 📌 加法模型:Y = T + S + C + R    |    乘法模型:Y = T × S × C × R
⚡ 实际分解常用 STL、X-13ARIMA-SEATS 等算法
  • 📐 加法模型:成分独立,适合恒定季节幅度
  • 📊 乘法模型:成分成比例,适合增长型季节
  • 🧩 伪加法:处理零/负值场景
  • 🔍 趋势提取:移动平均、HP滤波、多项式拟合
  • 📅 季节调整:差分、X-13、STL分解
  • 📉 残差诊断:白噪声检验、ACF/PACF
# 时间序列分解示例 (statsmodels)
import statsmodels.api as sm
import pandas as pd

# 假设 data 为 pandas Series,频率为 'M'
decomposition = sm.tsa.seasonal_decompose(
    data, 
    model='additive',   # 可选 'multiplicative'
    period=12
)

trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

# 可视化
decomposition.plot()