halo 的技术博客

返回

你训练了一个 GARCH 模型预测波动率,样本外 MSE 是 0.00042;同事用简单移动平均,MSE 是 0.00051。你的更小,于是宣布”我的模型更准”。但这个结论站得住吗?0.00042 和 0.00051 的差距,究竟是模型真的更好,还是只是这段样本恰好对你友好——换一段时间就反过来?光比两个 MSE 数字大小,等于用一个点估计去下结论,完全忽略了估计的不确定性。

Diebold-Mariano(DM)检验就是给”谁更准”这个问题一个统计显著性判断。它不比单个 MSE,而是逐期计算两个模型的损失差,把它当成一条时间序列,检验这条序列的均值是否显著异于 0。核心难点在于:预测误差(尤其是多步预测)天然带自相关,直接用配对 t 检验会严重高估显著性。这篇文章用 500 期波动率预测的合成实验,把 DM 检验的逻辑、多步预测的陷阱、以及它相对天真检验的优势量化出来。

结论先放这:当两个模型真实预测能力完全相同、但做 3 步预测导致损失差有移动平均自相关时,天真的配对 t 检验错误拒绝率高达 26.6%——四次里有一次会错判”两模型有显著差异”;DM 检验用 HAC 长期方差加 Harvey-Leybourne-Newbold 小样本修正,把错误拒绝率精确压回名义的 5.0%。 在真有差异的实验里(GARCH vs 移动平均),DM 统计量 -10.6,铁证如山地判 GARCH 更优——但这个”铁证”是建立在正确处理了自相关之后的。

为什么不能直接比 MSE#

两个模型在同一段样本外数据上各自产生一串预测误差 etAe^A_tetBe^B_t。传统做法是分别算平均损失(MSE 或 MAE),比大小。问题是:平均损失是一个随机变量的样本估计,它有标准误。两个有标准误的数字比大小,你必须知道差距相对于标准误有多大——这正是假设检验要回答的。

先看两个波动率模型的预测轨迹。模型 A(GARCH 型)偏差小、噪声小;模型 B(移动平均型)因为滞后一期,在波动率快速变化时系统性跟不上:

两个波动率模型的预测轨迹局部放大:GARCH贴合真实,移动平均滞后

肉眼能看出模型 A(蓝)比模型 B(红)更贴合黑色的真实波动率,尤其在波动率快速上冲的地方,移动平均因为滞后总是慢半拍。但”看起来更准”不等于”统计上显著更准”——DM 检验要把这个直觉变成一个能报告 p 值的数字。

DM 检验的核心:损失差序列#

DM 的思路优雅到几乎显然。定义每一期的损失差:

dt=L(etA)L(etB)d_t = L(e^A_t) - L(e^B_t)

其中 L()L(\cdot) 是损失函数(平方损失、绝对损失、甚至任意你在意的损失都行——这是 DM 的一大优点)。如果两个模型预测能力相同,dtd_t 的期望应该是 0。于是”谁更准”就变成了检验 E[dt]=0E[d_t] = 0 这个原假设。

看损失差序列 dt=MSEAMSEBd_t = \text{MSE}_A - \text{MSE}_B

损失差序列:负值表示模型A当期更准,平均损失差明显小于0

大部分柱子是蓝色(dt<0d_t < 0,模型 A 当期更准),平均损失差(绿色虚线)明显在 0 以下。但注意柱子有正有负——模型 A 不是每一期都赢,有些期反而模型 B 更准。这种逐期的胜负交替正是为什么需要统计检验:平均下来 A 更好,但这个”平均优势”有多可靠?

DM 统计量就是损失差均值除以它的标准误:

DM=dˉLRV^(dˉ)/n\text{DM} = \frac{\bar{d}}{\sqrt{\widehat{\text{LRV}}(\bar{d})\,/\,n}}

关键在分母的长期方差 LRV\text{LRV}——它必须用 HAC 估计(又见 Newey-West),因为多步预测的损失差有自相关。

对上面的 GARCH vs 移动平均实验,h=1h=1 时 DM 统计量是 -10.6(负号表示模型 A 损失更小、更优),远超 -1.96 的临界值。这次”模型 A 更准”的结论是统计显著的——但这个显著性是在正确估计了标准误之后才成立的。

多步预测的陷阱:天真 t 检验会失控#

hh 步预测(预测未来 hh 期)的预测误差有一个数学必然的性质:即使模型正确,误差也会呈现 h1h-1 阶的移动平均自相关。因为相邻的预测窗口重叠,误差里共享了信息。这会污染损失差序列的自相关结构。

如果无视这一点,用普通配对 t 检验(假设 dtd_t 独立同分布),随着 hh 增大,检验统计量会越来越离谱:

多步预测h越大,损失差自相关越强,天真配对t统计量绝对值虚高

