3、时间序列分解法:趋势、季节性、周期性、随机成分,加法与乘法模型

时间序列分解法是将历史需求数据拆解为四个基本成分,分别建模后再组合预测。该方法在供应链需求预测中应用广泛,尤其适用于具有明显季节波动和长期趋势的SKU(如快消品、服装、家电)。

3.1 时间序列的四个成分

成分 符号 定义 供应链示例
趋势 (Trend) T 长期上升或下降的平滑走向 某品类年销量因市场渗透率提升而逐年增长5%
季节性 (Seasonal) S 固定周期(如周、月、季)内的重复波动 空调夏季销量是冬季的3倍,每年重复
周期性 (Cyclical) C 非固定周期的长期波动(通常>1年) 房地产周期影响建材需求,约7-10年一轮
随机成分 (Irregular/Random) I 不可预测的偶然波动(噪声) 突发促销、天气异常、临时缺货导致的单日波动
工程提示:在SOP(销售与运营计划)滚动预测中,周期性成分通常被并入趋势处理,或通过外部经济指标单独修正。实际工程落地时,多数系统只显式分解趋势、季节性和随机成分三项。

3.2 加法模型 vs 乘法模型

选择加法还是乘法模型,取决于季节波动的幅度是否随趋势水平变化。

对比维度 加法模型 乘法模型
公式 Y = T + S + C + I Y = T × S × C × I
季节波动特征 季节幅度恒定,不随趋势变化 季节幅度随趋势水平成比例变化
适用场景 成熟稳定品类,趋势平缓 快速增长/衰退品类,趋势变化大
供应链典型SKU 日用品、基础食品 电子产品、季节性服装
季节指数范围 值(如±200件) 相对值(如0.8~1.3倍)
判断法则:绘制历史数据散点图,若季节波动的“峰谷差”随时间扩大,优先选择乘法模型;若峰谷差基本不变,选择加法模型。在工程实践中,乘法模型更常见,因为大多数消费品类在增长期季节波动值会同步放大。

3.3 分解流程与工程实现

标准时间序列分解在供应链计划系统中的工程落地步骤如下:

  1. 数据清洗:剔除异常值(如促销冲量、缺货回补),填充缺失值。
  2. 移动平均平滑:使用中心化移动平均(周期长度=季节周期)提取趋势-周期成分 T×C。
  3. 分离季节成分:从原始序列中去除趋势,得到 S×I(乘法)或 S+I(加法)。
  4. 季节指数计算:对相同季节位置取中位数或均值,归一化得到季节因子。
  5. 随机成分分离:从 S×I 中去除 S,得到残差 I,用于监控预测误差。
  6. 预测生成:外推趋势 + 叠加季节因子(乘法或加法)。
# Python 伪代码:乘法模型分解(使用 statsmodels)
import statsmodels.api as sm
import pandas as pd

# 假设 df 包含日期索引和 'demand' 列
decomposition = sm.tsa.seasonal_decompose(
    df['demand'],
    model='multiplicative',   # 或 'additive'
    period=12                 # 月度数据,周期12个月
)

# 提取成分
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

# 预测:外推趋势 + 季节因子
# 假设趋势外推值为 trend_forecast
forecast = trend_forecast * seasonal[-12:]  # 乘法模型
工程避坑:移动平均会导致序列两端缺失数据(首尾各丢失半个周期长度)。在SOP滚动预测中,建议使用Holt-Winters指数平滑法替代经典分解,避免端点数据丢失问题。

3.4 加法与乘法模型对比图

加法模型 vs 乘法模型 对比 加法模型 Y = T + S + I 趋势 T 季节 S Y = T+S 季节波动幅度恒定(±40单位),不随趋势变化 乘法模型 Y = T × S × I 趋势 T 季节 S Y = T×S 季节波动幅度随趋势增长而放大(比例恒定)

3.5 工程落地:成分分离与预测重建

在供应链计划系统中,分解法的工程实现通常遵循以下数据流:

时间序列分解工程数据流 原始需求 Y 移动平均 趋势-周期 T×C 季节指数 S 去季节化 Y/S 随机成分 I 乘法模型:S = Y / (T×C) → 去季节化序列 = Y / S → 残差 I = (Y/S) / T

3.6 成分组合与预测重建

分解完成后,预测重建的工程公式如下:

模型 预测公式 工程实现要点
加法模型 Ŷ(t) = T̂(t) + Ŝ(t) + Î(t) 趋势外推使用线性回归或Holt法;季节因子直接相加
乘法模型 Ŷ(t) = T̂(t) × Ŝ(t) × Î(t) 趋势外推使用指数平滑或Holt-Winters;季节因子相乘
混合模型 Ŷ(t) = (T̂(t) + Ĉ(t)) × Ŝ(t) + Î(t) 趋势-周期加法组合,再乘以季节因子(工程常用变体)
工程建议:在SOP系统中,建议对每个SKU的分解模型进行自动化选择。可设置AIC/BIC准则或交叉验证误差,在加法与乘法模型之间自动切换。对于新SKU(历史数据不足2个完整季节周期),默认使用乘法模型并附加保守的季节指数平滑。