📊 预测误差分析

库存优化与供应链协同实战 · 模块四
📐 预测误差衡量指标 MAD · MSE · MAPE

MAD

平均偏差

MAD = Σ|实际 − 预测| / n

消除正负抵消,直观反映平均误差幅度

MSE

均方误差

MSE = Σ(实际−预测)² / n

放大较大误差,对异常值敏感

MAPE

平均百分比误差

MAPE = (100%/n) Σ|(实际−预测)/实际|

无量纲,适合比较不同规模序列

周期实际需求预测值误差误差平方百分比误差
1120110101008.33%
2150140101006.67%
3901001010011.11%
42001802040010.00%
合计5070036.11%
指标值MAD = 12.5MSE = 175MAPE = 9.03%
🔄 预测监控与修正 Tracking Signal & 自适应滤波

📈 跟踪信号 (TS)

  • TS = 累积误差 / MAD
  • 控制限通常 ±3~4
  • 超出范围 → 触发修正

🧹 修正策略

  • 移动平均窗口调整
  • 指数平滑 α 自适应
  • 剔除异常点 / 事件校准

📋 监控仪表盘

  • 实时 MAD / MAPE 看板
  • 误差分布直方图
  • 预测偏差报警
🧩 预测系统建立 协同架构
历史需求 数据清洗 预测引擎 ES / ARIMA / ML 误差分析 MAD·MSE·MAPE 监控与报警 跟踪信号 TS 修正模块 自适应平滑 / 重置 协同计划 S&OP 输入 库存优化 安全库存 / ROP 执行 补货 🔁 反馈修正闭环
⚙️ 预测系统建立 · 核心代码框架
# 预测误差监控与自适应修正 (Python 风格)
class ForecastMonitor:
    def __init__(self, alpha=0.3, ts_limit=3.5):
        self.alpha = alpha
        self.ts_limit = ts_limit
        self.errors = []
        
    def calculate_mad(self):
        return sum(abs(e) for e in self.errors) / len(self.errors)
    
    def tracking_signal(self):
        cumulative = sum(self.errors)
        mad = self.calculate_mad()
        return cumulative / mad if mad != 0 else 0
    
    def adapt_smoothing(self, ts):
        # 若跟踪信号超限,增加alpha以快速响应
        if abs(ts) > self.ts_limit:
            self.alpha = min(0.8, self.alpha * 1.2)
        else:
            self.alpha = max(0.1, self.alpha * 0.98)
        return self.alpha

# 使用示例
monitor = ForecastMonitor()
for actual, forecast in sample_data:
    error = actual - forecast
    monitor.errors.append(error)
    ts = monitor.tracking_signal()
    new_alpha = monitor.adapt_smoothing(ts)
    print(f"TS: {ts:.2f}, 自适应α: {new_alpha:.3f}")