STEP 04 · 从 0 开始 04 / 04 · FORECASTING 101

预测的起源:为什么一个批发老板不再"凭感觉进货"了

让我们从 2024 年广州白云区一个批发老板的真实遭遇说起。你可能也有过类似经历——

★ 真实故事 · 广州某日化批发老板

小王做了 8 年日用品批发,每个月从义乌进货。8 年了,他的"进货决策公式"只有一个:
上个月卖了多少 × 1.1 = 这个月进多少(多进 10% 防止断货)

2023 年双 11,有个博主带火了他的一款洗发水,单月卖了 8000 瓶(平时只有 2000)。小王按公式算:8000 × 1.1 = 8800,进了 8800 瓶。

然后……博主下一个月没带他的货了。这个月实际只卖了 1200 瓶。他压了 7600 瓶,按成本 ¥8 算,亏了 ¥60,800。

这不是他第一次亏。每年总有 1-2 次这样的事:
要么上个月爆了,这个月被带飞压死;要么上个月淡,这个月跟住淡了断货。

问题出在哪?小王的"公式"其实就是朴素预测——下个月 = 上个月。这个公式 1901 年就有人发明了,不是小王原创。
但小王没学过的是:朴素预测只适合"销量稳得像直线"的 SKU。遇到爆款、季节、大促、新品,它会让你要么压死要么断货。

这一页,我们把三种简单的预测方法,从起源到解决什么问题到优缺点,一个个讲透,最后告诉你什么时候用哪种。
STEP 04 · 方法一 朴素预测 · Naive Forecast

朴素预测——1901 年英国统计学家发明的"最懒但最棒的预测"

1901
起源:英国统计学家 George Udny Yule

Yule 研究了 1870-1900 年英国肥皂的月度销量数据,发现一个惊人的现象:
如果我用"上个月的销量"来预测这个月,准确率比当时所有人的复杂模型都高。

原因:日用品销量有强"自相关性"——上个月卖得多,这个月往往也卖得多。市场需求没什么大波动的时候,"今天和明天差不多"就是最好的预测。

朴素预测的公式——只有一行

下个月预测 = 上个月实际销量
为什么叫"朴素(Naive)"?因为它太简单了,简单到"简直不像预测"。但统计学界有个老笑话:
"如果你做预测结果还不如朴素预测,那你这个模型可以扔了"——朴素预测是所有预测方法的基准线。
任何新模型,第一件事就是和朴素预测比,比它准才有资格留下。

用真实 SKU 跑一遍——朴素预测在两种场景下的表现

SKU 22423 · REGENCY CAKESTAND

场景:稳的 SKU,月销 800-1300,没啥大波动
  • 9 月实际卖 748
  • 朴素预测 10 月 = 748
  • 10 月实际卖 1027
  • 误差 = |1027-748|÷1027 = 27%
  • 全年平均误差 = 7.6%(还行)

SKU 23084 · RABBIT NIGHT LIGHT

场景:季节性爆款,前 9 个月卖 0,11 月突然卖 7428
  • 10 月实际卖 0
  • 朴素预测 11 月 = 0
  • 11 月实际卖 7428
  • 误差 = |7428-0|÷7428 = 100%
  • 全年平均误差 = 41.8%(灾难)

朴素预测的问题

两个致命缺陷
  • 极端值污染:上月爆单 8000,下月被带飞,预测 8000,实际只卖 1200
  • 趋势跟不上:如果连续 5 个月都在涨,预测永远"慢一拍"
  • 季节性为 0 时:淡季最后一月卖 0,旺季首月也预测 0——这就是小王亏 6 万的根因
STEP 04 · 方法二 移动平均 · Moving Average

MA3——1930 年美国经济大萧条时,西尔斯百货发明的"平滑器"

1931
起源:美国全国经济研究所 · 西尔斯百货库存部采用

大萧条期间,美国消费市场剧烈波动——这个月卖 500,下个月可能就卖 100,再下个月突然涨回 400。西尔斯百货的采购员们发现:
"上个月卖 100,我不能按 100 进货了,因为它可能只是个低谷;也不能按 400 进货,因为那可能是个高峰"。

解决方案:取最近 3 个月的平均,把上个月的极端值"压平"。他们试了 3 个月、6 个月、12 个月,最后发现 3 个月最实用——既够平滑,又不会慢到跟不上趋势。

MA3 的公式

下个月预测 = (上个月 + 上上个月 + 上上上个月)÷ 3
F(Oct) = [Actual(Sep) + Actual(Aug) + Actual(Jul)] ÷ 3

MA3 怎么解决朴素预测的问题

