第4章 实验分组与对照组的可比性验证:分流均匀性检查、AA检验结果判定、基线稳定性

4.1 适用场景

本流程适用于以下三类典型场景,当任意一项满足时即应启动可比性验证:

  • 实验刚完成分流:用户被随机分入实验组与对照组后,需确认两组在核心指标上无先验差异。
  • AA检验阶段:在正式实验开始前或实验期间,使用纯随机分组数据进行组间无差异验证。
  • 结果分析前审核:实验数据已回收但尚未进行效果评估,必须验证两组基线是否可比,避免因分流不均导致结论失效。
要点:可比性验证是A/B实验“可信度”的第一道防线。若此步骤未通过,后续所有实验结论均不可采纳。

4.2 前置条件

#条件项验收标准
1实验已上线运行至少一个完整数据采集周期(如1天或1周)日志中可提取到足量分桶样本
2数据采集管道稳定,无断点、延迟或重复记录实时监控面板显示无报警
3分流日志完整,包含用户ID、分组标识、分流时间戳记录数 > 预期样本量的99%
4已定义好关键业务指标(如DAU、转化率、人均时长)指标口径文档已评审通过
警告:若前置条件未满足,切勿跳过验证直接分析效果。数据质量问题会使AA检验失去意义,必须优先修复管道。

4.3 操作步骤

以下流程图为可比性验证的完整执行路径,各步骤之间严格串行,前一步未通过则中止后续操作。

实验分组与对照组可比性验证流程 可比性验证流程 — 分流均匀性检查 → AA检验 → 基线稳定性 ① 分流数据采集 ② 均匀性检查(卡方) ③ AA检验(t检验/Z检验) ④ 基线稳定性(时序) ⑤ 综合判定 ✅ 通过:可比性成立 ❌ 不通过:中止分析 验证通过标准 ① 均匀性检查: 卡方检验 p > 0.05 ② AA检验: t/Z 检验 p > 0.05 ③ 基线稳定性: 日指标无显著漂移 (CUSUM / 移动平均) ④ 综合判定: ①②③全部通过 → 绿色 任一不通过 → 红色 ⚠️ 不通过时需排查分流逻辑 或数据管道问题后重新验证

步骤详解

  1. 分流均匀性检查(卡方检验)

    对实验组与对照组的用户量、分桶维度(如地域、设备类型)进行卡方拟合优度检验,判断实际分流比例是否偏离预期比例(通常为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 则通过均匀性检查
  2. 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 检验通过
  3. 基线稳定性验证(时序分析)

    将实验开始前一段时间(如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.4 输入输出物

类型名称格式/载体责任人
输入实验分流日志表Parquet / CSV数据工程师
输入核心指标定义文档Confluence / 飞书文档数据分析师
输入实验配置信息(分桶比例、开始时间)实验平台元数据实验负责人
输出均匀性检查报告(含p值)PDF / 看板截图数据分析师
输出AA检验结果表Excel / 内部表格数据分析师
输出基线稳定性时序图PNG / 嵌入式图表数据分析师
输出可比性验证结论书PDF / 实验平台标签实验负责人

4.5 责任边界

角色职责决策权
数据工程师提供完整、准确的分流日志;修复数据管道异常无判定权,仅提供数据
数据分析师执行卡方检验、AA检验、时序分析;出具验证报告给出“通过/不通过”建议
实验负责人确认验证结论;决定是否继续实验或重新分流拥有最终裁定权
质量保障(QA)审计验证过程是否合规,检查代码与日志一票否决权(若发现违规)
责任边界提示:数据分析师负责技术执行,但不应单独决定“跳过不通过结果继续实验”。必须由实验负责人与QA共同会签。

4.6 记录材料

以下材料必须在验证完成后24小时内归档至实验平台或项目Wiki:

  1. 分流均匀性检查记录:卡方检验统计量、p值、样本量、检验时间戳。
  2. AA检验记录:t/Z统计量、p值、置信区间、效应量(Cohen's d)。
  3. 基线稳定性记录:时序图、漂移检测阈值、最大偏离值。
  4. 综合判定记录:各步骤是否通过、判定结论、签字人及日期。
# 推荐归档文件结构
/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不拒绝,基线不漂移,结论可签字。