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 分解流程与工程实现
标准时间序列分解在供应链计划系统中的工程落地步骤如下:
- 数据清洗:剔除异常值(如促销冲量、缺货回补),填充缺失值。
- 移动平均平滑:使用中心化移动平均(周期长度=季节周期)提取趋势-周期成分 T×C。
- 分离季节成分:从原始序列中去除趋势,得到 S×I(乘法)或 S+I(加法)。
- 季节指数计算:对相同季节位置取中位数或均值,归一化得到季节因子。
- 随机成分分离:从 S×I 中去除 S,得到残差 I,用于监控预测误差。
- 预测生成:外推趋势 + 叠加季节因子(乘法或加法)。
# 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 加法与乘法模型对比图
3.5 工程落地:成分分离与预测重建
在供应链计划系统中,分解法的工程实现通常遵循以下数据流:
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个完整季节周期),默认使用乘法模型并附加保守的季节指数平滑。