marker 拿 2025 年 7 到 12 月的真实需求算你们的 MAPE,这六个月的数据你们手里没有。报告里的 appropriateness 一项问的也是同一件事:站在 2025 年 6 月往后预测,你们选的模型靠不靠得住。brief 把这层意思写成 reliable forecasts for periods that have not yet been observed。所以改草稿时,选模型、选变量的每个理由都回到这六个月上来说。
测试期也先预测 Temperature 再代入
回归里用了 Temperature 或 EconomicIndex 的话,看一眼测试集 2025 年 1 到 6 月代入的是真实值还是预测值。marker 打分时预测期没有这两个变量,brief 写的是 must be forecast if needed。测试期用真实值,算出来的是事后 (ex post) MAPE,含这两个变量的模型会显得更准,排名可能因此颠倒。
图:时间线示意:训练集到 2024 年 12 月,测试集 2025 年 1 到 6 月,预测期 2025 年 7 到 12 月;事后口径在测试集用真实 Temperature,事前口径和 marker 打分时一样,用预测出来的 Temperature。
结构示意 · 测试集这一段代入哪种 Temperature,决定算出来的 MAPE 是哪种口径;和 marker 打分条件一致的是下面那一行。EconomicIndex 同理。
我会让测试期按预测期的办法走一遍:Temperature 用历年同月平均,EconomicIndex 用漂移法或 TCES,先预测再代入,得到事前 (ex ante) MAPE。两个口径并排写,差出来的部分来自提前知道了真实值;再拿事前 MAPE 和不含这个变量的子集比,brief 问的 genuine predictive value 就看得出来了。
模型对比表加一列,写它怎么处理关键特征
Understanding 那一节会找出一个对预测期影响大的特征,比如 Intervention 生效后需求水平跳了一档,或者冬季峰值逐年变高。三个必做模型放进对比表时,在 MAPE 旁边加一列,写每个模型怎样处理它。拿跳变来说:回归能直接放阶梯变量;Holt-Winters 不接收解释变量,只能靠水平方程在跳变后逐月追;经典分解的 2×12 中心化移动平均会把跳变抹成前后约 6 个月的斜坡,附近的季节指数也跟着变形。
这一列写清楚,marker 还没读到 MAPE 排名,就知道哪个模型为什么会赢或输,appropriateness 有了你们数据里的依据。
Intervention 的系数写成前后水平差
Intervention 在回归里显著时,把系数直接翻成「这次变化让需求变了百分之几」,marker 会读成一个因果结论。brief 只说它 associated with a planned change,没说是什么变化,系数吸收的是生效前后需求水平的差,同期的其他变化也算在里面。我会把它叫作「与干预同时发生的水平变化」,旁边放干预前后各 12 个月的需求均值:均值几乎没变而系数显著,就交代系数还吸收了别的东西。干预开始的月份离样本末尾很近时,把系数的标准误写进风险部分,预测期 6 个月都要加上它。
风险写到管理层该盯哪个月的实际值
brief 说专业预测要能讲出 when they may fail。带 95% 区间的预测图只覆盖区间以内的不确定性,区间以外的风险要另外列。我的做法是一张三列小表:风险、你们结果里支撑它的数字、管理层该看哪个月的实际值。 预测偏离、干预效应和历史不同、出现新的结构性变化,各写一行,最后一列落到具体月份,比如「7 月实际需求落到区间下限以下」。marker 读到的是你们知道这组预测会在哪里失准。






