卷 I · 看不出来CH 01深度 1/24

「相关不是因果」这句话,没告诉你的事

这句话你早就会背了。但它是一句止损的话,不是一句能用的话——它告诉你什么时候该闭嘴,却从来没告诉你什么时候可以开口。这本书讲的就是那个条件。

看 ≠ 拨四个世界全书主线

▷ 先判一次

一家公司发现:用了「学习计划」这个功能的用户,三个月后的技能测评分反而比没用的人低了 3.3 分。数据是全量的,两万人,统计上极其显著。下面哪个说法最接近真相?

A 这个功能确实有害,应该下线B 样本不够大,或者有统计错误C 相关不是因果,所以这份数据什么都说明不了D 这个功能其实有用,而且能算出有用多少

先记下你的选择。答案在这一章末尾——这本书剩下的 23 章,都是在把 D 变成一件可以动手做的事。

一句正确但没用的话

「相关不是因果」(correlation does not imply causation)大概是统计学里流传最广的一句话。它是对的。问题是它太好用了——好用到成了一句万能的终止符

任何一个你不喜欢的结论,都可以用这句话打发掉。这让说这句话的人显得很清醒,但它同时也把讨论按死在原地:既然相关不是因果,那什么因果?什么时候我们才可以说「A 导致了 B」?

大多数人给出的答案是:做实验。这个答案不算错,但它把 99% 的现实排除在外了。你没法随机分配谁抽烟。你没法随机分配谁上大学。你没法随机分配某个国家实行什么货币政策。你甚至没法随机分配你的用户会不会打开某个功能——如果那个功能已经上线了,如果你只有历史日志,如果做实验要等三个月而决定明天就要。

于是「相关不是因果」这句话,在实践中的效果往往是:大家一边说它,一边照样从相关推因果,只是心虚一点。

◆ 这本书的第一句话

「相关不是因果」的下半句才是重点:那么,在什么条件下,相关就是因果?

这个条件是存在的,可以精确写出来,可以逐条检查,而且不需要做实验。找出它、检查它、在它不成立时想办法绕过它——这套方法叫因果推断(causal inference)。

四份数据,一个相关系数

先看清问题有多难。下面是四台不同的「世界机器」。每一台我都写下了它内部真实的运作方式——不是猜的,是我构造的,所以我知道标准答案。

# 四台机器,四种完全不同的结构

① X → Y            X 真的导致 Y
② X ← Y            其实是 Y 导致 X,箭头反了
③ X ← U → Y        谁也不导致谁,有一个共同的原因 U
④ X → [门] ← Y     谁也不导致谁,是被同一道门筛进来的

然后我让每台机器各生成两万个样本。四份数据的相关系数——

四份数据的相关系数分别是 0.598、0.596、0.605、0.599。这不是巧合:四台机器的参数是我按解析式解出来的,让它们的总体相关系数精确等于 0.600。抽样带来的那点零头,就是你看到的那点差异。

但「把 X 拨动一个单位,Y 会跟着变多少」——这个问题的答案是 0.75、0、0、0

四份数据在相关系数这一栏上一模一样,在因果效应这一栏上差了一个「有」和「无」。而且注意:这不是数据不够多的问题。你可以把样本量加到两千万、两亿,四个相关系数会收敛得更整齐地贴在 0.600 上,而四个因果效应还是 0.75、0、0、0。

◆ 为什么再多的数据也不够

相关系数是一个关于联合分布的数:给我 X 和 Y 一起出现的频率表,我就能把它算出来。

因果效应是一个关于结构的数:它问的是「如果我伸手去改 X,会发生什么」。而「伸手去改」这件事,在你收集的数据里根本没有发生过

数据记录的是这个世界运行的结果。因果问题问的是这个世界的机制。多收集一些结果,不会自动告诉你机制。

看,和拨

上面那段话可以压缩成两个字,这两个字是全书的骨架:

✂ 全书唯一需要记住的区分

(seeing):我观察到 X 是 1 的那些情况下,Y 的平均值是多少。写作 P(Y | X=1)

(doing):我伸手把 X 设成 1,Y 的平均值会是多少。写作 P(Y | do(X=1))

这两个式子长得很像,中间只差一个 do。但它们是两个不同的数,可以差到符号相反。这本书从头到尾在做的事只有一件:在只有「看」的数据的情况下,把「拨」的那个数算出来。

为什么它们不同?因为「看到 X=1 的那些人」和「被我拨成 X=1 的那些人」,不是同一批人

