INTERVENE · 六卷 · 24 章 · 24 个真 demo

「相关不是因果」这句话你早就会背了。
但它是一句止损的话,不是一句能用的话——它告诉你什么时候该闭嘴, 从没告诉你什么时候可以开口
这本书讲的就是那个条件。而它全部的内容可以压成一个动作:看 ≠ 拨

零基础亮色 only全 SVG 与 networkx 逐题核对每章一个真 demo
你看到的世界 C X Y 看:E[Y|X=1] − E[Y|X=0] = −3.32 do(X) 剪断 拨动之后的世界 C X Y 拨:E[Y|do(1)] − E[Y|do(0)] = +5.00 同一台世界机器 同一个随机种子 只差这一刀
处理 X结果 Y 混淆(要控制)对撞(别控制)

这本书的招牌

第 12 章。一台世界机器,真效应 +5.00 明明白白写在结构方程里。 同一份两万人的数据,四种「控制变量」的选法:

往回归里放什么        估计值        离真值 5.00
──────────────       ────────      ───────────
什么都不放            −3.3185       −8.32   ← 连符号都反了
只放 C                +4.9632       −0.04   ← 对
C 和 S 都放           +3.3061       −1.69   ← 多控制一个,从对变错
只放 S                −4.8146       −9.81   ← 最惨的一种

数据一个字节都没变。变的只是你决定往回归里放什么。 而这个决定,数据本身给不了你——只有一张你必须自己画出来的图能给。

六卷

卷 I

看不出来

BLIND

四种完全不同的世界,可以给你一模一样的数据。先看清问题有多难。

  1. 01「相关不是因果」这句话,没告诉你的事四份数据,相关系数都是 0.60,而拨动 X 的真效应分别是 0.75、0、0、0▸ ★ 四个世界
  2. 02总有第三只手,在拧那个旋钮一根滑杆把观察到的效应从 +0.299 拧到 −0.685,而真效应锁死在 +0.30▸ 混淆旋钮
  3. 03每一组都在涨,合起来在跌伯克利 1973 真实数据:全校男 44.5% 女 30.4%,六个系里四个系女性反而更高▸ ★ 伯克利 1973
  4. 04你手上的数据,是被谁筛过的两行独立的随机数,全体 r = −0.008,过一道门之后 r = −0.643▸ 好莱坞法则
卷 II

画出来

DRAW

把「谁导致谁」写成一张图,然后就可以对它做算术。

  1. 05箭头不是等号Y := 2X + 噪声。Y 对 X 回归斜率 2.0005,X 对 Y 回归斜率不是 0.5,是 0.3992▸ 结构方程台
  2. 06全世界只有三个零件链、叉、撞。前两个控制了就断,第三个控制了才通▸ 链 · 叉 · 撞
  3. 07对撞机:控制它,会凭空造出相关两个独立变量,r 从 −0.004 拧到 −0.501。而「控制」有三张脸▸ ★ 对撞机偏差
  4. 08不看数据,就能判独立的那个算法d-分离。本书实现与 networkx 在 1484 个随机图查询上逐题一致▸ ★★ 真 d-分离
卷 III

认出来

CUT

拨动 = 把指向它的箭头剪断。剪对了才算数。

  1. 09看,和拨同一个种子,看给出 −3.318,拨给出 +5.000;拨之后两组的混淆差是 0.000000▸ ★ 图手术台
  2. 10后门准则:把偷偷绕过去的路堵死四个候选变量的 16 个子集里,只有 1 个能用▸ ★ 后门搜索器
  3. 11有些变量,控制了就毁了控制中介砍掉 61.9% 的真效应;M-bias 里的对撞机伪装成完美的混淆▸ 中介与 M-bias
  4. 12同一份数据,三个答案★ 招牌。真值 +5.00,四种选法给出 −3.32、+4.96、+3.31、−4.81▸ ★★ 招牌
  5. 13混淆看不见,也还有一条路U 完全不可观测,只用三列数据把真效应 1.2600 估成 1.2557▸ ★ 前门估计器
卷 IV

算出来

COUNT

从一张图,到一个可以写进报告的数字。

  1. 14随机化:花钱买来的那把剪刀它不让两组一样——n=50 时还差 0.217 个标准差。它保证的是别的东西▸ ★ 收敛台
  2. 15一半的格子,永远是空的真 ATE 3.730,看得见的那一半算出 −8.680▸ 潜在结果表
  3. 16把一个人压成一个数匹配后混淆的标准化均值差从 −1.0539 抹平到 −0.0007▸ ★ 匹配台
  4. 17加权,和「错一个还站得住」2×2 表四格里三格落在真值附近,只有两个都写错那一格崩到 −3.32▸ ★★ 双重稳健
  5. 18「控制变量」到底控制了什么一步到位 4.963182,分三步走 4.963182,差 1.12e-12▸ ★ FWL 拆解
