跳到主内容
@wquguru
术语统计基础

多重比较偏差 Multiple Comparisons Bias

2026-09-05 更新

定义#

多重比较偏差指检验做得越多,假阳性就越容易出现。在同一份数据上反复做检验,就像反复买彩票:买得越多中奖机会越大,但中的那次基本靠运气。

这在量化研究里尤其危险,因为筛因子、试参数、换股票池天生就是成百上千次比较。用 α=0.05\alpha = 0.05 做一次检验,即使被检验的关系根本不存在,也有 5% 的概率得到「显著」结果;做上百次,冒出几个显著结果几乎是必然的。如果只报告胜出的那几个,看起来就像有了发现。

公式#

NN 个序列两两比较时,比较次数是 N(N1)2\dfrac{N(N-1)}{2},在显著性水平 α\alpha 下预期的假阳性个数为

N(N1)2×α\frac{N(N-1)}{2} \times \alpha

Bonferroni 校正把门槛按检验次数收紧:

αnew=α检验次数\alpha_{new} = \frac{\alpha}{\text{检验次数}}

它保证整体犯第一类错误的概率仍受 α\alpha 控制,代价是相当保守,容易漏掉真实的弱信号。

算一笔账#

取 20 条互相独立的随机序列,两两算相关性。

比较次数 =20×19/2=190= 20 \times 19 / 2 = 190

α=0.05\alpha = 0.05 下,预期假阳性个数 =190×0.05=9.5= 190 \times 0.05 = 9.5。也就是说,明明全是随机噪声,平均也会跳出大约 9 到 10 对「显著相关」。

用 Bonferroni 校正,新门槛 =0.05/1900.000263= 0.05 / 190 \approx 0.000263,绝大多数噪声对就被挡在外面了。

把规模放大到 N=50N = 50:比较次数 =50×49/2=1225= 50 \times 49 / 2 = 1225,预期假阳性 =1225×0.0561= 1225 \times 0.05 \approx 61 个——如果不校正,你会捡回一整篮子假发现。

常见问题#

我只是多试了几个参数,也算吗?#

算。每一次换参数、换时间窗口、换股票池,都是一次比较,哪怕你没把它们写进报告。判断标准不是你最终报告了几个结果,而是你一共看了多少个结果。

Bonferroni 校正是不是万能的?#

不是,它偏保守。检验次数一多,门槛会压得极低,真实但微弱的信号会被一起挡掉。可以考虑控制错误发现率(FDR)、Holm-Bonferroni 或置换检验,它们在灵敏度和特异度之间更平衡。

有没有比事后校正更好的做法?#

有,而且更重要:事前设计。先基于逻辑而非数据挖掘提出假设,登记你尝试过的全部组合而不只是胜出的那个,用按时间滚动的样本外验证,并把最终留出集冻结到研究结束——每看一次就消耗掉一次真正的样本外机会。

相关术语

出自