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[决策建议]
关键检查清单
实验前
实验中
实验后
🔍 常见问题解答
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