Skip to content

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

A/B Testing & Causal Inference Resources


📚 核心理论

必读经典

书籍

书名 作者 难度 推荐理由
《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