因果推理、混杂变量与实验控制
从相关关系进入因果推理,系统区分混杂变量、反向因果、选择偏差,并解释随机化、对照、干预和机制证据如何增强因果识别。
[!info] related notes
- 所属 MOC: logic-moc
- 相关概念:
- 易混淆概念:
- 相关资源:
因果推理、混杂变量与实验控制
为什么“相关不等于因果”还远远不够
知道:
相关不等于因果。
只是第一步。真正需要进一步学的是:
那什么样的证据才会让因果解释变得更可信?
因果推理不是简单拒绝所有相关,而是比较:观察到的关联能否被其他结构解释,以及干预 A 后 B 是否按预测发生变化。
观察关系与因果关系
观察到:
A 与 B 一起变化
可能来自至少这些结构:
A → B
B → A
C → A 且 C → B
A ↔ B
选择机制同时影响 A、B
纯随机波动
因此相关数据只是因果推理的入口。
混杂变量 Confounder
混杂变量 C 同时影响暴露 A 和结果 B,从而制造或扭曲 A–B 的表面关系。
经典结构:
C
/ \
v v
A B
例如:
炎热天气
├→ 冰淇淋销量增加
└→ 游泳人数增加 → 溺水增加
冰淇淋销量与溺水可能相关,但天气是重要共同原因。
反向因果
观察:
使用医疗服务越多的人健康状况越差。
不能直接推出:
医疗服务导致健康变差。
可能的方向是:
健康状况差
→ 更需要医疗服务
因果方向本身必须通过时间、机制、设计和干预进一步判断。
选择偏差
样本进入分析的方式也会制造错误关系。
例如只研究“已经住院的人”,某些风险因素之间可能因为共同影响住院概率而出现人为相关。
可以把它理解为:
现实总体
↓ 经过一个非随机筛选门
分析样本
如果这个“门”同时受多个变量影响,样本中的关系可能不再代表总体。
为什么随机对照试验很强
理想随机化尝试让:
Treatment
与干预前的其他潜在混杂因素近似独立。
随机分组
├→ Treatment
└→ Control
如果除了干预之外两组在期望上可比,那么结果差异更容易归因于干预。
它不是魔法:
- 随机化可能失败或样本太小;
- 失访会产生偏差;
- 干预依从性不同;
- 测量也可能有误;
- 外部有效性可能有限。
但它显著增强了因果识别。
对照的真正作用
只有“改之前 vs 改之后”时:
Before → intervention → After
时间本身也在变化。
有对照组时:
Treatment:同时期 + 干预
Control: 同时期 + 无干预
可以帮助区分:
是干预造成变化,还是整个环境本来就在变化?
软件性能例子
你上线缓存后 P95 从 800ms 降到 500ms。
错误因果式结论:
缓存让 P95 降低了 37.5%。
更好的识别过程:
- 固定或记录 workload;
- 比较同一代码除缓存开关外的 A/B;
- 重复实验;
- 看 cache hit rate;
- 排除同期 DB/CDN/配置变化;
- 检查机制是否一致:缓存命中路径确实避开昂贵查询。
证据链变成:
干预
+
对照
+
重复
+
机制
+
替代解释排除
↓
更强因果支持
干预与观察的区别
观察:
当 A 自然发生时,B 如何变化?
干预:
如果我们主动把 A 改成某个值,B 会怎样?
现代因果推断常用 do(A=a) 来强调这种区别:
P(B | A=a)
不一定等于:
P(B | do(A=a))
前者是“观察到 A=a 的人”,后者是“主动把 A 设为 a”。
为什么可能不同?因为自然出现 A 的原因本身可能与 B 有关。
DAG:用图画因果假设
有向无环图(DAG)可以把假设写成:
C → A → B
C → B
它的价值不是让图看起来高级,而是强迫你明确:
- 谁可能导致谁;
- 哪些变量是共同原因;
- 哪些变量应控制;
- 哪些变量反而不应该随便控制。
因果图是假设结构,不是光靠画箭头就证明因果。
“控制越多变量越好”也是错的
有些变量是中介:
A → M → B
如果你想估计 A 对 B 的总效应,却控制 M,就可能把真实路径的一部分人为消掉。
有些变量是 collider:
A → C ← B
对 C 条件化反而可能制造 A 与 B 的虚假关联。
因此统计控制必须依赖因果结构,而不是无脑把所有字段都塞进模型。
机制证据
如果你不仅观察到 A 与 B 关联,还能解释:
A
→ 中间机制 M1
→ M2
→ B
并分别观察到这些步骤,因果解释会更可信。
但机制故事也可能只是“听起来合理”,所以仍需和实际干预/观察证据结合。
多种证据收敛
现实中很多因果结论不是一项实验决定,而是:
- 不同数据集;
- 不同研究设计;
- 时间顺序;
- 剂量—反应;
- 机制证据;
- 自然实验;
- 随机试验;
共同指向同一个解释。
这种 triangulation 往往比单一研究更稳健。
因果结论也需要校准
可以区分:
存在关联
可能存在因果关系
证据支持因果解释
有较强因果证据
在明确条件下,干预 A 会改变 B
不要把第一层直接写成最后一层。
与贝叶斯推理的关系
贝叶斯更新可以更新“某个因果假设有多可信”,但仅有概率更新并不会自动解决因果识别。
你仍需要正确建模:
- 哪些数据是观察的;
- 哪些来自干预;
- 混杂结构是什么。
与错误因果谬误的关系
错误因果谬误告诉你哪些常见跳跃不成立。
本篇进一步回答:
不跳跃以后,我们怎样逐步建立更好的因果证据?
快速因果检查表
1. A 和 B 的关系到底只是相关,还是有干预证据?
2. 时间方向是否明确?
3. 共同原因 C 有哪些?
4. 有没有反向因果?
5. 样本选择过程会不会制造关联?
6. 有没有合理对照?
7. 结果能否重复?
8. 是否存在可观察机制?
9. 换一种设计后结论仍成立吗?
10. 结论措辞有没有超过证据?
一句记忆
因果推理不是从相关中“猜一根箭头”,而是设计证据去排除那些也能解释同一相关性的其他世界。