第四章:需求预测基础

各位工程师朋友,大家好。今天我们来聊聊需求预测。说实话,库存管理里最让人头疼的就是这个环节。预测准了,皆大欢喜;预测偏了,要么库存积压,要么断货挨骂。我做了十几年供应链,见过太多因为预测不准翻车的案例。

需求预测说白了就两大类:定性法和定量法。定性法靠人的判断,定量法靠数据说话。两者各有各的用武之地,我们一个一个来看。

4.1 定性预测法

定性预测,就是没有历史数据,或者数据不可靠的时候,靠专家、靠市场调研来拍脑袋。嗯,这个「拍脑袋」其实是有讲究的。

4.1.1 德尔菲法

德尔菲法,名字听着高大上,其实核心就是「多轮匿名投票」。我参与过一个新产品上市的项目,当时没有任何历史销售数据,就用德尔菲法。

具体怎么做?

  • 找一群专家,比如销售总监、产品经理、行业分析师
  • 每个人独立给出预测,不互相讨论
  • 收集结果,统计出中位数和四分位距
  • 把统计结果反馈给所有人,再让他们重新预测
  • 重复几轮,直到意见收敛

为什么要匿名?因为怕权威专家一开口,其他人就不敢说话了。我见过一个项目,大老板先说了个数字,下面的人全跟着说差不多,结果预测偏差了40%。

我的经验:德尔菲法一般做3轮就够了。超过5轮,专家会疲劳,效果反而下降。

4.1.2 市场调研法

市场调研,就是直接问客户:「你打算买多少?」听起来简单,但坑很多。

我曾经帮一家消费品公司做调研,客户嘴上说「肯定会买」,实际购买率只有30%。为什么?因为客户回答时没有成本约束,说「买」又不花钱。

所以做市场调研时,我建议用「购买意向量表」:

  • 1分:肯定不会买
  • 2分:可能不会买
  • 3分:不确定
  • 4分:可能会买
  • 5分:肯定会买

只有选4分和5分的客户,才计入潜在需求。而且还要打个折扣,一般打7-8折比较靠谱。

4.2 定量预测法

有历史数据了,我们就可以上定量方法。这里我重点讲两个最常用的:移动平均和指数平滑。

4.2.1 移动平均法

移动平均,就是取最近N期的平均值作为下一期的预测。简单粗暴,但有效。

公式长这样:

F(t+1) = (A(t) + A(t-1) + ... + A(t-N+1)) / N

其中F是预测值,A是实际值,N是期数。

N怎么选?这是个关键问题。N越大,曲线越平滑,但对变化反应越慢。N越小,反应快,但容易受随机波动影响。

避坑指南:我曾经给一家电子厂做项目,他们用3期移动平均预测芯片需求。结果遇到市场突然下滑,预测值连续3期都偏高,导致库存积压了2000万。后来我建议改成加权移动平均,给最近的数据更高权重,情况才好转。

加权移动平均的代码示例:

def weighted_moving_average(data, weights):
    """
    data: 历史数据列表
    weights: 权重列表,从最近到最远
    """
    n = len(weights)
    if len(data) < n:
        return None
    recent = data[-n:]
    forecast = sum(r * w for r, w in zip(recent, weights)) / sum(weights)
    return forecast

# 示例:最近3期,权重分别为0.5, 0.3, 0.2
data = [120, 130, 125, 140, 135]
weights = [0.5, 0.3, 0.2]
result = weighted_moving_average(data, weights)
print(f"下一期预测值:{result:.1f}")

4.2.2 指数平滑法

指数平滑,可以理解为移动平均的升级版。它给所有历史数据都分配权重,但越近的数据权重越大,而且权重呈指数衰减。

公式:

F(t+1) = α * A(t) + (1-α) * F(t)

α是平滑系数,取值0到1之间。α越大,模型对最近数据越敏感。

α怎么选?我个人的习惯是:

  • 数据波动小:α取0.1-0.3
  • 数据波动大:α取0.3-0.5
  • 数据有趋势:考虑用霍尔特指数平滑(双指数平滑)
注意:指数平滑有个初始值问题。第一期没有F(1),通常用A(1)代替,或者取前几期的平均值。这个初始值对前期预测影响很大,但运行一段时间后影响会逐渐消失。

4.3 预测误差分析

预测完了,得看看准不准。误差分析不是为了批评谁,而是为了改进模型。

常用的误差指标有这几个:

指标 公式 说明
MAE Σ|A-F|/n 平均绝对误差,直观易懂
MSE Σ(A-F)²/n 均方误差,放大大误差的影响
RMSE √MSE 均方根误差,单位与原始数据一致
MAPE Σ|(A-F)/A|/n × 100% 平均绝对百分比误差,适合比较不同量级的数据

我个人最常用的是MAPE,因为它能直观反映误差百分比。比如MAPE=10%,意味着平均预测偏差10%。

但要注意,MAPE有个致命缺陷:如果实际值A接近0,百分比会变得无穷大。所以遇到有零值的数据,我建议用MAE或者sMAPE(对称MAPE)。

我的经验:误差分析不是算完就完了。我会把误差按时间画出来,看看有没有系统性偏差。比如连续5期都高估,那模型可能没捕捉到下降趋势,需要调整参数或换模型。

下面我用一张图来总结本章的知识体系:

需求预测方法体系 定性预测法 定量预测法 德尔菲法 市场调研法 移动平均法 指数平滑法 预测误差分析 MAE MSE RMSE MAPE sMAPE 选择方法取决于:数据可用性、业务场景、精度要求

最后说一句,没有完美的预测方法。我见过有人花三个月调参数,把历史拟合误差降到2%,结果未来预测偏差20%。为什么?因为过拟合了。

我的建议是:先用简单方法,比如移动平均,跑起来再说。等积累足够数据,再逐步优化。别一开始就上复杂模型,容易把自己绕进去。

核心要点:
  • 定性法适合新产品、无历史数据场景
  • 定量法适合有稳定历史数据的场景
  • 误差分析要关注系统性偏差,不只是看数值大小
  • 模型越简单,越容易落地和维护

公众号:蓝海资料掘金营,微信deep3321