1. 前言
假设某天, 一位产品经理向你展示如下数据,
使用了 A 功能的用户, 转化率显著高于未使用的用户. 于是 ta 认为:
- A 功能提高了用户的转化率.
- 应该让更多用户使用 A 功能.
这是入门常见的错误. 作为分析师, 可以从 "幸存者偏差" 或 "相关 ≠ 因果" 两个角度来解释, 避免 ta 因此做出糟糕的决定.
然而, "相关 ≠ 因果" 这句话说起来很轻松, 但缺少建设性. 产品的迭代需要方向, 但在分析师的工具箱里, 无论是常规统计分析还是机器学习, 结论都局限在 "相关性".
Prediction is insufficient for choosing interventions.
真正有价值的, 是找到潜在的因果关系, 从而提出有效干预手段.
幸运的是, 这类问题在流行病学等其他领域中, 已经积累了一些方法. 今天, 我们就从以上案例出发, 探索如何用 "因果推断" (Causal Inference) 得到更有意义的结论.
为了更好理解本文, 你需要如下知识:
- 训练和使用常见的预测模型.
- 了解统计中的 bootstrap 方法.
你的收获: 了解因果推断的两种方法, 通过文末的 Jupyter notebook 实际操作.
2. 从相关到因果
首先想到的问题是: 统计学通常回避 "因果" 这个词, 那么因果推断到底能不能做?
答案是: 理论可行.
2.1 最可信的方法: A/B
A/B 实验是因果推断的 "黄金标准". 原因是, 随机分组确保了两组样本之间的 "可互换" Exchangeability, 即我们相信: 无论选哪一组作为实现对象, 都不影响结论.
这也是我在公众号的开篇文章中, 把 A/B 分析纳入 归因数据分析体系 的原因.
然而, 即使 A/B 是产品迭代的家常便饭, 很多实验仍然代价高昂, 甚至不现实. 这就需要通过数据分析, 提供接近 A/B 条件下的判断.
2.2 退求其次: 条件随机
A/B 做不成, 就创造条件, 近似 A/B.
这句话表明了大部分因果推断方法的出发点: 控制一组变量的水平, 实现在每个水平下, 两组样本之间具有可比性.
这和常见的分析方法类似. 例如: 按用户的身份和行为特征分组, 分别对比是否使用 A 功能用户的留存率. 通常的做法是: 每次选取 1~2 个变量交叉分组, 再对比指标.
分析的难点是: 同时选用的维度过多, 就会
- 降低分析的可读性
- 引起样本稀疏, 影响对比的可信度