一项测试没有发现稳定差异,并不意味着多做几次、换几个指标就一定能找到真实效果。相反,如果同一批数据被反复切分、比较和筛选,即使所有方案实际上没有差别,也可能偶然出现一个看起来“显著”的结果。只展示这个最好看的结果,就会把随机波动包装成可靠发现。
本文用20次独立检验的简化例子,逐步计算至少出现一次假阳性的概率,并介绍预先指定主指标、完整披露、Bonferroni校正和独立复核。示例只用于理解概率机制,不代表任何真实产品、服务或研究结论。
一、一次检验中的5%到底表示什么
先设定一个理想化场景:甲、乙两个方案实际上效果完全相同;检验方法和数据都符合要求;我们把显著性水平设为 α = 0.05。
在这些前提下,长期重复同类检验时,即使真实差异为零,仍约有5%的检验会因为随机波动越过阈值,形成假阳性,也就是把“没有真实差异”误判成“存在差异”。
这不表示某一次得到 p = 0.04 后,“结论有96%的概率是真的”。p值是在零假设及模型成立的条件下,观察到当前或更极端数据的概率度量,不是零假设为真的概率,更不是结果可以复现的保证。
单独做一次事先设计好的检验,5%的误报风险已经需要谨慎解释;当检验次数增加而阈值不变时,问题会进一步放大。
二、20次独立检验为何有约64%的机会至少误报一次
假设我们同时查看20个彼此独立的指标,而且这些指标实际上都没有真实差异。每个检验不误报的概率是:
1 - 0.05 = 0.95
20次都不误报的概率是:
0.95^20 ≈ 0.3585
因此,20次中至少出现一次假阳性的概率为:
1 - 0.95^20 ≈ 1 - 0.3585 = 0.6415
也就是约 64.15%。这个结果并不是说每批测试一定有假阳性,而是说在上述独立、同阈值、所有零假设都成立的简化条件下,“至少误报一次”已经比“不误报”更可能。
还有一个容易混淆的量:20次检验的假阳性期望个数是:
20 × 0.05 = 1
“期望有1个”不等于“至少有1个的概率是100%”。前者是长期平均个数,后者是一次检验集合中是否出现误报的概率,两者不能互换。
三、真实分析为何可能比“20个指标”更隐蔽
多重比较不只发生在一张表里列出20个指标。下面这些选择也会悄悄增加实际尝试次数:
- 同一指标换多个时间窗口,例如7天、14天、30天分别计算;
- 把总体数据再按年龄、地区、设备或活跃度反复分组;
- 尝试多种排除异常值的规则,只保留最好看的版本;
- 比较多个模型、多个参数或多个起止日期;
- 先看结果,再把偶然突出的指标改称“核心指标”。
如果分析者做了大量尝试,却只公布其中一个成功结果,读者看到的就不是“一次检验”,而是“许多机会中被挑出的最佳一次”。这与正常的探索并不冲突:探索可以帮助提出新问题,但探索性发现应明确标注,并用新数据确认,不能事后伪装成事先唯一的验证目标。
四、一个完整例子:一个p值0.03为何仍不足以下结论
假设某团队比较两个页面版本,同时检查20个指标。真实情况下两个版本并无差异,但结果中有一个指标得到 p = 0.03,其余19个没有越过0.05。
如果只看这个指标,0.03小于0.05,容易被写成“发现显著提升”。但团队是在20次机会中挑中了这一次。按照前面的简化模型,即使全部没有真实效果,也有约64.15%的机会至少出现一个小于0.05的结果。
正确报告至少应说明:一共检验了多少个指标;这个指标是否在看数据前被指定为唯一主指标;其余结果是什么;差异的实际大小和不确定区间是多少;是否在新样本中复现。
若这个指标确实在实验前被明确指定为唯一主指标,另外19项只是清楚标注的探索分析,那么主检验与事后从20项中挑选最小p值不是同一件事。关键不在于最终用了哪个名称,而在于选择规则是否在看到结果之前固定并留下可核验记录。
五、Bonferroni校正怎样控制整组误报
一种简单方法是把整组允许的5%错误预算分给每个检验。若要同时检查20个假设,Bonferroni阈值为:
0.05 ÷ 20 = 0.0025
这时单个结果需要小于0.0025,才按这套规则认定为通过整组检验。例子中的 p = 0.03 虽然小于0.05,却大于0.0025,因此不能作为经过20项多重比较校正后的显著结果。
Bonferroni方法利用“任一事件发生的概率不超过各事件概率之和”来控制整组至少一次假阳性的概率,所以不要求20项必须相互独立。不过,当指标很多且彼此高度相关时,它可能比较保守,更容易错过真实但较弱的效果。
现实分析还可能使用其他方法。例如,控制家族错误率关注“整组是否至少错一次”;控制错误发现率则关注“被宣布为发现的结果中,预计有多大比例是误报”。两类目标不同,不能只挑最容易得到好看结果的方法。应根据决策代价预先选择,并完整说明。
六、校正不是万能修复工具
多重比较校正只能处理特定的重复检验错误,不能自动修复以下问题:
- 数据记录错误、样本选择偏差或大量缺失;
- 在结果出来后反复改变假设和排除规则;
- 样本过小,导致估计极不稳定;
- 只报告p值,不报告效果大小和不确定区间;
- 把统计上的小差异夸大成实际上的重要改变;
- 在同一批数据上发现规律,又用同一批数据声称完成独立验证。
一个极小的p值也可能对应很小、没有实际价值的差异。相反,一个未越过阈值的结果也不等于证明“完全没有差异”。统计判断必须与样本量、效果大小、测量质量和现实后果一起解释。
七、五个常见误区
误区一:只要有一个显著结果就说明方案有效
先问总共尝试了多少种指标、分组、模型和时间窗口。没有总尝试次数,单个成功结果的证据强度无法正确评估。
误区二:p值0.03等于结论有97%概率为真
这是对p值含义的误读。p值不是“结论为真”的后验概率,也不包含研究设计之外的证据质量。
误区三:20个指标相关,所以完全不用校正
相关性会改变精确的累计概率,但不会自动让选择性报告消失。应使用与相关结构和错误控制目标匹配的方法,而不是直接忽略多重性。
误区四:校正后不显著,就删掉其他19个指标
删除已做过的分析不会让它们从选择过程里消失。完整披露和预先记录比事后改写故事更重要。
误区五:重复在同一数据上调整,等于独立复现
同一数据上的再切分仍可能继承原来的偶然性。真正的确认最好使用新的时间段、新样本或预先冻结的验证集。
八、一套可复核的七步检查流程
面对“我们测试后发现明显提升”之类的说法,可以按以下顺序核验:
1. 列出全部尝试,包括指标、分组、时间窗口、模型和排除规则。
2. 确认哪些假设在看结果前被指定为主假设,哪些只是探索。
3. 判断哪些检验属于同一个需要共同控制错误的“假设家族”。
4. 查看使用了哪种校正方法、选择理由和调整后的阈值或结果。
5. 同时检查效果大小、置信区间、样本量与最坏情况,而不是只看星号或p值。
6. 查找全部未显著结果和中途修改,避免只看到筛选后的赢家。
7. 要求在新数据上按事先固定的规则复核,再决定是否扩大使用。
这套流程的重点不是拒绝所有探索,而是把“提出线索”和“确认结论”分开。探索阶段可以广泛寻找模式;确认阶段必须减少自由选择,明确错误预算,并让别人能够复算。
九、理性决策与反诈提示
一些夸大宣传会说“系统从海量指标中找到唯一机会”“经过上百种模型筛选,命中率显著”,却不公开失败尝试、完整样本、校正规则和独立验证。尝试越多,本身并不会让最终挑出的结果更可靠;如果只展示赢家,反而更需要警惕偶然命中和选择性报告。
遇到以“统计显著”“内部模型验证”为理由催促付款、转账、下载陌生软件或提供验证码的情况,应立即暂停。先通过独立渠道核验机构和数据,索取完整方法与全部结果。无法提供总尝试次数、原始口径和独立复核,只给截图、星号或单个百分比,不应成为支付或授权依据。本文不构成投资、赌博或收益建议,也不提供任何下注或获利服务。
总结
当每次检验的假阳性率为5%时,20次独立检验至少出现一次误报的概率约为 1 - 0.95^20 = 64.15%。这正是多重比较的核心风险:尝试机会增多后,偶然出现一个好看结果并不稀奇。
可靠做法是事先指定主要问题,记录全部分析路径,完整披露成功与失败结果,选择与目标匹配的错误控制方法,并在新数据上复核。看到一个“显著”结果时,先问“总共试了多少次”,往往比只看那个最小的p值更有判断价值。
