森林与塔

《山谷里的两座塔》

有时候,最危险的变量,不在数据里

很久以前,在群山之间有一座小城。

这座城最重要的建筑,是山谷两侧的两座高塔。东塔负责守卫东面的山口。西塔负责守卫西面的山口。

每年春天,城主都会从年轻人中招募新的守塔人。报名的人很多。

有人擅长爬山。他们腿脚有力,能背着沉重的东西翻越陡坡。也有人擅长射箭。他们眼力极好,能够在很远的地方命中目标。

还有一些人,两样都不错。

城主很喜欢这样的人。于是每年招募的时候,他都会测试两个项目:第一项:登山。第二项:射箭。

两项总成绩最高的人,才能进入守塔人的队伍。

第一年,有一百个人参加考试。考完以后,城主把所有人的成绩画在一张大纸上。他发现了一件很有意思的事情。

那些身体强壮、爬山厉害的人,通常也比较有力气拉弓。那些身体虚弱的人,射箭成绩通常也一般。换句话说:

爬山能力越强的人,射箭能力往往也越强。

城主觉得很合理。“身体素质好的人,似乎很多事情都会做得更好。”他没有再想这件事。

第二年,出现了一个很特别的年轻人。他的名字叫伊恩。伊恩有一双非常强壮的腿。他从小跟着父亲进山打猎,爬山几乎没有人能赢过他。

第一次测试的时候,他轻松拿到了全城最高的登山成绩。但是他的射箭水平只能算普通。

很巧的是,城里还有另外一个年轻人。他的名字叫莱昂。莱昂从小就住在平原。他不喜欢爬山。跑几步就喘。可是他射箭非常厉害。站在城墙上,能够射中很远的靶心。

于是考试结束以后,大家都说:

“这两个人真可惜。因为他们各自都有一个特别明显的短板。”

第三年,城主突然修改了规则。他说:“从今天起,只录取最优秀的二十人。”

很多年轻人开始紧张。因为二十个名额实在太少。

考试结束以后,城主把录取名单贴在城门口。伊恩在名单上。莱昂也在名单上。两个人都成为了守塔人。

半年以后,城主发现了一件非常奇怪的事情。他正在研究守塔人的表现。于是问了一位记录官:

“在这二十个人里面,是不是爬山越厉害的人,射箭就越差?”

记录官点头。“确实如此。”

城主很惊讶。“怎么会这样?”

记录官把表格递给他。其中一个名字旁边写着:伊恩:登山 98,射箭 71。另一个人:莱昂:登山 72,射箭 97。还有一个:登山 91,射箭 76。另一个:登山 75,射箭 94。

城主越看越觉得奇怪。他突然产生了一个念头:

“难道守塔人的两种能力之间,存在某种竞争?”

也许一个人把太多时间花在爬山上,就没时间练箭。也许一个人非常擅长射箭,就意味着他的身体条件没那么适合爬山。

这个解释听起来很有道理。于是城主把这个发现告诉了学者。

学者听完以后,只问了一句话:

“你为什么只看守塔人?”

城主一愣。“因为他们是我们真正关心的人。”

学者摇了摇头。然后把第一年的那张大纸拿了出来。他指着那张图说:“你还记得吗?第一年,一百个人全部参加考试。”

城主点头。

“在这一百个人里——爬山和射箭明明是正相关的。”

城主皱起眉头。“那为什么到了守塔人里面,却变成负相关了?”

学者没有回答。他只是在纸上画了两条线。

第一条:爬山能力 → 被录取

第二条:射箭能力 → 被录取

然后,他在两条线汇合的地方画了一个圆。最后,他指向那个圆。

“你们真正研究的,不是爬山,也不是射箭。”

“你们研究的是——被录取的人。”

城主沉默了。学者继续说:

“一个人想进入守塔队伍,有很多办法。如果他的登山能力不够强,那么他必须有很好的射箭能力来补偿。如果他的射箭能力一般,那么他就必须靠极强的登山能力补回来。”

“于是,一旦我们只观察那些成功进入守塔队伍的人——这两个能力就会开始互相‘挤压’。”

城主终于明白了。

一个年轻人:登山 98,哪怕射箭只有 70,也可能被录取。但是另一个年轻人:登山只有 70,那他的射箭就得非常高。反过来也一样。

于是,在守塔人的名单里:一个人的登山成绩越高,似乎就越不需要特别高的射箭成绩。看起来,就像:“爬山厉害的人,反而不擅长射箭。”

可事实根本不是这样。

学者拿起另一张纸。“真正的故事是这样的。”

假设在整个城市里:一个人的体能越好,他往往越容易爬山。同时,体能越好,他也往往越容易射箭。所以总体上:

Climbing ↑   ⇒   Archery ↑

两者可能是正相关。可是你们后来做了一件事。

你们把所有没被录取的人删掉了。只留下:守塔人。

