平滑短期波动,适用于需求相对稳定、无趋势/季节性的场景。取最近 k 期平均值作为下一期预测。
加权移动平均,近期权重更大。适合无明显趋势、季节性的序列。α 平滑系数控制衰减速度。
识别长期趋势(线性/指数),通过最小二乘拟合直线或曲线,适合有明确上升/下降趋势的序列。
将序列拆解为趋势、季节、残差分量。常用加法/乘法模型,适合周期性明显的库存(如节日品)。
| 方法 | 适用场景 | 数据要求 | 复杂度 |
|---|---|---|---|
| 移动平均 | 稳定需求,无趋势 | 近期数据 | ⭐ |
| 指数平滑 | 随机波动,略有时变 | 连续历史 | ⭐☆ |
| 趋势外推 | 明显增长/下降 | 长期趋势 | ⭐⭐ |
| 季节性分解 | 固定周期波动 | 多周期数据 | ⭐⭐⭐ |
根据数据特征选择方法
import pandas as pd
import numpy as np
# 移动平均法 (窗口3)
def moving_average(series, window=3):
return series.rolling(window=window).mean().iloc[-1]
# 指数平滑法 (α=0.3)
def exp_smoothing(series, alpha=0.3):
result = [series.iloc[0]]
for i in range(1, len(series)):
result.append(alpha * series.iloc[i] + (1-alpha) * result[-1])
return result[-1]
# 示例库存数据
demand = pd.Series([120, 135, 128, 142, 138, 150])
print("移动平均预测:", round(moving_average(demand), 1))
print("指数平滑预测:", round(exp_smoothing(demand), 1))