1. AB实验中的卡方检验核心认知
卡方检验在AB实验中扮演着关键角色,但很多从业者对其两种主要应用场景——适合度检验(Goodness-of-Fit)与独立性检验(Test of Independence)的理解存在混淆。这两种方法虽然都基于卡方统计量,但解决的问题和适用场景截然不同。
适合度检验用于判断样本分布是否符合预期理论分布。比如在AB实验中,我们可能想知道实验组和对照组的流量分配是否确实符合预设的50%-50%比例。而独立性检验则用于分析两个分类变量之间是否存在关联性,例如检验广告版本(A/B)与用户转化行为(点击/未点击)是否相互独立。
关键区别:适合度检验是单变量分析,比较观察值与理论值;独立性检验是双变量分析,检验变量间的相关性。
2. 适合度检验的实战应用
2.1 SRM检查的核心原理
样本比例不匹配(Sample Ratio Mismatch,SRM)是AB实验中常见问题。假设我们计划将用户随机分配到实验组和对照组,预期比例为1:1,但实际观察到的分配可能是53%-47%。这时就需要适合度检验来判断这种差异是否在随机波动范围内。
计算公式为: χ² = Σ[(观察值 - 期望值)² / 期望值]
以1000次访问为例:
- 预期分配:实验组500,对照组500
- 实际观察:实验组530,对照组470 计算得: χ² = (530-500)²/500 + (470-500)²/500 = 3.6
查卡方分布表(df=1),p值约为0.058,若显著性水平α=0.05,则不能拒绝原假设,认为分配比例正常。
2.2 实操中的注意事项
- 样本量要求:每个分组的期望频数应≥5,否则考虑Fisher精确检验
- 多重检验问题:同时检查多个指标时,需进行p值校正(如Bonferroni校正)
- 连续监测风险:避免反复进行SRM检查导致假阳性率升高
3. 独立性检验的深度解析
3.1 广告优化案例研究
假设我们测试两个广告版本:
- 版本A:展示给1000用户,点击200次
- 版本B:展示给1000用户,点击150次
构建列联表:
| 版本 | 点击 | 未点击 | 总计 |
|---|---|---|---|
| A | 200 | 800 | 1000 |
| B | 150 | 850 | 1000 |
| 总计 | 350 | 1650 | 2000 |
期望频数计算: E_A点击 = (1000×350)/2000 = 175 E_A未点击 = (1000×1650)/2000 = 825 同理计算B版本期望值
χ² = Σ[(O-E)²/E] = (200-175)²/175 + ... ≈ 7.94
查表(df=1)得p≈0.005,拒绝原假设,认为广告版本与点击率相关。
3.2 高阶应用技巧
- Yates连续性校正:当任一单元格期望频数<5但≥1时使用
- 效应量测量:除p值外,应报告Cramer's V或Phi系数
- 稀疏数据处理:考虑精确检验或似然比检验
4. 常见误区和解决方案
4.1 错误类型识别
混淆检验目的:
- 错误案例:用独立性检验验证流量分配比例
- 正确做法:SRM检查必须使用适合度检验
忽略假设条件:
- 错误案例:小样本直接使用卡方检验
- 正确方案:改用Fisher精确检验
4.2 实战排查清单
数据预处理:
- 检查是否有零频数单元格
- 验证样本独立性假设
结果解读:
- 区分统计显著与业务显著
- 结合置信区间分析
工具选择:
- Python: scipy.stats.chisquare(适合度)
- R: chisq.test()(自动适配两种检验)
5. 进阶应用场景
5.1 多变量扩展分析
当涉及多个实验组时(如A/B/C测试),检验统计量的自由度随之变化:
- k个组别的适合度检验:df = k-1
- r×c列联表的独立性检验:df = (r-1)(c-1)
5.2 长期监测方案
对于持续运行的AB实验系统,建议:
- 建立SRM自动化监测流程
- 设置异常阈值(如p<0.001触发警报)
- 保留历史检验结果进行趋势分析
在实际项目中,我发现很多团队卡方检验使用不当的根本原因是对抽样随机性理解不足。建议在实验设计阶段就进行统计功效分析,确保样本量足够检测到预期的效应差异。对于关键业务指标,可以考虑采用更稳健的Bootstrap方法作为补充验证。