第4章 实验分组与对照组的可比性验证:分流均匀性检查、AA检验结果判定、基线稳定性
4.1 适用场景
本流程适用于以下三类典型场景,当任意一项满足时即应启动可比性验证:
- 实验刚完成分流:用户被随机分入实验组与对照组后,需确认两组在核心指标上无先验差异。
- AA检验阶段:在正式实验开始前或实验期间,使用纯随机分组数据进行组间无差异验证。
- 结果分析前审核:实验数据已回收但尚未进行效果评估,必须验证两组基线是否可比,避免因分流不均导致结论失效。
要点:可比性验证是A/B实验“可信度”的第一道防线。若此步骤未通过,后续所有实验结论均不可采纳。
4.2 前置条件
| # | 条件项 | 验收标准 |
|---|---|---|
| 1 | 实验已上线运行至少一个完整数据采集周期(如1天或1周) | 日志中可提取到足量分桶样本 |
| 2 | 数据采集管道稳定,无断点、延迟或重复记录 | 实时监控面板显示无报警 |
| 3 | 分流日志完整,包含用户ID、分组标识、分流时间戳 | 记录数 > 预期样本量的99% |
| 4 | 已定义好关键业务指标(如DAU、转化率、人均时长) | 指标口径文档已评审通过 |
警告:若前置条件未满足,切勿跳过验证直接分析效果。数据质量问题会使AA检验失去意义,必须优先修复管道。
4.3 操作步骤
以下流程图为可比性验证的完整执行路径,各步骤之间严格串行,前一步未通过则中止后续操作。
步骤详解
- 分流均匀性检查(卡方检验)
对实验组与对照组的用户量、分桶维度(如地域、设备类型)进行卡方拟合优度检验,判断实际分流比例是否偏离预期比例(通常为50%:50%)。
# Python 示例:卡方检验分流均匀性 import numpy as np from scipy.stats import chisquare # observed counts for control & treatment observed = np.array([49823, 50177]) # control, treatment expected = np.array([50000, 50000]) # expected under 50:50 stat, p_value = chisquare(f_obs=observed, f_exp=expected) print(f"Chi-square stat: {stat:.4f}, p-value: {p_value:.4f}") # 若 p > 0.05 则通过均匀性检查 - AA检验(统计检验)
在实验组与对照组均为“空白”或“相同策略”的前提下,对核心业务指标进行双样本t检验或Z检验,验证两组的指标均值是否存在显著差异。
# Python 示例:AA检验(双样本t检验) from scipy.stats import ttest_ind control_metric = [ ... ] # 对照组核心指标数据 treatment_metric = [ ... ] # 实验组核心指标数据 t_stat, p_value = ttest_ind(control_metric, treatment_metric, equal_var=False) print(f"t-test p-value: {p_value:.4f}") # 若 p > 0.05 则 AA 检验通过 - 基线稳定性验证(时序分析)
将实验开始前一段时间(如7天)的两组核心指标绘制成时序图,使用CUSUM或移动平均法检测是否存在系统性漂移或趋势背离。
# 移动平均法检查基线稳定性 import pandas as pd df['control_ma'] = df['control_metric'].rolling(window=7).mean() df['treatment_ma'] = df['treatment_metric'].rolling(window=7).mean() df['diff'] = abs(df['control_ma'] - df['treatment_ma']) # 若 diff 始终小于预设阈值(如0.5%),则认为基线稳定 - 综合判定
将前三项检验结果汇总:全部通过→可比性成立,可进入效果分析;任意一项未通过→中止分析,标记实验为“可比性不通过”,并由数据工程师与实验负责人联合排查。
4.4 输入输出物
| 类型 | 名称 | 格式/载体 | 责任人 |
|---|---|---|---|
| 输入 | 实验分流日志表 | Parquet / CSV | 数据工程师 |
| 输入 | 核心指标定义文档 | Confluence / 飞书文档 | 数据分析师 |
| 输入 | 实验配置信息(分桶比例、开始时间) | 实验平台元数据 | 实验负责人 |
| 输出 | 均匀性检查报告(含p值) | PDF / 看板截图 | 数据分析师 |
| 输出 | AA检验结果表 | Excel / 内部表格 | 数据分析师 |
| 输出 | 基线稳定性时序图 | PNG / 嵌入式图表 | 数据分析师 |
| 输出 | 可比性验证结论书 | PDF / 实验平台标签 | 实验负责人 |
4.5 责任边界
| 角色 | 职责 | 决策权 |
|---|---|---|
| 数据工程师 | 提供完整、准确的分流日志;修复数据管道异常 | 无判定权,仅提供数据 |
| 数据分析师 | 执行卡方检验、AA检验、时序分析;出具验证报告 | 给出“通过/不通过”建议 |
| 实验负责人 | 确认验证结论;决定是否继续实验或重新分流 | 拥有最终裁定权 |
| 质量保障(QA) | 审计验证过程是否合规,检查代码与日志 | 一票否决权(若发现违规) |
责任边界提示:数据分析师负责技术执行,但不应单独决定“跳过不通过结果继续实验”。必须由实验负责人与QA共同会签。
4.6 记录材料
以下材料必须在验证完成后24小时内归档至实验平台或项目Wiki:
- 分流均匀性检查记录:卡方检验统计量、p值、样本量、检验时间戳。
- AA检验记录:t/Z统计量、p值、置信区间、效应量(Cohen's d)。
- 基线稳定性记录:时序图、漂移检测阈值、最大偏离值。
- 综合判定记录:各步骤是否通过、判定结论、签字人及日期。
# 推荐归档文件结构
/experiment_validation/
├── 01_uniformity_check_report.pdf
├── 02_aa_test_result.csv
├── 03_baseline_stability_chart.png
└── 04_validation_conclusion.docx
4.7 异常处理
| 异常类型 | 表现 | 处理方式 |
|---|---|---|
| 分流不均匀 | 卡方检验 p ≤ 0.05 | 检查分流算法、hash函数、用户ID去重;重新分流后再次验证 |
| AA检验显著 | p ≤ 0.05,但无实际策略差异 | 检查是否存在新奇效应或数据泄露;延长实验观察期或重置分组 |
| 基线不稳定 | 时序图显示两组指标背离趋势 | 检查是否有外部因素(节日、运营活动、版本更新)干扰;引入协变量校正或重启实验 |
| 数据管道延迟 | 日志不完整或时间戳错乱 | 联系数据工程师修复管道;等待至少一个完整周期后重新采集 |
| 样本量不足 | 检验功效 < 0.8 | 延长实验运行时间;或重新评估最小样本量设计 |
关键警告:出现任何异常时,严禁在未修复的情况下强行进入效果分析阶段。可比性不通过的实验,其效果分析结果在法律/合规层面视为无效。
4.8 验收标准
本章节流程执行完毕后,需满足以下所有条件方可视为验收通过:
- ✅ 分流均匀性检查 p > 0.05,且报告已归档。
- ✅ AA检验 p > 0.05,且效应量 |Cohen's d| < 0.1。
- ✅ 基线稳定性时序图显示两组指标在实验前窗口内无显著背离。
- ✅ 综合判定结论明确标注“可比性成立”或“不成立”,并由实验负责人签字。
- ✅ 所有记录材料已上传至指定路径,命名规范符合4.6节要求。
- ✅ 若发生过异常,对应的异常处理报告与修复证据一并归档。
验收口诀:均匀不显著,AA不拒绝,基线不漂移,结论可签字。