于是数据变成了:在“被录取”这个条件下观察二者。而“被录取”恰恰同时受到:登山能力和射箭能力的影响。

城主盯着那张图。突然,他意识到了真正可怕的地方。

如果明年城主修改规则:“无论成绩多好,只要射箭超过 95,就一定录取。”那么守塔人内部的关系可能又会改变。

如果规定:“只要登山超过 95,就一定录取。”关系也会再次改变。

也就是说:不是山改变了。不是箭改变了。甚至不是人改变了。改变的是:你决定观察谁。

很多年以后,那位学者已经老了。城主也换了好几任。

但每当新城主研究守塔人的数据时,学者总会提醒他们:“你们可以研究守塔人。但记住——一个数据集里没有出现的人,也可能正在影响你看到的结论。”

新城主通常听不懂。于是学者会笑。然后把那张已经泛黄的纸翻过来。背面只有一句话:

“有时候,最危险的变量,不在数据里。”

故事背后的科学:碰撞器偏差

这到底是在讲什么?这就是统计学、因果推断中的重要概念:Collider Bias —— 碰撞器偏差(也常见翻译为:碰撞偏差、碰撞点偏差)。它是理解条件化(conditioning)、选择偏差(selection bias)和因果推断中很多错误结论的关键。

1. 什么叫 Collider?

先看一个最简单的结构。假设有两个变量:

X   →   C   ←   Y

也就是说:X 会影响 C,Y 也会影响 C。那么 C 就被称为:Collider(碰撞器)。因为两条箭头在这里“撞”到了一起。

故事里就是:

登山能力 → 是否成为守塔人 ← 射箭能力

所以:“是否成为守塔人”就是 Collider。

2. 最反直觉的地方来了

假设:X ⊥ Y,也就是说:X 和 Y 原本独立。

但如果你开始只研究 C = 1 的人,也就是条件化:

P ( X, Y ∣ C = 1 )

那么:X 和 Y 可能突然变得相关。甚至可能产生明显的负相关。这就是碰撞器偏差最经典的现象。

3. 为什么故事里会出现负相关?

假设录取规则大概是:Climbing + Archery > 150

那么一个人如果 Climbing = 95,那么他的射箭只需要 Archery > 55 就够了。但如果 Climbing = 60,那么他可能必须 Archery > 90。

于是,在“已经被录取的人”里面,一个人的登山分越高,为了达到录取门槛所需要的射箭分就越低。于是你就会观察到:

Climbing ↑   ⇒   Archery ↓

但这种负相关,并不意味着登山能力伤害射箭能力。它是筛选规则人为制造出来的统计关系。

4. 这就是为什么它特别危险

普通的统计思维很容易变成:“我发现 A 和 B 负相关。”然后进一步说:“A 会导致 B 下降。”

但在这里,你实际上做的是:先根据 A 和 B 共同决定的变量 C 筛选样本,再去观察 A 和 B。也就是 A → C ← B,然后你对 C 进行条件化 (Condition on C)。

结果就可能凭空制造出 A ↔ B 的关系。

5. 现实世界里的经典案例

假设你只研究:已经住院的人
然后发现:年龄越大的人,某种疾病严重程度反而越低。

这可能让你非常困惑。但如果“住院”同时受到“年龄”与“疾病严重程度”影响,那么你只观察住院患者,就可能引入碰撞器偏差。

所以:“医院里的数据”并不一定代表“所有人的数据”。这也是为什么临床数据、招聘数据、金融客户数据、平台用户数据经常需要特别小心样本选择。

6. 一个特别好用的判断方法

以后你看到一个研究,可以先问自己:“为什么这些人会出现在我的数据里?” 这句话非常重要。

  • 研究优秀员工:你实际上可能只观察了“被公司录用的人”。那么“是否被录用”可能同时受学历、能力、工作经验、面试表现影响。
  • 研究医院患者:你实际上观察的是“决定来医院 / 被收治的人”。
  • 研究贷款用户:你实际上观察的是“银行批准贷款的人”。
  • 研究创业公司:你实际上观察的是“成功融资的公司”。

这些“进入样本”的过程,本身就可能同时受多个变量影响。所以:样本不是自然掉进数据集里的。很多时候,数据集本身就是一个选择机制的产物。

7. 最危险的变量

最后再回头看故事中的那句话:“有时候,最危险的变量,不在数据里。”

这句话其实非常接近现代因果推断的思维方式。因为真正影响结果的东西,有时并不是你表格里的某一列变量,而是:你为什么拥有这张表。

两个因素共同决定了某人“进入你的样本”,而你又只研究进入样本的人,于是这两个因素之间可能被人为制造出一种原本不存在的关系。

它教给人的不只是一个统计学技巧,而是一种非常有用的思维习惯:看到相关性之前,先问:我们究竟是在观察世界,还是在观察一个被世界筛选过的子集?