红线(天真配对 t)随 hh 增大绝对值持续膨胀,因为它把重叠窗口造成的自相关误当成了独立信息,有效样本量被严重高估。蓝线(DM 含 HAC + HLN 修正)保持稳定——它正确地把 h1h-1 阶自协方差计入了长期方差,标准误随 hh 增大而增大,抵消了自相关的膨胀效应。

这个差距在实盘里很致命:做多步波动率预测、多步收益预测、多步宏观 nowcasting 时,如果用错检验,你会系统性地高估”我的模型显著更好”的把握。

4000 次模拟:谁能守住 5% 的名义水平#

最硬核的检验:让两个模型真实预测能力完全相同(损失差纯粹是噪声,但注入 h=3h=3 的移动平均自相关),重复 4000 次,看两种检验错误拒绝原假设的比例。理想情况下应该恰好等于名义的 5%。

两模型等优时的统计量分布:天真t错误拒绝26.6%,DM精确回到5.0%

结果一目了然:

  • 天真配对 t 检验:分布远胖于标准正态,错误拒绝率 26.6%——两个明明一样好的模型,四次里有一次被判”显著不同”。这种检验会让你反复”发现”根本不存在的模型优势。
  • DM 检验(HAC + HLN 修正):分布紧贴标准正态 N(0,1),错误拒绝率 5.0%——精确命中名义水平。

黑色曲线是理论上的标准正态。DM 的经验分布几乎完美重合,而天真 t 的尾巴肥得吓人。这张图证明了 DM 不是”锦上添花的严谨”,而是”不用就会系统性犯错”的必需品。

四个实盘会踩的坑#

一、损失函数必须匹配你的真实目标。 DM 允许任意损失函数,这是优点也是陷阱。你用 MSE 判 A 更优,换成 MAE 可能判 B 更优——因为 MSE 对大误差惩罚更重,偏爱在极端值上表现好的模型。选损失函数不是技术细节,而是”你到底在乎什么”的经济判断。预测波动率用于期权定价,和用于风险预算,该选的损失函数就不同。

二、DM 不适合比较嵌套模型。 如果模型 B 是模型 A 的特例(比如 A 是 B 加了个变量),在原假设下 DM 统计量的标准正态分布不再成立,会导致检验失效。这种情况要用 Clark-West 检验或 Giacomini-White 的条件预测能力检验。DM 是为非嵌套模型比较设计的。

三、样本外窗口太短时,HLN 修正也救不全。 Harvey-Leybourne-Newbold 的小样本修正显著改善了短样本表现,但当样本外只有几十个观测、预测步长又大时,h1h-1 阶自协方差本身估不准,长期方差估计不稳。此时 DM 统计量方差偏大,结论要打折看,或改用 bootstrap 版本的 DM。

四、别用 DM 做多模型的”选秀锦标赛”。 两两做 DM 检验比较 20 个模型,就是 190 次检验,多重比较问题会让你必然”发现”某些假的显著差异。要在多个模型间选最优且控制整体错误率,该用 Model Confidence Set(Hansen-Lunde-Nason)或对 DM 的 p 值做 FDR 校正,而不是挑 t 值最大的那对宣布胜利。

总结#

Diebold-Mariano 检验把”两个预测模型谁更准”从一个比大小的直觉问题,变成一个有统计显著性的推断问题。它的机制清晰:构造损失差序列,用 HAC 长期方差正确处理多步预测的自相关,配 HLN 修正改善小样本表现。4000 次模拟给出的对比很残酷——两模型真实等优时,天真配对 t 检验的错误拒绝率 26.6%,DM 精确守住 5.0%。

它的用法可以一句话概括:任何时候你要说”模型 A 比模型 B 预测得更准”,先把这句话翻译成”损失差序列的均值显著小于 0”,然后用 DM 检验去验证——尤其当你做的是多步预测时,天真的 MSE 比大小或配对 t 检验会让你反复被自相关欺骗。 更小的 MSE 只是必要条件,DM 显著才是充分条件。

参考文献#

  1. Diebold, F. X., & Mariano, R. S. (1995). Comparing Predictive Accuracy. Journal of Business & Economic Statistics, 13(3).
  2. Harvey, D., Leybourne, S., & Newbold, P. (1997). Testing the Equality of Prediction Mean Squared Errors. International Journal of Forecasting, 13(2).
  3. Clark, T. E., & West, K. D. (2007). Approximately Normal Tests for Equal Predictive Accuracy in Nested Models. Journal of Econometrics, 138(1).
  4. Hansen, P. R., Lunde, A., & Nason, J. M. (2011). The Model Confidence Set. Econometrica, 79(2).
Diebold-Mariano 检验:两个预测模型谁更准,光比 MSE 不算数
https://blog.halo26812.eu.org/blog/diebold-mariano-test
Author halo
Published at 2026年7月26日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