Skip to content

A/B 测试与因果推断资源专题

从经典 A/B 测试到前沿因果推断方法——从"是什么"到"怎么用"


🧭 学习路径

A/B 测试基础  →  进阶实验设计  →  因果推断方法  →  工具实战
   (入门)          (进阶)           (专家)          (应用)
阶段 核心内容 时间 前置要求
🟢 入门 假设检验、样本量计算、t/z 检验 1-2 周 基础统计
🟡 进阶 多重比较校正、分流策略、新奇效应 2-3 周 Python / SQL
🟠 专家 DID、IV、RDD、匹配方法 4-6 周 回归分析
🔴 实战 因果推断工具链、案例复现 持续 上述全部

🎯 方法选择速查

不是我该用哪个,而是"我的场景允许用哪个"

场景 推荐方法 可替代方法
我能随机分配用户 A/B 测试(RCT) —
有历史对照组,但没随机 双重差分(DID) 合成控制
有一个"随机"的外部因素 工具变量(IV) 断点回归
在某个阈值上下分界 断点回归(RDD) —
只能观测,无法干预 倾向得分匹配(PSM) 逆概率加权
复杂因果图 Do-calculus(Pearl) 结构方程模型

📚 核心理论

必读经典

书籍

书名 作者 难度 推荐理由
《Trustworthy Online Controlled Experiments》 Ron Kohavi ⭐⭐⭐⭐ 微软 A/B 测试实战圣经
《实验思维》 Dean Karlan ⭐⭐⭐ 发展经济学实验方法
《Mostly Harmless Econometrics》 Angrist & Pischke ⭐⭐⭐⭐⭐ 因果推断经典
《Causal Inference: The Mixtape》 Scott Cunningham ⭐⭐⭐⭐ 通俗易懂的因果推断
《Causal Inference for Statistics》 Pearl et al. ⭐⭐⭐⭐⭐ 因果图理论

在线阅读: - 《Causal Inference: The Mixtape》: 链接 - 《Causal Inference: What If》: 链接

论文

论文标题 作者 年份 链接
The Central Role of the Propensity Score Rosenbaum & Rubin 1983 链接
Identification and Estimation of Local Average Treatment Effects Imbens & Angrist 1994 链接
Causal Diagrams for Empirical Research Pearl 1995 链接

🎓 在线课程

系统性课程

课程名称 平台 讲师 链接
A/B Testing Udacity Google 链接
Causal Inference Coursera Columbia 链接
因果推断实战 知乎 多位专家 链接

专题教程

教程名称 来源 链接
A/B Testing Guide Optimizely 链接
Causal Inference Tutorial MLSS 链接
因果推断入门 统计之都 链接

🛠️ 工具库

Python 库

库名 用途 文档链接
CausalML 因果推断与 uplift 建模 链接
EconML 微软因果推断库 链接
DoWhy 微软因果推断框架 链接
CausalImpact 时间序列因果推断 链接
MatchIt 倾向值匹配 链接

R 包

包名 用途 CRAN 链接
MatchIt 倾向值匹配 链接
AER 应用计量经济学 链接
CausalImpact 贝叶斯结构时间序列 链接

📊 实战案例

互联网行业

案例标题 公司 场景 链接
A/B Testing at Google Google 搜索算法优化 链接
Experimentation at Microsoft Microsoft 产品功能测试 链接
Airbnb A/B Testing Airbnb 房源推荐优化 链接
Netflix A/B Testing Netflix 用户体验优化 链接

学术研究

研究标题 机构 领域 链接
Moving Beyond CTR Google 多目标优化 链接
Network Experiments Facebook 网络效应 链接

📝 最佳实践指南

实验设计流程

graph TD
    A[明确业务问题] --> B[建立假设]
    B --> C[设计实验方案]
    C --> D[样本量计算]
    D --> E[随机分流]
    E --> F[数据收集]
    F --> G[统计分析]
    G --> H[结果解读]
    H --> I[决策建议]

关键检查清单

实验前

  • 明确原假设和备择假设
  • 确定核心指标和护栏指标
  • 计算所需样本量(功效分析)
  • 设计随机分流方案
  • 制定数据收集计划
  • 预设统计分析方法

实验中

  • 监控流量分配正确性(SRM 检验)
  • 检查数据质量
  • 关注护栏指标异常
  • 避免中期 peeking(多重检验问题)

实验后

  • 进行统计显著性检验
  • 计算效应大小和置信区间
  • 评估实际业务意义
  • 分析异质性效应
  • 撰写实验报告
  • 给出决策建议

🔍 常见问题解答

Q1: 样本量如何计算?

A: 使用功效分析(Power Analysis)

from statsmodels.stats.power import TTestIndPower

# 参数设置
effect_size = 0.05  # 期望检测的最小效应
alpha = 0.05        # 显著性水平
power = 0.80        # 统计功效

# 计算样本量
analysis = TTestIndPower()
sample_size = analysis.solve_power(effect_size=effect_size, 
                                    alpha=alpha, 
                                    power=power)
print(f"每组所需样本量:{sample_size:.0f}")

Q2: 如何处理多重检验问题?

A: 使用校正方法 - Bonferroni 校正: alpha_adjusted = alpha / n_tests - Holm-Bonferroni 方法: 更保守但效力更高 - False Discovery Rate (FDR): 控制错误发现率

Q3: 什么是 SRM 检验?

A: Sample Ratio Mismatch(样本比例失配)检验

from scipy import stats

def srm_test(observed, expected):
    """卡方检验检查流量分配是否正确"""
    chi2, p_value = stats.chisquare(observed, expected)
    return chi2, p_value

# 示例
observed = [10000, 12000]  # 实际流量
expected = [11000, 11000]  # 期望流量
chi2, p = srm_test(observed, expected)
print(f"SRM 检验 p 值:{p:.4f}")
if p < 0.05:
    print("⚠️ 警告:流量分配异常!")

📖 进阶阅读

因果推断方法

方法 适用场景 关键假设
倾向值匹配 (PSM) 观察性研究 可忽略性假设
双重差分 (DID) 面板数据 平行趋势假设
工具变量 (IV) 内生性问题 排他性约束
断点回归 (RDD) 准自然实验 连续性假设
合成控制法 政策评估 权重构造

学习路径

基础统计学 
  ↓
假设检验与置信区间
  ↓
回归分析
  ↓
因果图模型
  ↓
实验设计
  ↓
观察性研究方法
  ↓
前沿方法(DML, Causal Forest 等)

🔗 更多资源

官方博客

开源项目


最后更新: 2026-06-01