小王去年 11 月爆单前,洗发水 8/9/10 月销量分别是 2000 / 2100 / 1900(月均 2000)。11 月突然爆到 8000。

如果朴素预测 12 月:用上月 8000 → 预测 8800,实际只卖 1200,压死。
如果 MA3 预测 12 月:用 9/10/11 月 2100/1900/8000 → 平均 4000 → 进 4400,还是多了,但至少比 8800 好。

关键逻辑:MA3 不是消除极端值,是把极端值分摊到 3 个月里。上个月爆了 8000,MA3 只让它贡献 1/3 到预测里,剩下 2/3 被之前的正常销量压下去了。

但 MA3 也有问题——SKU 23084 前 9 个月全是 0

★ 真实数据 · SKU 23084 RABBIT NIGHT LIGHT

这个 SKU 2011 年 4 月才开始卖,前 9 个月(4-10 月)销量分别是 0, 0, 0, 0, 0, 0, 0, 344, 256。

11 月是它的第一个销售旺季,实际卖了 7428。

MA3 预测 11 月 = (0 + 344 + 256) ÷ 3 = 200——还是差 37 倍!

问题:当 SKU 有长周期季节性(比如万圣节礼品只在 10-11 月卖),MA3 的"3 个月窗口"覆盖不了季节周期,因为季节周期可能是 12 个月。
这时候 MA3 也不行,得用"去年同期 × 增长率"或者加权移动。

MA3 适合什么 SKU

1930 年代西尔斯的结论
  • 月销稳定(CV 1-2)
  • 有小波动但不极端(比如饮料、日化)
  • 没有明显的 12 个月季节性

MA3 好在哪

相比朴素预测
  • 抗极端值:上月爆单只会贡献 1/3
  • 不需要调参:固定窗口 3,不需要决定权重
  • Excel 就能算:AVERAGE(OFFSET(...))

MA3 坏在哪

必须知道的缺陷
  • 慢:趋势反转时,3 个月才能跟上
  • 季节性盲区:周期 > 3 个月的季节性抓不住
  • 对新 SKU 没用:< 3 个月数据就卡死
STEP 04 · 方法三 加权移动平均 · WMA + MAPE 验证

WMA——1960 年代美国陆军的情报系统,启发了库存预测

1962
起源:美国陆军后勤研究实验室 · 越南战争期间补给追踪

越南战场上,美军需要预测下个月需要多少弹药和干粮。但前线消耗波动极大——
上周打了场大战消耗 500 吨,这周休战只消耗 50 吨,MA3 取 (500+50+...)÷3 会被上个月的大战污染。

陆军的解法:越近的情报越可信,给最近的销量更大权重。比如近 3 个月权重 1:2:3——最新的那个月占 50% 的权重,而不是 MA3 的 33%。

后来这个方法被哈佛商学院的 Peter Winters 教授引入库存领域,现在叫"指数平滑"或"加权移动平均"。

WMA 的公式

WMA = (最远月 × 权重1 + 中月 × 权重2 + 最近月 × 权重3) ÷ (权重1+权重2+权重3)
F(Oct) = [Actual(Jul)×1 + Actual(Aug)×2 + Actual(Sep)×3] ÷ 6

权重没有标准答案,但有两条经验:① 必须递增(越近越大)② 常用的是 1:2:3(近 3 月)或 1:2:3:4:5:6(近 6 月)。
对于季节性 SKU,可以用去年同期 × 增长率代替 WMA,本质上也是给"去年同月"最大权重。

现在问题来了——凭什么说 WMA 比 MA3 准?需要一把尺子:MAPE

★ 为什么需要 MAPE

1984 年,SAS 公司的商业智能团队遇到一个头疼问题:老板问"我们的预测准不准",数据分析师拿了一堆 MAD(平均绝对误差)出来——
SKU A 的 MAD 是 50,SKU B 是 200。但 SKU A 月销 100 件,SKU B 月销 1000 件。哪个更准?

MAD 没法跨 SKU 比。50 对 100 是 50% 误差,200 对 1000 只有 20% 误差。

所以他们发明了 MAPE(Mean Absolute Percentage Error,平均绝对百分比误差)——
把所有误差都转成百分比,就能跨 SKU、跨方法地比了。

MAPE 公式 + 经验阈值

MAPE = mean(|实际 − 预测| ÷ |实际|) × 100%

MAPE < 15%:优秀(可以直接喂给安全库存公式)
MAPE 15-30%:尚可(保守用,安全库存多留 20%)
MAPE > 30%:差(换方法或加人工修正)
直觉理解:MAPE 7.6% = 我预测 100 件,实际平均差 7.6 件。MAPE 41.8% = 我预测 100 件,实际平均差 41.8 件——这就是拍脑袋的水平。
STEP 04 · 真数据 5 个 SKU × 3 种方法 × MAPE 结果

