AB 测试是产品迭代、运营策略优化中非常主流的实验方法。简单来说就是将用户做随机分流,A 组作为对照组,沿用原有版本;B 组作为实验组,上线新版本策略。通过两组数据对比,判断新版本是否能够带来真实业务收益。
很多人做完 AB 实验,只简单对比表面数据差异就直接下结论,很容易被随机波动误导,得出错误的上线决策。
一、第一步:搭建 AB 测试指标体系
正式分析数据之前,就要提前定义好整套指标,避免实验结束之后反复回溯,挑选好看的数据作为结论。指标分为核心主指标、辅助指标、负向观测指标三大类,一次实验建议仅设置 1‑2 个主指标,规避多重检验带来的结果偏差。
核心主指标是本次实验的业务目标,也是版本是否全量上线的核心判断依据。电商业务常见的主指标有下单转化率、人均支付 GMV;APP 产品常见主指标包含点击率、用户留存率、人均使用时长;表单类场景常用页面提交转化率。选择指标优先使用转化率这类比率指标,或是人均 GMV 这类均值指标,不建议直接使用总 UV、总订单等绝对总量,总量会受样本规模干扰,不适合组间对比。
辅助指标用于解释主指标变化背后的业务链路,还原发生了什么。举个例子,如果主指标是支付转化率,辅助指标就可以配置商品浏览点击率、加购率、支付页跳转成功率,用来拆解转化链路的好坏。
负向观测指标用来监控新版本带来的潜在副作用,是风险防控的关键。有些迭代可以拉高主指标,但会带来其他负面影响,例如弹窗提升点击,却造成页面退出率大幅上涨;功能优化提升留存,同时引发 APP 崩溃率上涨。即便主指标得到显著正向结果,如果负向指标出现明显恶化,该版本依旧不能直接全量发布。
设置指标有两条重要原则。第一,主指标必须在实验启动前就确定,不能实验结束后反向挑选表现优秀的指标充当结论。第二,对照组与实验组的指标口径必须完全统一,埋点逻辑、统计时间窗口、数据过滤规则全部保持一致。
二、原始数据校验:先确认实验本身是否有效
拿到实验数据,不要直接计算指标做对比。如果实验流程本身存在缺陷,再好看的统计显著性也没有参考价值,我们需要先完成三层校验。
第一是流量分配校验。假设预设分流比例为 50 比 50,两组实际样本规模应当接近该比例。如果两组样本差距悬殊,例如对照组 10 万用户,实验组仅有 2 万用户,说明分流逻辑或者埋点上报出现 bug,该组实验直接作废。
第二是样本随机性校验。需要核对两组用户的基础特征分布,包括设备类型、新老用户占比、地域分布。一旦分组天然出现特征不均衡,代表样本被污染,实验结论不具备可信度。
第三是实验时长与样本量校验。不要看到短期数据向好就终止实验,过早停止会高估版本收益。实验周期最好覆盖一到两个完整自然周,抹平工作日和周末的用户行为差异。同时样本规模需要达到实验前预先计算的最小样本量,样本不足,随机噪声会极大干扰结果。只跑半天就看到实验组转化率上涨,就决定上线版本,大概率只是随机运气带来的假象。
三、基础数据计算,看懂组间差异
以转化率场景举例,对照组 A 总样本为 na,转化数量 ca,转化率 pa 等于 ca 除以 na;实验组 B 总样本 nb,转化数量 cb,转化率 pb 等于 cb 除以 nb。
绝对提升等于 pb 减去 pa,代表两组直接相差的百分点;相对提升等于 (pb‑pa)/pa,代表相对对照组的涨幅。举个实例,对照组转化率 10%,实验组转化率 12%,绝对提升为 2 个百分点,相对提升为 20%。
仅仅看提升幅度不足以判断版本好坏,20% 的涨幅有可能只是随机波动,这时就需要引入统计显著性做进一步判断,这也是 AB 测试分析中最核心的环节。
四、统计显著性如何判断?核心概念通俗解读
先明确原假设 H₀:实验组与对照组不存在真实差异,观测得到的数据差异全部来源于随机波动。
P 值,也就是 p‑value,代表在原假设成立的前提下,观测到当前或者更大幅度差异发生的概率。P 值越小,就代表两组不存在真实差异的可能性越低。行业通用标准阈值为 p 小于 0.05,代表统计显著,意味着误判的概率小于 5%。
95% 置信区间 95% CI,代表真实业务提升有 95% 的概率落在该区间范围之内。如果置信区间全部大于 0,代表显著正向;全部小于 0,代表显著负向;区间同时覆盖正数和负数,也就是跨过 0,则代表结果不显著。P 值和 95% 置信区间二者等价,分析时任选其一就可以。
统计功效 Power,业务上建议大于等于 0.8。功效的含义是,当新版本确实存在真实收益时,实验可以正确识别出该差异的概率。功效不足本质就是样本量不够,即便版本本身有效,实验也很容易输出不显著的结论。实验前做样本量预估,就是为了保障统计功效。
不同指标对应不同检验方法。转化率、点击率这类比率指标,适用双比例 Z 检验或者卡方检验;人均 GMV、人均使用时长这类均值指标,适用双样本 t 检验。实际工作中不需要手动计算,各类 AB 实验平台、在线 AB 计算器、Python scipy 库,只需要输入样本、转化相关数据,就可以直接输出 p 值与置信区间。
一共有四种常见实验结果场景。第一种是显著正向,p 值小于 0.05,95% 置信区间整体大于 0,业务结论为 B 版本显著优于 A,可以考虑全量上线。第二种是显著负向,p 值小于 0.05,95% 置信区间整体小于 0,业务结论为 B 版本效果差于 A,放弃该版本。第三种是不显著,但实验组数据更高,p 值大于等于 0.05,95% 置信区间跨过 0,业务结论为数字层面看起来变好,但噪声干扰大,证据不足,不能判定版本有效,需要补充样本继续运行实验。第四种是不显著,实验组数据略低,p 值大于等于 0.05,95% 置信区间跨过 0,业务结论为没有证据证明新版本存在危害,同样也无法证明版本收益,不建议上线。
这里有两点重要提醒。不显著不等于没有效果,只代表当前样本规模还不足以证明存在效果;统计显著也不等于业务收益巨大,显著仅仅代表差异不是随机波动,最终还要看实际提升幅度。举个例子,实验统计显著,但相对提升只有 0.3%,业务收益微乎其微,是否上线需要结合开发维护成本综合评估。
五、可直接套用的完整实操分析流程
第一步回顾实验设计,核对预先定义的主指标、分流比例、实验周期,确认埋点没有故障,流量分配符合预期。
第二步完成数据清洗过滤,剔除测试账号、异常设备,校验两组用户结构分布是否均衡。
第三步分别计算主指标、辅助指标、风险指标,算出绝对提升和相对提升。
第四步开展统计检验,获取 p 值和 95% 置信区间。
第五步开展综合业务判断。统计显著正向的情况下,再核对链路辅助指标逻辑是否通顺,确认负向风险指标没有恶化,综合评估是否全量;统计结果不显著,不要强行解读结论,评估是否延长实验周期、扩大样本;显著负向,直接下线该版本。
第六步输出实验结论文档,归档实验信息沉淀到实验知识库。
六、AB 测试高频踩坑点
第一个坑,实时盯数据,一旦看到 p 小于 0.05 就立刻停止实验。反复查看中间结果,看到显著就终止,会造成 p 值膨胀,高估实验收益。正确做法是实验前确定最小样本量以及实验周期,跑满之后再读取结果。
第二个坑,同时观测十几个指标,挑选 p 小于 0.05 的指标对外输出结论,也就是多重检验问题。检验的指标越多,假阳性发生概率就会快速上涨,同时观测 10 个指标,至少出现一次误判的概率接近 40%。我们需要严格区分主指标和辅助指标,上线决策只参考预先定义的主指标,辅助指标仅用来解释现象原因。
第三个坑,混淆统计显著和业务显著。p 值很小代表统计显著,但提升幅度仅有 0.2%,业务层面几乎没有价值。统计只是工具,最终决策要落地业务收益,同时权衡开发维护成本。
第四个坑,样本量不足强行下结论。样本规模很小,即便看到巨大的相对提升,也大多属于随机波动,正式实验之前一定要完成样本量预估。
第五个坑,忽略负向观测指标。主指标虽然显著变好,但崩溃率、页面退出率等指标恶化,带来隐性业务损失,这种版本不适合全量发布。
七、Python 简易代码示例,转化率 AB 检验演示
python
from scipy.stats import chi2_contingency
# A对照组:总10000,转化1000;B实验组:总10000,转化1200
table = [
[1000, 10000-1000],
[1200, 10000-1200]
]
chi2, p_value, dof, expected = chi2_contingency(table)
print(f\"P值={p_value:.4f}\")
if p_value < 0.05:
print(\"统计显著\")
else:
print(\"不显著\")
八、总结
AB 测试数据分析,并不是简单对比两组数字高低。完整分析链路依次为实验有效性校验,指标计算,统计显著性判断,再结合辅助指标、风险指标完成业务决策。
统计显著性解决的核心问题,就是帮我们区分,结果是新版本带来真实变化,还是单纯用户随机波动。记住两条底线:第一,实验启动前就定好主指标、样本量与实验周期,禁止事后反向挑选指标;第二,结果不显著,代表证据不足,不能宣称新版本具备效果。