因果推断:从观察数据中找因果关系
产品经理的数学课 · 第28讲
因果推断:从观察数据中找因果关系
相关性不等于因果性。但产品决策需要因果关系——「如果我们做 X,会发生 Y?」因果推断帮你从观察数据中找出真正的因果关系。
前言
你的产品数据显示:
- 使用功能 A 的用户,留存率高 20%
- 使用功能 A 的用户,付费率高 15%
问题:功能 A 导致了更高的留存和付费吗?
可能的解释:
- 功能 A 确实提高了留存和付费(因果关系)
- 活跃用户更可能使用功能 A(反向因果)
- 某个第三变量(比如用户兴趣)同时影响功能使用和留存(混杂因素)
因果推断:区分这三种解释,找出真正的因果关系。
核心概念
相关性 vs 因果性
相关性:两个变量一起变化
- 冰淇淋销量和溺水人数正相关
- 但这不意味着冰淇淋导致溺水
因果性:一个变量的变化导致另一个变量变化
- 吸烟导致肺癌(因果关系)
- 不只是相关性
因果推断的挑战
混杂因素(Confounding):同时影响原因和结果的变量
例子:
- 原因:使用功能 A
- 结果:留存率
- 混杂:用户活跃度(活跃用户更可能用功能 A,也更可能留存)
反向因果(Reverse Causality):结果导致原因
例子:
- 原因:购买产品
- 结果:满意度
- 反向:满意度高的用户更可能购买
随机对照试验(RCT)
最可靠的因果推断方法:随机分配 treatment
步骤:
- 随机将用户分为 treatment 组和 control 组
- 只给 treatment 组某种处理
- 比较两组的结果
例子:
- 随机 50% 用户看到新功能(treatment)
- 50% 用户看不到(control)
- 比较两组的转化率
问题:RCT 有时不可行(成本高、伦理问题、用户拒绝)。
反事实框架
因果效应:处理组的结果 - 对照组的结果
$$ \text{因果效应} = Y_i(1) - Y_i(0) $$
问题:每个用户只能处于一种状态(要么 treatment,要么 control)。另一个状态是「反事实」——我们观察不到。
解决方案:用观察数据估计反事实。
因果推断方法
1. 倾向得分匹配(Propensity Score Matching)
- 计算每个用户接受 treatment 的概率(倾向得分)
- 匹配倾向得分相似的 treatment 和 control 用户
- 比较匹配后的结果
优点:减少混杂因素的影响
缺点:只能控制可观测的混杂
2. 工具变量(Instrumental Variables)
- 找到一个变量(工具),只影响 treatment,不直接影响结果
- 用工具变量估计因果效应
例子:
- Treatment:使用功能 A
- 工具:功能 A 的入口位置(随机显示在不同位置)
- 结果:转化率
优点:可以控制不可观测的混杂
缺点:找到合适的工具变量很难
3. 断点回归(Regression Discontinuity)
- 利用某个阈值的「断点」估计因果效应
- 阈值附近的用户几乎相同,只是 treatment 不同
例子:
- 促销:满 100 减 20
- 99 元 vs 100 元的用户几乎相同
- 比较两组的转化率
优点:接近随机实验
缺点:只适用于有阈值的情况
4. 双重差分(Difference-in-Differences)
- 比较 treatment 组和 control 组在处理前后的变化
例子:
- Treatment 组:上线功能 A 后,转化率从 10% 升到 15%(+5%)
- Control 组:同期转化率从 10% 升到 12%(+2%)
- 因果效应:5% - 2% = 3%
优点:可以控制时间趋势
缺点:需要平行趋势假设
产品经理的应用
应用场景一:新功能的因果效应
你的产品上线了新功能 A。数据显示使用 A 的用户留存率高 20%。
RCT 设计:
- 随机 50% 用户看到新功能 A(treatment)
- 50% 用户看不到(control)
- 30 天后比较留存率
结果:
- Treatment 组留存率:60%
- Control 组留存率:55%
- 因果效应:5%(不是 20%)
行动:新功能 A 确实提高了留存,但效应比观察数据小(混杂因素导致的偏差)。
应用场景二:促销的因果效应
你的产品有促销活动:满 100 减 20。
断点回归设计:
- 比较 99 元和 100 元的用户
- 两组用户几乎相同,只是 treatment 不同
结果:
- 99 元用户转化率:30%
- 100 元用户转化率:45%
- 因果效应:15%
行动:促销确实提高了转化率,但只对 100 元以上的订单有效。
应用场景三:广告的因果效应
你的产品投放了广告。数据显示看到广告的用户购买率高 10%。
问题:广告真的导致了购买吗?还是本来就想买的用户更可能看到广告?
工具变量设计:
- 工具:广告投放的位置(随机分配)
- Treatment:看到广告
- 结果:购买
结果:
- 看到广告的用户购买率:15%
- 没看到广告的用户购买率:12%
- 因果效应:3%(不是 10%)
行动:广告确实有因果效应,但比观察数据小(选择性偏差)。
常见误区
误区一:相关性就是因果性
「使用功能 A 的用户留存率高,所以功能 A 导致高留存」
可能有混杂因素:活跃用户更可能用功能 A,也更可能留存。
必须做因果推断,不只是看相关性。
误区二:RCT 总是可行
「随机实验就能找到因果关系」
RCT 有时不可行:
- 成本太高(需要大量用户)
- 伦理问题(不能随机分配有害 treatment)
- 用户拒绝(不愿意被随机分配)
需要备选方案:倾向得分匹配、工具变量等。
误区三:因果推断能解决所有问题
「用了因果推断就能找到因果关系」
因果推断有局限:
- 只能控制可观测的混杂(倾向得分匹配)
- 需要强假设(工具变量、双重差分)
- 不能替代真正的随机实验
结果需要谨慎解释。
误区四:因果效应是固定的
「功能 A 的因果效应是 5%」
因果效应可能随时间变化:
- 新功能上线初期:新鲜感,效应大
- 长期:用户习惯,效应可能减小
需要定期重新评估。
PM/BA 应用
| 场景 | 因果推断方法 | 决策价值 |
|---|---|---|
| 新功能评估 | RCT | 证明因果关系 |
| 促销效果 | 断点回归 | 量化促销效应 |
| 广告效果 | 工具变量 | 消除选择性偏差 |
| 政策变化 | 双重差分 | 控制时间趋势 |
| 用户行为 | 倾向得分匹配 | 减少混杂因素 |
课后测验
题目 1
你的数据显示使用功能 A 的用户留存率高 20%。以下哪种解释最可能?
A. 功能 A 导致了高留存
B. 活跃用户更可能使用功能 A,也更可能留存(混杂因素)
C. 功能 A 和留存率没有关系
D. 留存率高导致了用户使用功能 A(反向因果)
查看答案与解析
答案:B(混杂因素)
最常见的解释:混杂因素(用户活跃度)
- 活跃用户更可能使用功能 A(因为更频繁地使用产品)
- 活跃用户更可能留存(因为本来就活跃)
- 功能 A 和留存率都是活跃度的结果,不是因果关系
如何验证:
- RCT:随机分配用户使用功能 A
- 倾向得分匹配:匹配活跃度相似的用户
- 工具变量:找一个只影响功能使用的变量
题目 2
你做了一个 RCT:随机 50% 用户看到新功能 A。结果:treatment 组转化率 15%,control 组 12%。以下哪种说法最准确?
A. 新功能 A 导致转化率提高 3%
B. 新功能 A 导致转化率提高 25%
C. 新功能 A 和转化率相关
D. 需要更多数据才能确定
查看答案与解析
答案:A(新功能 A 导致转化率提高 3%)
RCT 的因果效应:
- Treatment 组:15%
- Control 组:12%
- 因果效应:15% - 12% = 3%
为什么不是 25%?
- 25% 是相对提升((15%-12%)/12% = 25%)
- 因果效应通常指绝对差异(3%)
行动:新功能 A 确实提高了转化率 3 个百分点。
题目 3
你想用倾向得分匹配估计功能 A 的因果效应。以下哪种情况最不适合?
A. 功能 A 的使用是用户自选择的
B. 有大量可观测的混杂因素
C. 有不可观测的混杂因素(比如用户兴趣)
D. 数据量足够大
查看答案与解析
答案:C(有不可观测的混杂因素)
倾向得分匹配的局限:
- 只能控制可观测的混杂因素
- 如果有不可观测的混杂(比如用户兴趣、动机),匹配无法消除偏差
例子:
- 观测到的混杂:年龄、性别、活跃度
- 不可观测的混杂:用户兴趣、产品认知
解决方案:
- 使用工具变量(可以控制不可观测混杂)
- 使用 RCT(随机化消除所有混杂)
本课要点
- 相关性 ≠ 因果性:必须区分混杂、反向因果、真实因果
- RCT:最可靠的因果推断方法(随机分配)
- 反事实框架:因果效应 = 处理组结果 - 对照组结果(反事实)
- 观察数据方法:倾向得分匹配、工具变量、断点回归、双重差分
- 谨慎解释:因果推断有局限,结果需要验证
延伸阅读
- Hernán & Robins, 《Causal Inference: What If》 — 因果推断教材
- Angrist & Pischke, 《Mostly Harmless Econometrics》 — 计量经济学中的因果推断
- Pearl, 《The Book of Why》 — 因果推断的通俗读物
下一步
下一课:贝叶斯优化:用最少的实验找到最优参数 — 用贝叶斯优化高效地搜索参数空间。
工具提示:用 DoWhy 或 EconML 库实现因果推断——从简单的倾向得分匹配开始,理解因果推断的工作原理。