卷 V

偷来的

STEAL

不能自己抽签的时候,去世界上找一次别人替你抽的签。

  1. 19借一把别人的剪刀工具变量。普通回归 2.5881(真值 2.000),2SLS 给出 1.9964▸ ★ 2SLS 台
  2. 20把减不掉的减掉只看前后给 9.97,只看两组给 13.92,两个错的相减给 5.82,真值 6▸ ★ 双重差分台
  3. 21分数线两边的人带宽 ±20 给 7.82,±5 给 7.95,±2 给 7.23,真值 8▸ ★ 断点带宽台
  4. 22如果还有一个你没测到的RR=1.2 只需 1.690 强度的未测混淆就能推翻;RR=3 需要 5.449▸ E-value 台
卷 VI

用出来

USE

机器、指标、和你自己的判断。

  1. 23机器学到的是相关,永远不会是因果真训出来的分类器:训练分布 96.3%,换个分布 17.5%——比瞎猜还差▸ ★ 捷径学习
  2. 24你能不能证明这本书有用把这本书自己放到审判席上,附七个错觉自查表和路线图▸ 自查表 + 路线图

写给谁

  • 会写代码、每天要读数字、但没系统学过因果推断的人。不需要任何统计基础——每个术语第一次出现都当场解释。
  • 做过或看过 A/B 测试,想知道「不能做实验的时候还能怎么办」的人。
  • 训模型的人。第 17、23 章是给你的:为什么模型换个分布就崩,为什么「因果 ML」改进的其实不是你以为的那部分。
  • 读新闻、读论文、读研究报告时想有一把尺子的人。

这本书不打算做的事

  • 不教你 R 或 Python 的包怎么调。第 24 章给了工具清单,但这本书讲的是它们背后那件事——而那件事换个语言、换个包都不会变。
  • 不给证明。d-分离的完备性、do-演算的三条规则、ID 算法,这本书只讲它们说了什么、意味着什么。要证明请看第 24 章的路线图。
  • 不假装因果推断能解决一切。第 13 章会明确告诉你什么时候答案根本不存在,第 22 章会告诉你你的结论有多脆弱。这门学问最值得尊敬的地方,正是它知道自己的边界在哪。

怎么读这本书

  • 顺着读。六卷是有依赖的:卷 I 建直觉,卷 II 给语言,卷 III 讲识别,卷 IV 讲估计,卷 V 讲没法识别时怎么办,卷 VI 收尾。
  • 每章开头的「▷ 先判一次」,请真的先判。它有一个自指的作用:你答对的那些,说明这一章对你信息量小,可以快读;答错的那些,正是这一章要给你的东西。答案在同一章末尾的「◇ 判词」里,而且会解释每个错误选项背后的直觉是从哪来的
  • Demo 请动手拖。24 个 demo 里的每一个数字都是那台引擎当场算的,不是写死的。尤其第 7、12、17 章那三个——它们是专门用来推翻直觉的。
  • 时间紧就读四章:第 7 章(对撞机)、第 10 章(后门准则)、第 12 章(招牌)、第 24 章(自查表)。这四章能覆盖实践中八成的翻车。

关于这本书里的数字

正文里出现的每一个数字,都是 assets/engine.js 当场算的,没有一个是手写的。这台引擎里装着:一台 d-分离判定器、一台图手术台、后门与前门准则的搜索器、一台线性 SCM 模拟器、最小二乘、逻辑回归(IRLS)、匹配 / IPW / 双重稳健 / 2SLS / DiD / RDD / E-value,和反事实三步。

能对照的地方全都对照过了:

  • d-分离与 Python networkxis_d_separator1484 个查询上逐题一致——两个完全不同的算法(遍历 vs 道德化),一题不差。
  • 最小二乘numpy.linalg.lstsq(SVD)对到 1e-9 以内,标准误也一样。
  • 逻辑回归与一个独立写的梯度上升实现对到 1e-6 以内(IRLS vs 梯度法)。
  • 伯克利 1973 年录取数据直接来自 Bickel、Hammel & O'Connell 发表在 Science(1975, 187:398–404)上的表 1。
  • 真因果效应本身用两种独立办法算:Wright 路径规则(解析)和真的跑两遍干预模拟(蒙特卡洛)。两个数必须对上,否则引擎自检就红了。

验证器是 scripts/verify-cause.mjs,跑 npm run verify:cause

从第 1 章开始 ▶