回到开头那个功能。用了「学习计划」的人,本来就和没用的人不一样:可能新手更愿意用(他们需要计划),老手不用(他们不需要)。于是「用了计划的人分低」这句话里,混着两件事——计划的效果,和「用计划的人本来就是新手」。

而如果你能——抛硬币决定谁用谁不用——那么两组人在其他所有方面都一样,剩下的差就只能是计划的效果。

这本书要给你的,是在不能抛硬币的时候,怎么从只有「看」的数据里,把「拨」的答案算出来;以及在什么情况下这件事做不到——那也是一个必须知道的答案。

为什么这会改变你看别的东西的方式

因果推断不是「一门统计技术」,它是一层透镜。装上它之后,很多你以为自己看懂了的事情会换个样子:

你以为它是其实它是
A/B 测试是「一种产品方法」A/B 测试是唯一一种你亲手把箭头剪断的场合。它贵,是因为它买的是那一刀
回归里「控制变量」越多越严谨控制错一个变量,能把对的结论变成错的(第 11、12 章会当场演示)
机器学习学到的是「规律」它学到的是这个分布里的相关。分布一变就崩,因为相关会变、因果不会(第 23 章)
KPI 失效是因为「人会钻空子」更深的一层:你把一个结果当成了旋钮去拧,而它不是(第 5、23 章)
「幸存者偏差」是一个励志故事里的笑话它是一个可以精确计算的量,而且它有一大家子亲戚,你的数据集本身就是其中一个(第 4、7 章)
经济学论文在做「高级的相关分析」过去四十年经济学的主线就是到处去捡别人替你抛的硬币(第 19–21 章)
医学结论靠「大样本」靠的是随机化。样本再大也堵不上一扇开着的后门(第 14 章)

这张表是这本书对「值不值得读」的自我交代。如果学完之后你只多会了几个统计量,那这本书就白写了。它想换掉的是你读到任何一个数字时的第一反应

▸ 在现实里

2020 年前后有一批广为流传的报道:「去过某某地方的人感染率更低」「喝咖啡的人更长寿」「用某编辑器的程序员薪资更高」。

这些说法在数据上都可能是真的。问题从来不在数据造假,而在于:它们全都是「看」来的数字,被当成「拨」的结论用了。「喝咖啡的人更长寿」这句话,和「让你开始喝咖啡会让你更长寿」之间,隔着这本书的 23 章。

而且请注意:这些结论也不一定是错的。「相关不是因果」不能证伪它们,只能让它们悬着。要给出裁决,你需要别的东西。

✗ 这个直觉是错的
数据够多、够干净、方法够先进,就能看出因果。 数据量再大,也补不上因果结论所需要的那部分信息。那部分信息不在数据里,必须由你以「假设」的形式带进来。

上面四份数据可以要多少有多少,四个相关系数会越来越精确地收敛到 0.600,而四个因果效应还是 0.75、0、0、0。区分它们需要的东西——「谁能影响谁」——是关于世界结构的知识,不是关于这批数字的知识。

这一点让很多工程师不舒服,因为它意味着因果结论必然包含不可检验的成分。但这不是坏消息,这是好消息:它意味着这些假设可以被写出来、亮出来、被别人指着反驳。第 8 章之后你会看到,把假设画成一张图,是这门学问最实在的贡献——它把「我觉得」变成了「我假设这张图,你可以来吵」。

◇ 判词

D这个功能其实有用,而且能算出有用多少。

那个 −3.3 分是真的。而那个功能的真实效应是 +5.0 分——第 12 章会把这两个数一起放在桌上,用同一份数据算出来。符号是反的。

A 「数据显著就是真的」——显著性回答的是「这个差异是不是运气」,它对「这个差异是谁造成的」一个字都没说。样本越大,一个被混淆污染的估计只会越确信地错。 B 「不对劲一定是统计错了」——数据和统计都没错。错的是把一个「看」的数字读成了「拨」的结论。这是本书要治的病。 C 「相关不是因果,所以说明不了什么」——这是那句正确废话的典型用法。它让你停在门口。这份数据其实说明问题,只要你补上一样东西(第 10 章告诉你是什么)。

这一章的一句话

相关不是因果,但「相关什么时候是因果」有确切答案;这本书就是那个答案,而它的全部内容可以压成一个动作:看 ≠ 拨。

下一章,我们去找那只手。上面第三台机器里的 U 就是它——一个同时影响两边的第三者。你会看到一根滑杆:它只动 U→Y 这一支箭头,而 X→Y 那一支从头到尾锁死在 +0.30。滑杆拧到底的时候,你从数据里看到的效应是 −0.685