预测与预报
一、直观理解:用历史信息外推尚未观测的结果
预测与预报要回答的问题很直接:给定已经观测到的历史序列或特征,未来某个时刻(或某个新样本)的连续结果大概是多少,误差大约有多大。
可以把它想成“带误差条的外推”。例如:
- 已知过去 36 个月的用电量,估计下个月用电量;
- 已知一组社会经济指标,估计某地区 GDP;
- 已知若干传感器读数,估计设备剩余寿命。
建模竞赛里,预测题的核心不是把训练集拟合得“漂亮”,而是在真实未见数据上仍然可用。时间序列题尤其要按时间顺序做训练/测试划分;截面回归题则要做交叉验证或独立测试集评估。只报告训练集 几乎没有说服力。
本门类覆盖的方法,大致沿三条主线展开:
- 时间序列外推:指数平滑、ARMA/ARIMA/SARIMA、GARCH、VAR、Prophet;
- 结构回归:多元线性回归、非线性回归、偏最小二乘;
- 小样本与组合/黑箱:灰色预测、马尔可夫、灰色–马尔可夫、树模型与 SVR,以及 SHAP 解释。
二、这一门类解决什么问题
| 问题类型 | 典型输出 | 优先方法线索 |
|---|---|---|
| 单变量水平/趋势外推 | 未来 步点预测与区间 | 指数平滑、ARIMA |
| 有明显季节周期 | 含季节的预测路径 | SARIMA、三次指数平滑、Prophet |
| 多变量互相影响 | 系统联合预测、脉冲响应 | VAR |
| 波动率/风险 | 条件方差路径 | GARCH |
| 特征–响应关系 | 新样本的 | 回归、PLS、树模型、SVR |
| 样本极少且近似指数增长 | 短序列趋势 | GM(1,1) 及其改进 |
| 状态转移/区间修正 | 状态概率或残差修正 | 马尔可夫、灰色–马尔可夫 |
| 模型解释 | 特征贡献 | 系数、变量重要性、SHAP |
选择方法前,先把下面四件事说清楚:
- 预测对象是水平值、增量、增长率,还是波动率;
- 信息集合只有自身历史,还是有外生变量/多变量;
- 样本长度与频率(年、月、日、截面);
- 评价方式必须能在训练期之外复现。
三、方法选择的决策逻辑
不要一上来就上复杂模型。建议按“基线 → 结构 → 复杂化”推进:
有明确时间顺序?
├─ 是:先画时序图,检查趋势/季节/突变
│ ├─ 近似水平、无季节 → 一次指数平滑 / ARMA
│ ├─ 有趋势、无季节 → 二次指数平滑 / ARIMA
│ ├─ 有季节 → 三次指数平滑 / SARIMA / Prophet
│ ├─ 多变量联动 → VAR
│ └─ 关心波动聚集 → 均值模型 + GARCH
└─ 否:截面或面板特征预测
├─ 关系近似线性、变量不太多 → 多元线性回归
├─ 机理曲线明确 → 非线性回归
├─ 变量多且共线 → PLS / 正则化回归
├─ 非线性、交互多,样本中等 → 随机森林(优先)
└─ 样本极大的纯数据题 → XGBoost / LightGBM
小样本(例如 )且呈现较光滑的单调/近似指数趋势时,可考虑 GM(1,1);若灰色残差仍有系统性偏差,再考虑灰色–马尔可夫修正。状态本身是离散等级(如水质等级、景气区间)时,马尔可夫链更自然。
四、统一的建模工作流
无论用哪一种具体模型,竞赛论文里都建议按同一套流程组织:
- 探索:时序图、ACF/PACF、散点图、相关矩阵、缺失与异常;
- 预处理:对数变换、差分、季节差分、标准化(注意只在训练集上估计变换参数);
- 定阶/选型:信息准则(AIC/BIC)、交叉验证、残差白噪声检验;
- 估计:MATLAB 中时间序列多用
arima+estimate+forecast;回归用fitlm/fitnlm;树模型用fitrensemble等; - 诊断:残差 ACF、Ljung-Box、异方差、正态性、杠杆点;
- 评价:在训练期外计算 RMSE、MAE、MAPE(注意分母接近 0 时 MAPE 失效),必要时报告预测区间覆盖率;
- 对比:至少保留一个朴素基线(如朴素预测 、季节朴素、历史均值、简单线性趋势);
- 解释与局限:系数/重要性是否符合机理,结构突变后是否仍可信。
时间序列划分必须保持因果顺序:
禁止把未来信息泄漏进特征(例如用全样本标准化后再切分,或把 的外生变量当作已知却未说明获取方式)。
五、评价指标:不要只看
设测试集真实值为 ,预测为 ,常用:
补充原则:
- 高不等于能预测:尤其是含趋势的时间序列,连“用时间做回归”也能得到很高的拟合 ;
- 训练误差只用于诊断过拟合,最终排名应看测试误差或滚动预测误差;
- 区间预测要报告覆盖率与平均区间宽度,而不是只给点预测;
- 不同量纲序列比较时,优先用相对误差或标准化 RMSE。
六、MATLAB 工具箱速查
| 任务 | 常用函数 |
|---|---|
| 平稳性/单位根 | adftest, kpsstest |
| ACF/PACF | autocorr, parcorr |
| ARIMA/SARIMA | arima, estimate, infer, forecast, simulate |
| 自动选阶(若可用) | arima 手动网格 + AIC/BIC;或 Econometrics 相关工具 |
| GARCH | garch, egarch, gjrgarch, estimate, forecast |
| VAR | varm, estimate, forecast, armairf |
| 指数平滑 | smoothdata, 或自写 Holt/Holt-Winters;ets(若版本支持) |
| 线性/非线性回归 | fitlm, fitnlm, predict, anova |
| PLS | plsregress |
| 随机森林/提升 | fitrensemble(Bag/LSBoost) |
| SVR | fitrsvm |
| 高斯过程等 | fitrgp, fitrkernel |
灰色预测、马尔可夫、Prophet 风格分解往往需要手写或外部工具;本门类对应页面会给出可运行的 MATLAB 实现思路。
七、常见误区
- 用随机打乱的方式划分时间序列,造成未来泄漏;
- 差分/季节调整用了全样本信息,再回头做“预测”;
- 只比较训练集 ,不报告测试集误差与残差检验;
- 忽视平稳性,直接对明显带趋势的序列拟合 ARMA;
- 过度追求复杂模型,却打不过季节朴素或简单指数平滑;
- 把相关当因果,在政策建议里夸大回归系数含义;
- 小样本上堆机器学习,方差巨大且不可复现。
八、小结与阅读顺序
预测的本质是:
在明确的信息集与损失函数下,给出可检验的外推,并诚实报告不确定性。
推荐阅读顺序:
- 回归预测(多元线性 → 非线性 → PLS)与指数平滑,建立基线思维;
- 单变量时间序列(AR → MA → ARMA → ARIMA → SARIMA → GARCH);
- 多变量 VAR、Prophet 分解;
- 灰色预测、马尔可夫及其组合;
- 机器学习预测(随机森林优先)与 SHAP 解释。
进入具体方法页后,按“直观理解 → 适用边界 → 原理 → MATLAB → 结果解释 → 误区”阅读,并亲手跑通示例代码。最终写进论文的,应是训练期外误差 + 诊断图 + 与基线的对比,而不是单一的拟合优度数字。