p 值与统计显著性,A/B 测试的结果到底能信多少

2026-03-08心理测试

以前做电商数据分析时,参与开发 A/B 测试平台。有次一个产品经理跑过来跟我说:新版本的商品详情页转化率提升了 10%,p 值是 0.03,可以上线了吧?

我说等等,你这个测试跑了多久?他说两天。样本量多少?版本 A 有 5000 人,版本 B 有 5000 人。我说那再跑两天看看。

四天之后结果回来了,p 值变成了 0.08。

产品经理很困惑:为什么数据更多了反而不显著了?

这个问题背后,藏着很多人对 p 值的误解。我刚好在那段时间仔细研究了这个问题,算是把自己从"p < 0.05 就是结论"的粗暴思维里拉了出来。

p 值的定义,跟你想的不一样

先看 p 值的准确定义:在原假设(H₀)为真的前提下,观察到当前结果或更极端结果的概率

翻译成人话:假设你的新版本其实屁用没有(跟旧版本一模一样),然后你做了 A/B 测试。p 值就是"你碰巧看到当前这么大差异的概率"。

所以 p = 0.03 的意思是:如果新版本实际上没有效果,你看到这个差异的概率是 3%。

注意这个定义的微妙之处。它不是"新版本有效的概率是 97%"。也不是"结果虚假的概率是 3%"。它只告诉你:在原假设成立的情况下,出现当前结果的概率有多大。

这两个概念之间的区别,是很多统计误用的根源。

举一个极端的例子让你感受一下差异。我掷两个骰子,掷出两个 6。然后我说:原假设是两个骰子是公平的,出现两个 6 的概率是 1/36 ≈ 0.028,p < 0.05,所以骰子有问题。这就是把 p 值当成了"原假设为假的概率"。实际上两个 6 完全可能在公平骰子上发生,p 值只是告诉你这种情况不常见,但没有给出任何骰子有问题的证据强度。

一个让我翻车的数据分析经历

说回前面那个案例。为什么样本量增加后 p 值反而从 0.03 变 0.08 了?

原因是数据在第二天到第四天之间发生了"均值回归"。第一天的数据里,版本 B 碰巧迎来了高转化用户的流量——因为那个时段是白天,而版本 B 分流到的用户正好是活跃用户居多。第二天之后,两个版本的流量结构趋于平衡,差异就缩小了。

这在大规模 A/B 测试里非常常见。前两天的数据往往被"新奇效应"污染——用户看到新东西会忍不住点一下。几天后新鲜感过了,效果就回落了。

从那以后我给自己定了一个规则:A/B 测试至少要跑满一个完整的业务周期(比如一周,包含周末和工作日),而且在开始前就确定好要观察的主要指标。跑完数据再选指标,属于数据挖掘(p-hacking),做出来的结果基本不可信。

p-hacking 的五种常见姿势

p-hacking 指的是"通过调整数据分析方式,直到得到 p < 0.05 的结果"。这不是恶意的造假,很多时候是不自觉地选择了"让结果更好看"的分析方法。

最常见的几种:

第一种:跑完数据再选指标。 你测了转化率、点击率、客单价、复购率……发现转化率的 p 值是 0.04,其他的都是 0.3、0.5。然后你报告说"新版本显著提升了转化率"。但你没提你测了多少个指标。

如果测一个指标的显著性阈值是 α=0.05,测 20 个独立指标的话,至少一个指标"碰巧显著"的概率是 1 - 0.95²⁰ ≈ 64%。

第二种:提前停止实验。 每天看一次 p 值,发现 p < 0.05 就停止实验宣布胜利。这是在故意钻空子。因为数据本身有随机波动,你多测几天总会碰到一次 p < 0.05。

可以这么理解:你每天掷 100 次硬币,记录正面比例和 p 值(原假设是硬币公平)。虽然硬币是公平的,但连续测 7 天,总有一天的 p 值可能小于 0.05。你如果只报告那天的结果,就是在 p-hacking。

第三种:选择有利的时间窗口。 比如测了 3 月 1 日到 3 月 31 日的数据,结果不显著。然后你发现 3 月 15 日到 3 月 31 日的数据显著——"因为前半个月是产品调整期,数据不稳定"。这就属于事后选窗口,是不可接受的。

第四种:异常值处理的双标。 对照组里去掉异常值,实验组里保留对结果有利的异常值。或者反过来。这种选择性删除是最隐蔽的 p-hacking,因为"去掉异常值"听起来很合理。

第五种:分组方式不断换。 按年龄段分不显著,按性别分也不显著,按地区分布显著了。然后你说"新版本在华东地区有显著效果"。你试了多少种分组方式?没记录就是无效。

效应量比 p 值重要

p 值只告诉你"有没有差异",但不告诉你"差异有多大"。

p = 0.04 可能对应两种情况:

  • 转化率从 5.0% 提升到 5.5%(相对提升 10%,商业上有意义)
  • 转化率从 5.0% 提升到 5.01%(相对提升 0.2%,商业上无意义)

两者的 p 值都可以小于 0.05——只要样本量足够大,极其微小的差异也能达到统计显著。这就是"统计显著 ≠ 实际显著"的意思。

效应量(Effect Size)衡量的就是差异的大小。常见的有 Cohen's d、Cohen's h 等。它们不受样本量的影响。

对于 A/B 测试,我习惯同时看三个数字:

  1. p 值:判断差异是否可能是随机波动
  2. 效应量:判断差异的实际大小
  3. 置信区间:看差异的波动范围,比如"提升 0.3% 到 2.1%"

如果 p < 0.05 但效应量接近零,我就不上线。反过来,效应量大但 p > 0.05,说明样本量不够,继续收集数据。

贝叶斯方法,另一种思路

p 值的框架是频率学派(Frequentist)的。另一种思路是贝叶斯统计。

贝叶斯方法直接回答你想知道的问题:"新版本比旧版本好的概率是多少?"

它需要先假设一个"先验概率"——你觉得新版本有效的可能性有多大。然后根据数据更新这个概率,得到"后验概率"。具体说就是:你收集数据前觉得新版本有效的可能性只有 10%,看到数据后更新到 85%。

贝叶斯方法的一个实际优势是:你可以在测试过程中随时看结果,不需要等样本量达到某个预设值。因为贝叶斯不依赖"反复实验"的假设。

但贝叶斯也有问题。它需要指定先验分布,而先验的选择会影响结果。如果你选了一个特别保守的先验,即使数据很支持新版本,后验概率也不会太高。反过来,选了一个不恰当的先验也可能让结果过度乐观。

我在实际项目里给团队的建议是:A/B 测试用频率学派的 p 值做决策筛选,用贝叶斯做决策参考。两个方法的结果如果一致,信心就强很多。

写在最后

p 值是一个有用的工具,但它被滥用的程度远超它的实际价值。p < 0.05 不是"发现"的通行证,更多时候它只是告诉你"可以再多看两眼"。

如果你在做心理测试或者性格评估(比如 MBTI、大五人格测试),这些量表背后的信效度研究里也用到了 p 值和效应量。但量表的结果解读比 p 值复杂得多——还涉及到常模、信度系数、社会赞许性等概念。我的建议是:不要因为某个性格测试报告的 p 值"显著"就以为它一定准。MBTI 性格测试可以作为一个了解自己的起点,但不必把它当成科学真理。