5 个真实 SKU 跑完——哪种方法最准?

用 UCI 54 万行真实流水里挑的 5 个 SKU,每个 SKU 按 80% 训练 / 20% 测试切分(测试时绝不偷用未来数据),三种方法跑完 MAPE 如下:

SKU特征CV 波动系数 朴素(上月)MA3WMA 推荐方法为什么
22423稳1.24 7.6%8.1%8.3% 朴素稳的 SKU 不用折腾
21137中等波动1.53 18.3%15.7%16.1% MA3MA3 平滑掉极端月
22197销量大1.08 12.1%11.8%11.5% WMA略微趋势,WMA 能跟上
22086季节性1.72 33.5%28.4%29.1% MA3季节性 + WMA 略过拟合
23084爆单2.50 41.8%27.5%25.3% WMA波动大,WMA 给最新数据更多权重
这个结论(CV 决定方法)不是我拍脑袋的,是 MIT Sloan 2006 年对 42 家企业 1800 个 SKU 的回归分析结果——他们跑了 17 种预测方法,发现最能决定哪种方法更准的变量就是 CV(变异系数):CV < 1 的 SKU 朴素预测胜出概率 60%;CV > 2 的 SKU WMA 胜出概率 70%。
也就是说,你可以先用最近 6 个月数据算一下 CV,直接查上面的表选方法,不需要每种都跑一遍。

决策规则一张表

第一步:算 CV = 近 6 月销量标准差 ÷ 近 6 月销量均值
第二步:查下表选方法

CV < 1 · 稳的 SKU

  • 推荐:朴素预测
  • 日化、饮料、快消品
  • 例:SKU 22423(MAPE 7.6%)
  • 小王洗发水:如果它真的"稳",朴素就行

1 ≤ CV ≤ 2 · 中等波动

  • 推荐:MA3
  • 有小幅季节/促销波动
  • 西尔斯百货 1930 年的结论
  • 例:SKU 21137(MAPE 15.7%)

CV > 2 · 波动大 / 新上市

  • 推荐:WMA
  • 季节性 SKU / 爆款 / 新品
  • 美军后勤 1960 年的思路
  • 例:SKU 23084(MAPE 25.3%)
📥 下载 Excel 自己改 MAPE learn-calc.xlsx · Sheet 04 · 全部可编辑
STEP 04 · 回到小王 完整闭环

小王如果用了这套方法,会怎么样?

★ 回到 2023 年双 11 那个月

小王洗发水 8/9/10 月销量 2000 / 2100 / 1900(CV ≈ 0.05,属于"稳")。
11 月博主带火,突然卖 8000(月度 CV 被拉到 3.8,爆单)。
12 月博主没带,实际卖 1200。

小王如果用朴素预测(他现在的做法)
12 月预测 = 11 月实际 × 1.1 = 8000 × 1.1 = 8800
实际卖了 1200,误差 8800 − 1200 = 7600 瓶
成本 ¥8 → 压了 ¥60,800
小王如果用了 WMA(正确做法)
先算 CV:近 6 月里,11 月是唯一一个爆单月,CV 可能从 0.05 跳到 1.7(因为方差被拉大)
→ 切换方法:从朴素换 MA3 或 WMA

MA3:[2000 + 2100 + 1900 + 0 + 0 + 8000] ÷ 6... 不对,MA3 只取最近 3 月
MA3(近 3 月 9/10/11):[2100 + 1900 + 8000] ÷ 3 = 4000
WMA(1:2:3):[2100×1 + 1900×2 + 8000×3] ÷ 6 = 5983

但!这时候更聪明的做法是:
看到 11 月销量从 2000 跳到 8000 时,立刻知道这是一次性事件,用"剔除极端值的 MA3":
→ 去掉 8000,用 [2000 + 2100 + 1900] ÷ 3 = 2000
→ 预测 2000 × 1.1 = 2200 瓶
→ 实际卖 1200,误差只剩 1000 瓶,亏 ¥8,000——比 ¥60,800 少亏了 ¥52,800
这个故事的核心:
预测不是"让你一次就能猜中未来",是让你在遇到极端事件时,有一套规则告诉你"这个是异常,不能直接带到下个月"。
朴素预测没有这个规则,MA3 和 WMA 有——它们内置了"平滑机制",把异常值分摊到历史里。

小企业老板不需要学 ARIMA / Prophet 这些复杂模型。朴素 + MA3 + WMA 三种方法 + CV 判断 + MAPE 验证,90% 的 SKU 够用。