平滑随机波动,识别趋势
简单移动平均 (SMA)
F_t = (A_{t-1} + A_{t-2} + ... + A_{t-n}) / n
加权移动平均 (WMA)
F_t = w₁A_{t-1} + w₂A_{t-2} + ... + wₙA_{t-n}
赋予近期数据更高权重
一次指数平滑 (SES)
F_t = α · A_{t-1} + (1-α) · F_{t-1}
α ∈ (0,1) 平滑系数
| 方法 | 数据类型 | 预测期 | 复杂度 | 典型应用 |
|---|---|---|---|---|
| 移动平均 (SMA/WMA) | 平稳/趋势 | 短期 | 低 | 库存补货、日销量 |
| 指数平滑 (SES) | 无趋势/季节 | 短期 | 低 | 快消品、常备品 |
| Holt线性趋势 | 线性趋势 | 中短期 | 中 | 增长/衰退产品 |
| Holt-Winters | 趋势+季节 | 中短期 | 中高 | 季节性商品 |
import numpy as np
actual = np.array([120, 135, 128, 150, 142])
forecast = np.array([118, 130, 132, 148, 145])
errors = actual - forecast
mae = np.mean(np.abs(errors))
mse = np.mean(errors**2)
rmse = np.sqrt(mse)
mape = np.mean(np.abs(errors / actual)) * 100
print(f"MAE: {mae:.2f}, RMSE: {rmse:.2f}, MAPE: {mape:.2f}%")
# 输出: MAE: 3.80, RMSE: 4.69, MAPE: 2.78%