第三章 需求预测基础:定性预测法、定量预测法、预测误差评估

各位好,我是老张。在供应链这行摸爬滚打了十几年,今天咱们聊聊需求预测。

说实话,我刚入行那会儿,觉得预测就是拍脑袋。后来吃过几次大亏——库存积压到爆仓,或者断货被销售追着骂——才明白这玩意儿是门硬功夫。

需求预测,说白了就是猜未来要卖多少。但怎么猜得准?咱们得讲方法。

3.1 定性预测法:靠人脑和经验

定性预测,就是没有历史数据,或者数据不可靠的时候,靠人的判断来估。我见过很多初创公司,新产品刚上市,只能用这招。

3.1.1 德尔菲法

找一群专家,背对背填问卷。一轮一轮地反馈,直到意见收敛。我个人习惯用三轮,再多就疲劳了。

我的经验: 德尔菲法适合中长期预测。我在做某款新药原料采购时用过,专家们第一轮分歧很大,到第三轮基本统一。但注意,别找太多人,5-8个足够。

3.1.2 市场调研法

直接问客户、问销售、问渠道。听起来简单,但坑很多。

  • 客户说的不一定准——他们往往高估需求。
  • 销售容易报低——怕完不成指标。
  • 渠道会囤货——造成虚假繁荣。

我曾经遇到一个案例:销售说下个月能卖5000台,结果只卖了800台。为什么?因为客户只是随口一说,根本没下单。

3.1.3 历史类比法

拿类似产品的历史数据来套。比如新款手机上市,可以参考上一代的销售曲线。

嗯,这里要注意:类比的前提是场景相似。市场环境变了,类比就失效了。

3.2 定量预测法:用数据说话

有历史数据,咱们就用数学模型。定量预测分两类:时间序列法和因果分析法。

3.2.1 时间序列法

只看历史数据的变化规律,不考虑外部因素。

简单移动平均法

取最近N期的平均值。比如过去3个月的销量分别是100、120、110,那下个月预测就是(100+120+110)/3=110。

# Python示例:简单移动平均
def simple_moving_average(data, window=3):
    return sum(data[-window:]) / window

sales = [100, 120, 110]
prediction = simple_moving_average(sales, 3)
print(f"下月预测: {prediction}")  # 输出: 110.0

加权移动平均法

给不同时期的数据分配权重。越近的数据权重越大。

# 加权移动平均
weights = [0.2, 0.3, 0.5]  # 权重之和为1
weighted_avg = sum(s * w for s, w in zip(sales, weights))
print(f"加权预测: {weighted_avg}")  # 输出: 111.0
关键点: 移动平均法对趋势反应慢。如果销量突然暴涨,预测会滞后。我建议在平稳需求场景下使用。

指数平滑法

给历史数据一个衰减系数α(0<α<1)。α越大,越看重近期数据。

# 一次指数平滑
def exponential_smoothing(data, alpha=0.3):
    result = [data[0]]
    for i in range(1, len(data)):
        result.append(alpha * data[i] + (1-alpha) * result[-1])
    return result[-1]

prediction = exponential_smoothing(sales, alpha=0.3)
print(f"指数平滑预测: {prediction}")

3.2.2 因果分析法

考虑外部因素。比如销量和广告投入、季节、天气有关。

线性回归

假设销量Y和某个因素X呈线性关系:Y = aX + b

# 简单线性回归示例
import numpy as np

# 广告投入 vs 销量
ad_spend = [10, 20, 30, 40, 50]
sales = [100, 150, 200, 250, 300]

# 计算回归系数
slope, intercept = np.polyfit(ad_spend, sales, 1)
print(f"Y = {slope:.2f}X + {intercept:.2f}")
# 如果下月广告投入60万,预测销量:
prediction = slope * 60 + intercept
print(f"预测销量: {prediction:.0f}")
避坑指南: 我曾经犯过一个错误——用回归模型预测,结果相关系数很高,但实际误差巨大。后来发现是多重共线性:两个自变量高度相关。所以,做回归前一定要做相关性分析。

3.3 预测误差评估

预测完了,得知道准不准。误差评估是闭环管理的关键。

3.3.1 常用误差指标

指标 公式 说明
MAE 平均绝对误差 所有误差绝对值的平均值。直观,但受量纲影响。
MSE 均方误差 误差平方的平均值。放大较大误差,适合惩罚极端偏差。
RMSE 均方根误差 MSE开方,与原始数据同量纲。我最常用的指标。
MAPE 平均绝对百分比误差 百分比形式,适合跨品类比较。注意:实际值为0时会失效。
# 误差计算示例
actual = [100, 120, 110, 130]
predicted = [105, 115, 108, 125]

# MAE
mae = sum(abs(a-p) for a,p in zip(actual, predicted)) / len(actual)
# RMSE
mse = sum((a-p)**2 for a,p in zip(actual, predicted)) / len(actual)
rmse = mse ** 0.5
# MAPE
mape = sum(abs((a-p)/a) for a,p in zip(actual, predicted)) / len(actual) * 100

print(f"MAE: {mae:.2f}")
print(f"RMSE: {rmse:.2f}")
print(f"MAPE: {mape:.2f}%")

3.3.2 误差分析的意义

光算误差不够,得分析原因。我一般分三步:

  1. 看趋势——误差是系统性偏高还是偏低?如果是,说明模型有偏。
  2. 找异常——有没有个别点误差特别大?可能是促销、缺货等事件。
  3. 调参数——根据误差反馈调整模型参数(比如α、窗口大小)。
我的习惯: 每个月做一次误差复盘。把预测值和实际值画在一张图上,一眼就能看出问题。别只看数字,可视化很重要。

3.4 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你想想看,预测不是孤立的事,它是个闭环:从方法选择,到模型计算,再到误差反馈。

需求预测知识体系 需求预测方法 定性预测法 定量预测法 德尔菲法 市场调研法 时间序列法 因果分析法 预测误差评估(MAE / RMSE / MAPE) 反馈调参

你看,从方法选择到误差评估,是个循环。我见过太多团队只做预测不评估,结果越偏越远。

小建议: 刚开始做预测,别追求复杂模型。先用简单移动平均,把误差算清楚。等数据积累够了,再上指数平滑、回归分析。步子迈大了,容易扯着。

好了,这一章就到这儿。记住:预测永远有误差,关键是把误差控制在可接受范围内。下回咱们聊库存策略,到时候见。


专注资料整理