定义#
多重比较偏差指检验做得越多,假阳性就越容易出现。在同一份数据上反复做检验,就像反复买彩票:买得越多中奖机会越大,但中的那次基本靠运气。
这在量化研究里尤其危险,因为筛因子、试参数、换股票池天生就是成百上千次比较。用 做一次检验,即使被检验的关系根本不存在,也有 5% 的概率得到「显著」结果;做上百次,冒出几个显著结果几乎是必然的。如果只报告胜出的那几个,看起来就像有了发现。
公式#
做 个序列两两比较时,比较次数是 ,在显著性水平 下预期的假阳性个数为
Bonferroni 校正把门槛按检验次数收紧:
它保证整体犯第一类错误的概率仍受 控制,代价是相当保守,容易漏掉真实的弱信号。
算一笔账#
取 20 条互相独立的随机序列,两两算相关性。
比较次数 。
在 下,预期假阳性个数 。也就是说,明明全是随机噪声,平均也会跳出大约 9 到 10 对「显著相关」。
用 Bonferroni 校正,新门槛 ,绝大多数噪声对就被挡在外面了。
把规模放大到 :比较次数 ,预期假阳性 个——如果不校正,你会捡回一整篮子假发现。
常见问题#
我只是多试了几个参数,也算吗?#
算。每一次换参数、换时间窗口、换股票池,都是一次比较,哪怕你没把它们写进报告。判断标准不是你最终报告了几个结果,而是你一共看了多少个结果。
Bonferroni 校正是不是万能的?#
不是,它偏保守。检验次数一多,门槛会压得极低,真实但微弱的信号会被一起挡掉。可以考虑控制错误发现率(FDR)、Holm-Bonferroni 或置换检验,它们在灵敏度和特异度之间更平衡。
有没有比事后校正更好的做法?#
有,而且更重要:事前设计。先基于逻辑而非数据挖掘提出假设,登记你尝试过的全部组合而不只是胜出的那个,用按时间滚动的样本外验证,并把最终留出集冻结到研究结束——每看一次就消耗掉一次真正的样本外机会。