99% 准确率的宝箱怪检测魔法

※ 本文有 AI 参与写作:Kimi M3.1 Flash 根据作者大纲构建了本文第一版,Deeepseek V4.1 Flash 和 GLM-5.3-Flash 帮助改写和清理逻辑。但三个模型都无法很好地处理话题转换时的过渡小段,且在文章过长时不再遵守 AGENTS.md 和 skill.md。

在 《葬送的芙莉莲》 里,精灵大法师芙莉莲有一手鉴定魔法,看一眼就知道眼前的箱子是不是伪装的宝箱怪。故事中,这手魔法的准确率高达 99%。

然后她一次又一次地开,一次又一次地被吞。

这个设计好笑的地方在于:99% 已经是一个高到离谱的数字,现实世界里的检测大多不敢吹到 99%。而动画里芙莉莲的失败率看着比设定的 1% 高得多,多到让人怀疑这个 99% 是不是抄错了行。

先别管动画抄没抄错。有意思的是「99%」这个数字本身,到底是什么。

一、99%,几乎什么都不是

无意义的 99%

假设漫长的时光里,大部分真宝箱早被别的冒险者探索过了。荒野里剩下的每 100 只宝箱中,只有 1 只是真宝箱。那么倘若这所谓「鉴定魔法」只是个假魔法,永远一律判定为宝箱怪,它是不是也能打出 99% 的准确率?

$$\frac{99}{100} = 99\%$$

一分不差。而这么一个假魔法,干了什么有用的事?一次都没有。它甚至比闭着眼睛乱猜更没价值:乱猜至少偶尔能撞上,而它把荒野里仅存的那一个真宝箱,精确地排除掉了。

这不是巧合,而是一整类情况。把这片荒野的不同时期排开来看:

时期 真宝箱 假定它是假的:准确率 它能找到的宝箱
无人踏足时 满地都是 $0\%$ $0$
探索中期 每 100 箱有 1 个 $99\%$ $0$
后来者 每 1000 箱有 1 个 $99.9\%$ $0$
终于被翻干净 一个不剩 $100\%$ $0$

四行里三行的准确率在 99% 以上,四行的战果全是零。「99% 的准确率」可以是对的,也可以同时是一句空话。这一点不需要任何公式,在荒野上走一圈就明白了。

大魔法师芙莉莲自然知道这手鉴定魔法是真的。可真魔法又能如何呢,99% 只是个虚妄的数字,这一点她同样是清楚的。更何况,宝物的珍贵足以让她情愿被多咬上几口。

那个假想的魔法压根没在做鉴定这件事,可它的分数偏偏很高。问题出在「准确率」的定义方式:它把所有判断一视同仁地数一遍,报对算一分。于是这个分数的高低,不仅取决于鉴定魔法有多灵,更取决于这批箱子里真宝箱和宝箱怪各占多少。而这个比例从来不是固定的:刚到一片野外,宝箱多;走了一天,宝箱少。同一手鉴定魔法,在不同地方可以有天差地别的准确率。

所以要评价这手鉴定魔法,第一步不是算它的准确率,是先问:想靠它知道什么?

她用它来干什么

芙莉莲站在一个箱子前,掏出鉴定魔法。她只问一件很具体的事:「这个箱子里有没有东西?」

「找到宝物」这件事对鉴定魔法提出两种要求,两件看似相似实则截然无关的事:

  • 有宝的时候,它能不能认出来,这是「灵敏度」。衡量它,等于把全部真宝箱摆到鉴定魔法面前,看它捞得出多少。
  • 没宝的时候,它会不会乱说,这是「特异度」。衡量它,等于把全部假箱子摆上去,看它有多少会瞎报。

这两个方向可以彻底背离。这手魔法完全可能把有货的全认出来,同时把没货的也全说成有货。「准确率」不够用,不是因为它算错了,是因为它把两件本来非分开不可的事情,揉成了一个数。

还有一个问题:这两种判断,她更关心哪一种?她在迷宫中走了一整天,遇到 100 只箱子,其中 1 只真宝箱。

  • 一种情况:她认出了那个宝箱,打开,带走一件东西。这一趟有收获,而那件东西只在这里有。
  • 另一种情况:她把宝箱怪当成了宝箱,被咬了一口。只有发型乱一点,明天还能接着找。

这两件事要记的,不是同一本账。前者记的是「拿到一件遗落的宝物,错过就不会再有第二次机会」,后者记的是「付掉一次无伤大雅的代价」。挨咬的代价可以反复支付,挨三口和挨一口差不太多;收获不能反复,那件东西只在那一个箱子里,也只在这一次。所以结论很干脆:

芙莉莲要的是宝物。被咬一口,只是去拿它要付的价钱。

「准确率」数的不是「有没有拿到」,而是「总共有几个判断对了」。而她要的那个量是:它说有货的时候,值不值得走过去。这两件事在空箱被错报成「有货」多到一定程度之后会分道扬镳,而「准确率」这个数字看不见这件事。

于是要把两边分开数

把真实情况和鉴定回答交叉起来,一共四个格子:

格子 名字 意思
有货 + 说有货 真阳性 真宝箱
有货 + 说没货 假阴性 漏掉了
没货 + 说有货 假阳性 被咬了
没货 + 说没货 真阴性 躲对了

四个格子各自对应一种性质不同的收益或损失:同样「说对了」,左上角让她心满意足,右下角让她毫发无损;同样「说错了」,一个挨咬,一个错失。合成一个数的那一刻,信息就没了。

灵敏度,在所有真有货的箱子里有多大比例被正确认出来:

$$Se = P(+\mid\text{有货}) = \frac{TP}{TP + FN}$$

特异度,在所有没货的箱子里有多大比例被正确说成没货:

$$Sp = P(-\mid\text{没货}) = \frac{TN}{TN + FP}$$

有了四格表,还差一个量:它说有货的时候,值不值得走过去。这个量叫阳性预测值,下文记作 PPV。

到这里,「99% 准确率」就显出了它的问题:它可以指 $Se$,可以指 $Sp$,可以指两者都 99%,还可以指某种把它们揉起来的东西。四个数字都叫「准确率」,都不算撒谎,但回答的是四个不同的问题。

揉在一起的数字为什么会塌

把四格揉成一个最常用的数:报对算一分,

$$\mathrm{Acc} = \frac{TP + TN}{N}$$

设这片地图上的宝物率为 $p$,这个数可以重写成一个加权平均:

$$\boxed{\mathrm{Acc} = p\cdot Se + (1-p)\cdot Sp}$$

看它的两个极端:宝物极其罕见时,$\lim_{p\to 0}\mathrm{Acc} = Sp$,准确率塌成特异度。原因很直白:罕见时绝大多数格子是「说没货」,默认答案几乎全对,分数自然漂亮。开头那个假想的撒谎鉴定,在这里现出了原形:它的准确率高,只是因为「说不是」在这个地方恰好是对的。

可芙莉莲要的不是「总共报对几个」,是「它说有货的时候,箱子里到底有没有」。这个量得单独算。

还是这片荒野,鉴定的都是同一手魔法。探索中期,10000 个箱子里有 100 个真货;快被翻完的时候,10000 个箱子里只剩 1 个真货。把两段时光并排:

探索中期 快被翻完
先验 $p$ $0.01$ $0.0001$
$Se = Sp$ $99\%$ $99\%$
$\mathrm{Acc}$ $99\%$ $99\%$
阳性预测值 $50\%$ $0.98\%$

Acc 一模一样,阳性预测值差了 51 倍。变化只来自一件事:它被用在了什么地图上。这个错误有个专门的名字,叫基率谬误:只看「有货的时候它报对的条件概率」,忘了先问「这里到底还有多少货」。

二、漏掉和误伤不是同一种错

挨咬的代价可以反复支付,错过的不能。既然两笔账轻重悬殊,判断就不能只数对错,得把损益直接摆开来记。设开到宝物得到收益 $b$,开错挨咬损失 $c_{FP}$。她可以去开箱,也可以放弃:不开的期望收益是零,开的期望收益是 $b$ 乘「说有货时真有货的概率」,减去 $c_{FP}$ 乘「说有货时其实没货的概率」。整理成比值,开箱的条件是:

$$\boxed{\frac{P(\text{有宝物}\mid\text{说有宝物})}{P(\text{没宝物}\mid\text{说有宝物})} > \frac{c_{FP}}{b}}$$

「她不怕被咬,她怕错过」这句话在数学上的全部内容,就是右边这个 $\dfrac{c_{FP}}{b}$。

如果开箱子的代价是零呢?$c_{FP} = 0$,判据右边是零,无论这片地图多空,都应该开。而这是对的。「反正开了不亏」,那当然一直开。

在一个「开箱完全免费」的世界里,「见到箱子就开」是可以论证的最优行为,而不是某个角色的性格缺陷。

这句话反转了批评的方向:要批评一个人乱开箱,必须先说清楚他的 $c_{FP}$ 不为零。芙莉莲的真实约束是,她的 $c_{FP}$ 不是零,但也差不了多少——她可以承受连续几次被吞,承受不了错过那件东西。

代价不会消失,只会换形态。代价明显不对称的场景至少有三种:

场景 $c_{FP}$ $c_{FN}$ 现实后果
市集地摊 小 中 收摊了白忙一天,但能再摆一天
传说难度区段 中 极大 错过的东西不会再刷,且会卡住进度
炼金熔炉 极大 小 投入的材料不可逆,失败就报废

同一套开箱判据,在这三张桌子上的答案完全不同:地摊前尽管随便挑,传说区里值得反复确认,而熔炉边恰恰要反过来——宁可错杀,不可错放。判据的形状没变,变的是代价的相对大小;每一个场景的阈值 $p^{*}$,画在哪里由代价决定,鉴定只通过 $LR_+$ 一个数进去。

三、宝物率不是常数

贝叶斯公式

魔法报「有宝物」的箱子里,真有宝物的占多少?设宝物率为 $p$:

$$PPV = P(\text{有宝物}\mid\text{报有}) = \frac{Se\cdot p}{Se\cdot p + (1-Sp)(1-p)}$$

它讲的事情一句话能念出来:分子是报「有」的箱子里真宝箱的那一份,分母是全部报「有」的箱子,真宝箱和被冤枉的空箱都算在里面。它是全文最重要的一个式子,一共只有三个成分——灵敏度、特异度、先验——缺一不可。来源就是贝叶斯公式:把分母 $P(\text{报有})$ 用全概率公式展开,再代入 $P(\text{报有}\mid\text{没货}) = 1-Sp$ 与 $P(\text{没货}) = 1-p$,即得。

它有个对称的量,阴性预测值,回答「说没宝物,敢不敢信」:

$$NPV = \frac{Sp(1-p)}{Sp(1-p) + (1-Se)p}$$

先验越低,它越贴近一。这是筛查里出名的不对称:先验低的地方,阴性很可信,阳性很可疑。

这两个量分别服务两种人。对输不起的冒险者,判「没宝物」就绕开走是他唯一的选择,漏掉的真宝箱不进开箱的账,NPV 就是他的全部世界。芙莉莲不在这本账里——判定对她从来不是开不开的开关,她用的是鉴定魔法,然后无视鉴定魔法。漏掉在她这里几乎不存在,存在的只是挨咬。

而野外的存货也只有这样,才能留给芙莉莲去尝试。判「有宝物」又真是宝箱的,大部分当场就被人开走了;能一路留到她面前的真宝箱,恰恰是一次一次被判「没宝物」的那些。她翻找的货架,是前面所有人按各自的判定筛剩的阴性堆。宝物率一年比一年低,不是箱子长了腿,是真货那一堆先见了底。

让 p 跑起来

为了让 PPV 达到某个值 $q$,先验至少要多少?令 $q$ 等于上式右边,两边乘分母、把含 $p$ 的项移到一边、提取公因式,解出:

$$\boxed{p_q = \frac{q(1-Sp)}{Se - q(Se + Sp - 1)}}$$

代 $Se = Sp = 0.99$,令 $q = 0.9$,得 $p_{0.9} \approx 0.083$。想让一个 99%/99% 的鉴定给出九成可信的结论,地图上的宝物率至少要到 8.3%,一个相当高的门槛。再取 $q = 0.99$,得 $p_{0.99} = 0.5$:先验得有一半是真宝箱,PPV 才追得上灵敏度。

还有一个退化情形:$Se + Sp = 1$ 时 $p_q = q$,魔法只是把先验原样搬过去,一个数字都没有改。$Se + Sp$ 这个和是衡量「信号含量」的粗略指标,它在 1 附近时这手魔法几乎没用。

而先验趋近零时,$PPV \approx \dfrac{Se}{1-Sp}p$,先验把 PPV 压向零,$Se$ 和 $Sp$ 决定的只是压下去的坡度。所以单独吹嘘其中任何一样都没有意义。

稀有度是指数

前面反复出现「宝物率很低」,这句话在数学上意味着什么?一个真宝箱留到今天,不是躲过了一关,是躲过了很多关。

芙莉莲不是第一个站到这些箱子面前的人。漫长的岁月里,每个箱子前面都来过别的冒险者。他们不像芙莉莲,被咬是真会没命的:只要判成宝箱怪,碰都不会碰。设每个路过的冒险者把真宝箱留下的概率是 $c$,一个箱子先后被 $m$ 个互不相干的冒险者路过还能留到今天:

$$P(\text{留到今天}) = c^{m}$$

代数字看它塌得多快:$c = 1/20$ 时,$m = 2$ 是 $2.5\times10^{-3}$,$m = 4$ 是 $6.25\times10^{-6}$,$m = 8$ 是 $3.91\times10^{-11}$。所以「稀有」不是一个形容词,是一个指数。

路过的冒险者 $m$ $c=1/20$ 时的留存概率
1 $0.05$
2 $2.5\times10^{-3}$
4 $6.25\times10^{-6}$
8 $3.91\times10^{-11}$

这带来三个后果:

  1. 稀有度不均匀。一个地段被多少人路过全看它的名气,难度相邻的两片地图,宝物率可以差一个数量级。
  2. 稀有度可以被制造。在一个箱子前面多摆一道独立的鉴定,稀有度立刻乘一个 $c$。
  3. 中段最危险。$10^{-4}$ 落在「说不准但不至于没人信」的区间里,会被大量尝试;$10^{-8}$ 落在「根本没人会去找」的区间里,不会被。于是人们系统性地把注意力集中在最不该集中的那一档上。

第三条是本文后半段所有故事的引擎。

还有一件事在现实里的用处比看起来大:四次放行分给四个陌生人,和四次放行落在同一个人头上,对「箱子能否留到今天」来说是同样罕见的两件事。决定稀有度的是独立判定的道数,不是做判定的人数。所以「多拉几个人一起看就更保险」在数学上站不住,除非那些判定本身相关。

把先验抬上去

先验低不是不可改变的。抬 $p$ 有四种正当手段,按成本从低到高排:

手段 机制 宝箱版本
打听 用别的信息源筛一次 问路过的商人这层有没有宝
看相 用与鉴定无关的独立特征 箱子的成色、铭牌、封蜡
换地图 只去宝物率更高的区段 只进传说难度区
加一道鉴定 换一个原理的鉴定魔法 找第二个鉴定魔法复核

代一组数字:普通区段先验 $0.005$,一个 $Se = Sp = 0.99$ 的鉴定魔法给出的 PPV 只有 33%;先用一次前置筛选把先验抬到 $0.026$,同一个魔法给出 72%。差距 2.2 倍,而鉴定魔法一个字没改。

提高先验是性价比最高的动作,因为它不需要动鉴定魔法,只需要动「谁来开箱」。

四、挖出来是杂物箱:第三种结局

前面所有结局都是二元的:有宝物 / 没宝物。现实里还有一类情况不在这个划分里。

荒野里还有这样一种箱子:鉴定魔法说「有宝物」,判定没有错。挖开之后,里面确实有东西——不是空的,也没有宝箱怪,而是满满一箱瓶瓶罐罐,件件寻常,拉到集市上也换不来几个铜板。

检测完全正确,而整个动作仍然是错的。它之所以需要单独讨论,是因为它的严重性被四格表遮蔽了:在四格表里这一箱被记为 $TP$,属于「成功」那一列。统计上它漂亮,账上它是个坑。

设鉴定后被挖开的箱子总数为 $D_{\text{det}}$,其中「不鉴定也会被别人挖走并用上」的为 $D_{\text{surf}}$,空挖率定义为

$$\mathrm{OF} = \frac{D_{\text{det}} - D_{\text{surf}}}{D_{\text{det}}}$$

麻烦在于 $D_{\text{surf}}$ 是反事实,「如果不挖会发生什么」没法数。但不需要它精确,需要的是一个能推翻它的证据。记录两个数:鉴定制度铺开后的年挖箱总数 $I_{\text{after}}$,和其中真正进入市场并成交的数量。一个不挖也会自然出现的箱子,也会自然地流入市场成交,所以 $D_{\text{surf}}$ 不超过铺开前的成交量 $V_{\text{before}}$,于是

$$\mathrm{OF} \ge \frac{I_{\text{after}} - V_{\text{before}}}{I_{\text{after}}}$$

代一组数字,$I_{\text{before}} = 35$,$I_{\text{after}} = 96$:至少 63.5% 是白挖。这个推导只用了两个数字和一个不等式,每一个前提都写在纸面上。它给的是下界,真实值通常更高。

这个不等式能证明「有白挖」,证明不了「有多少」和「是哪一类」。要加强它,需要更细的证据。一条是分布不变:如果被挖箱子的成色分布和处理成本分布在制度铺开前后都几乎一样,那么多出来的那批箱子在行为上无法与原有的区分,就不能声称它们「本来也会被挖」。另一条是分层:把箱子按「东西能不能出手」「要花多少工夫」分档,如果每一档都同比例上涨,那是整体普涨,也就是白挖;如果只有最低那一档在涨,那只是正常的品质下沉。

空挖的代价也不止「白挖一次」:

代价成分 宝箱版
直接 搬运费、处理费
机会 那一天本可以用来找传说箱
时间 从出发到空手而回的全过程
记录 这个人手上有一次「挖了个空」的经历
心理 未来的箱子会更难让人相信

后两项是会累积的:一次空挖不是一次性成本,它是一条会跟着这个人走的记录。所以空挖的真实代价不是空挖率本身,而是它乘上一个随时间增长的因子。

最后记一个幻想世界里数不出来的东西:怪物吃人,被挖开的箱子越多,遇到怪物的次数越多,死亡人数应该跟着涨。如果挖箱数涨而死亡数不动,多出来的挖箱就有问题了。这个「谁都不在意的、但确实存在的」外部终点,现在只是个类比。后面会遇到一个真实的领域,那里有真实可靠的外部终点,同样的推理一字不差地成立。

五、开一次不够:级联,和一个反例

多做几次

单道灵敏度 $Se$、各道相互独立时,$m$ 道全部漏掉的概率是 $(1-Se)^m$,累积灵敏度:

$$Se_m = 1 - (1-Se)^m$$

增长很快:$Se = 0.8$ 时,一道 80%,两道 96%,三道 99.2%。这就是「多道确认」的全部合法性来源:便宜的、灵敏度中等的鉴定,做三次比做一次强得多。反过来,单道灵敏度 20% 的鉴定,要做 21 道才能到 99%。

但这个公式有一个前提:各道独立。同一个箱子反复鉴定恰恰不独立——它的成色、封蜡状态决定了每一次鉴定的读数,第一道和第二道共享了几乎全部的物理信息。设相关性为 $\rho$,$m$ 道的有效道数不是 $m$,而是 $\dfrac{m}{1+(m-1)\rho}$。代 $Se = 0.8$、$m = 3$、$\rho = 0.5$:独立假设给出 99.2%,考虑相关性后只有 91.1%。真正安全的做法是每次用不同的手法,针对箱子的不同侧面——先听,后照,再拆封蜡。

级联:芙莉莲真正在做的事

$1-(1-Se)^m$ 描述的是「对全体箱子重复鉴定」,而现实里的多道确认是级联的:第一道说有宝物的,才进第二道。这个差别是决定性的,因为级联的每一道都在重新估计先验。

设定:$N = 10000$ 个箱子,$p = 10^{-4}$,1 个真宝箱。$Se = Sp = 0.99$,各道独立。第一道对全体做,阳性池 $0.99 + 99.99 = 100.98$ 个,PPV 约 0.98%。第二道只做这 100.98 个,阳性池缩到 1.98 个,PPV 49.5%。第三道只做 1.98 个,阳性池 0.98 个,PPV 98.98%。

0.98% → 49.5% → 98.98%。一个百分点的起点,三道之后是九成九。

用几率形式交叉验证一遍。先验几率是 $OD_0 = 10^{-4}/(1-10^{-4})$,每道鉴定的 $LR_+ = 0.99/0.01 = 99$,三道独立则几率连乘:$OD_3 = OD_0\times99^3 = 97.04$,转回概率得 0.98980——和级联链算出的结果一致到小数点后五位。两条路对上了:级联的有效性确实来自每道先验的重新估计,而「全体重复」的 $1-(1-Se)^m$ 和它不是一回事。

再做一个反例:同样三道,但都对全体做,任何一道报「有宝物」就算有。累积灵敏度还是 97%,可一个不是宝箱的箱子三道至少错报一次的概率是 2.97%,阳性池涨到 298 个,PPV 只有 0.33%,比一道的 0.98% 还低三倍。在低先验场景给同一个对象做三道独立鉴定,等于给了它三次被冤枉的机会。

方案 阳性池 PPV 累积灵敏度
一道 $100.98$ $0.98\%$ $99.0\%$
三道全体 $297.94$ $0.33\%$ $97.0\%$
三道级联 $0.98$ $98.98\%$ $97.0\%$

三道级联和三道全体的灵敏度几乎相同,阳性池差了 300 倍。这一行对比是本文最想让人记住的东西:

同样的灵敏度提升,可以花 300 倍的代价去换。区别只在于有没有把中间那 99 个空箱挡在门外。而挡住它们的不是更好的鉴定,是流程设计。

学徒和批量:把成本压下来

芙莉莲的鉴定魔法贵。便宜的替代品是让学徒看一眼,$Se \approx Sp \approx 0.95$。单独用不行:代进 PPV 公式,$p = 0.01$ 时只有

$$\frac{0.95\times0.01}{0.95\times0.01 + 0.05\times0.99} \approx 16\%$$

但学徒能一次看很多个箱子:把 $b$ 个箱子混成一批整批判一次,判阳的批再逐个细查。批处理的总成本在

$$b^{*} = \frac{1}{\sqrt{p}}$$

处最低。$p = 10^{-4}$ 时最优批是 100,总成本只有逐个细查的 2%。

批处理还顺手做了一件事:富集。判阳批里真宝箱的比例是

$$p_{\text{pool}} \approx \frac{1}{b}$$

在成本最优的 $b^{*} = 1/\sqrt p$ 上,细查池的先验恰好是 $\sqrt p$:$p = 10^{-4}$ 的地图,批处理把细查池的先验抬到 1%,抬高了 100 倍。批处理本身就是一个前置筛选,和「打听、看相」是同一个数学现象。

但批处理不是免费的。一个真宝箱拖着整批 $b - 1$ 个无辜箱子进细查,这叫污染;批越大,单个真宝箱的信号被摊得越薄,可能整批判阴,那一个真宝箱被漏掉,这叫稀释。池化的正确性依赖「混合之后信号仍然可检出」,这个前提的成立范围必须实测,不能假设。

六、把这台机器搬出幻想世界

在奇幻故事里挑一个开宝箱的小段子,展开这么一大篇计算,像是在认真地搞笑。

至少,认真是真的。

因为现实中也有一种东西,同样重要到错过就损失巨大,值得不惜代价把它检测出来。

它不是宝物。但一路读下来,应该也能猜到了:它是罕见病,而医学筛查就是鉴定魔法。

逐项对应

前几节攒下来的每一样东西,在现实里都有一个对应物:

  • 真宝箱,对应病人;宝箱怪、空箱、杂物箱,对应健康人。
  • 鉴定输出的「有宝物 / 没宝物」,对应检测结果的阳性 / 阴性。
  • 灵敏度与特异度,名字照旧;$PPV$ 与 $NPV$,对应阳性预测值与阴性预测值。
  • 先验 $p$(宝物率),对应患病率。
  • 宝物价值 $b$,对应早发现早治疗的收益。
  • 挨咬代价 $c_{FP}$ 与错过代价 $c_{FN}$,对应假阳性与假阴性各自的代价。
  • 被放行 $m$ 次才留到今天的箱子 $c^m$,对应罕见病。
  • 学徒目视加批量,对应廉价初筛加批量检测。
  • 外部终点「尸体数量」,对应死亡率。
  • 空挖,对应过度诊断。

把这份清单填进去之后,有一件听起来夸张但确实是事实的事:前几节的每一个公式,一个符号都不需要改。

现实里的检测没有一台是假的,搬过来的是数学,不是怀疑。这不是巧合。回头数一数,全部推导只用到六样东西:两个不交且并为全体的类,一个二元判定,两种错误,一个先验,一笔代价,一条判定规则。没有一条依赖「箱子里装的是什么」。只要一个领域同时满足这六条,它就自动获得本文的全部结论。

这份对应不是幻想

第三节埋过:一个真宝箱要在漫长的岁月里留到今天,它面前的每个冒险者都得放行,概率是 $c^m$。现实里有一件事和这个结构完全一致:一个人要发病,必须同时从父母双方各拿到一个罕见的致病基因。

以常染色体隐性遗传病为例,设致病等位基因频率为 $q$,携带者频率为 $c \approx 2q$,则发病率是 $q^2 \approx c^2/4$。这就是 $c^m$,其中 $m = 2$。代几个真实数字:脊髓性肌萎缩(SMA)发病率约 $1/10000$,反推携带者频率约 $1/50$;苯丙酮尿症(PKU)在欧洲人群中的携带者频率约 $1/30$ 到 $1/60$,报道发病率恰在 $1/10000$ 量级。罕见不是偶然的社会现象,它是 $c^m$ 这个函数的性质。

于是第一节开头那个循环闭合了:稀有 $\Rightarrow$ 先验低 $\Rightarrow$ PPV 低 $\Rightarrow$ 阳性结果不可信 $\Rightarrow$ 需要二轮、三轮确认试验。而四种抬先验的手段在这里全部有名字:打听是问诊和暴露史,看相是体格检查和影像,换地图是高危人群门诊,加一道鉴定是换一种原理的检测。批处理的两种新错误也有对应:污染,是一个阳性标本带崩整批复查;稀释,是标本混得太多、信号低于检出下限。

七、四格表进诊室

四个数字,关心的人不一样

数字 回答什么 谁关心它 典型误解
灵敏度 $Se$ 有病的时候仪器灵不灵 筛查项目负责人 以为它等于「阳性结果可信」
特异度 $Sp$ 没病的时候仪器会不会乱报 实验室与临床 以为它等于「阴性结果可信」
阳性预测值 $PPV$ 仪器说有病,真有病的概率 拿到阳性报告的人 以为它只由仪器决定
阴性预测值 $NPV$ 仪器说没病,真没病的概率 拿到阴性报告的人 以为高 $NPV$ 就能排除
总体准确率 $Acc$ 什么也回答不了 广告牌 以为它有任何诊断意义

最常见的一处错位是:$Se$ 回答的是 $P(\text{阳性}\mid\text{有病})$,$PPV$ 回答的是 $P(\text{有病}\mid\text{阳性})$。一对互逆的条件概率,在人群构成改变时会朝相反方向移动。

同一根验孕棒,从 92% 到 9%

家庭验孕棒的 $Se$ 和 $Sp$ 都在 99% 上下,广告写的「准确率 99%」说的就是这个。差别全在使用它的队列:

使用场景 大致先验 $p$ $PPV$
停经六周、自述有性生活 $10\%$ $92\%$
同房后几天、来查「到底有没有事」 $1\%$ $50\%$
育龄女性健康体检普筛 $0.1\%$ $9\%$

同一根验孕棒,同一批生产标准,从 92% 到 9%。而广告说的 99% 是哪一行,没人说明。

临床里同样的账天天在算。急诊胸痛患者做主动脉夹层的增强 CT,$Se \approx 98\%$,$Sp \approx 99\%$,够好了;可夹层在胸痛患者里的比例只有千分之二上下,算出来 PPV 约 16%。剩下六分之五的阳性是各种形态学上的临界情况,影像科给它们起了个诚实的名字:「不能排除」。它不是诊断,也不是排除,是一个中间态;临床真正负责的工作,是把这些假阳性从「疑似夹层」的队列里挪出去。

血库里的一场接力

1985 年,第一个 HIV 抗体检测(ELISA)进入血库筛查。它不差:$Se$ 和 $Sp$ 都在 99.5% 上下。可献血人群的感染率只有约万分之五,代进 PPV 公式:

$$PPV = \frac{0.995\times0.0005}{0.995\times0.0005 + 0.005\times0.9995} \approx 0.09$$

9%。每报出 11 个阳性,10 个是假的。这个数字远低于血库能接受的水平,但血库不能不筛——假阴性放出去的是一袋能传染 HIV 的血。出路就是级联:ELISA 阳性的标本全部送去做第二道原理不同的确证试验(Western blot),它把病毒蛋白逐条分开识别抗体,特异性高得多;后来又加入第三道核酸检测,直接找病毒的 RNA,顺带把「感染了但还测不出抗体」的窗口期也压掉了几天。

三道级联下来,阳性才敢用来拦截一袋血。这是级联在现实里最成熟的一个样板,而它的每一环,都对应前面算过的那一层:第一道负责不漏(灵敏度优先),后面的道数负责不冤枉(特异性优先),先验在每一道之间重新抬升。

窗口太窄的时候

级联的每一环都要花时间,而有一类疾病连时间都不给。婴儿型克拉伯病(Krabbe 病)是一种常染色体隐性的代谢病,有效治疗只有脐血造血干细胞移植一种,而且必须赶在症状出现之前做,通常认为出生后六个月以内是有效窗口。麻烦在于,这个病的可检出时点(酶活性测得极低)和症状出现时点几乎重合:等到症状出现再确诊,等于确诊即宣告失败。所以对它,新生儿筛查是唯一有意义的形态——必须在孩子还完全正常的时候就知道。

算一下账。患病率约 $1/80000$,酶活性检测取 $Se = 0.95$、$Sp = 0.99$。对已经有过患儿的家庭,先验约 $1/300$,代进 PPV 公式约 24%;对未治疗即死亡的病,$c_{FN}$ 近乎无穷大,代进开箱判据,实际先验高出阈值两个数量级,筛查压倒性地值得做。

但这个案例真正难的部分不在算术。一个孩子被确诊时六个月大,完全健康;移植可能救他,也可能在婴儿期把他杀死;不移植,他会在一年内开始不可逆的神经退化。筛查把一个原本由自然承担的痛苦,转成了一道必须由父母在两周之内做完的选择题。这是筛查伦理里最棘手的部分,公式帮不上忙。

年龄如何决定一个检测有多准

产前筛查是这套数学最好的展示窗口,因为先验 $p$ 是一个可以直接查表的已知量,而且它随母亲年龄变化得极其剧烈。

取无创产前筛查(NIPT)对 21 三体的性能:$Se = 0.995$,假阳性率 $5\times10^{-4}$,仪器这一侧进步巨大。把四个年龄代进 PPV 公式:

母亲年龄 先验 $p$ $PPV$
20 岁 $1/2000$ $49.9\%$
25 岁 $1/1400$ $58.7\%$
35 岁 $1/400$ $83.3\%$
40 岁 $1/100$ $95.3\%$

同一个检测,同一批试剂,同一个实验室,PPV 几乎翻倍,而一个物理量都没变,变的只是母亲的生日。

18 三体和 13 三体更糟:它们的灵敏度本身只有 0.90 左右,先验也更低,算出来 PPV 分别约 26% 和 13%。这直接产生了一条指南规则:NIPT 对 13 和 18 三体报阳性,必须做侵入性产前诊断才能做任何不可逆的决定。理由不是「这个结果不可靠」,而是「这个结果的 PPV 只有 13% 到 26%」。这两句话听起来像,但只有后一句能被引用、被质疑、被检验。

单次检测的假阳性看着温和,多年累积起来就是另一回事。Elmore 等人 2005 年发表的研究里,连续 10 年每年做一次钼靶筛查的 962 名女性中,49.2% 至少收到过一次假阳性结果,其中 145 人经历了活检。单次假阳性率约 5%,若 10 次之间完全独立,累积概率是 $1-0.95^{10} \approx 40\%$;实测的 49.2% 更高,因为同一个人的重复筛查之间存在正相关。同一批数据,收益是每 1000 人检出 11 到 13 例乳腺癌,成本是每 1000 人约 150 次活检。「检出 1 例,付出约 12 次活检」,这个比值比「99% 准确率」有信息得多。

韩国甲状腺:一次教科书级的现场实验

第四节那个空挖率公式,在现实里等着一组现成的数字。

2011 年起,韩国把甲状腺超声检查纳入国民癌症筛查项目。2012 年约 76.8 万人接受检查,发现 3104 例甲状腺癌;2013 年约 103.5 万人,发现 5865 例。发病率从筛查前大约每 10 万人 35 例,涨到 2014 年的约 96 例。

关键的一行在下面:同期甲状腺癌死亡率基本没有变化,维持在每 10 万人 4 例上下。

发病率涨了近三倍,死亡率一动不动。这正是空挖率不等式要抓的东西:筛查前「本来也会出现」的病例必然包含在历史发病率里,多出来的部分必须另找解释。代进去,$I_{\text{before}} = 35$,$I_{\text{after}} = 96$:

$$\mathrm{OF} \ge \frac{96-35}{96} \approx 0.635$$

至少 63.5% 是过度诊断。换一组口径更宽的统计,$6 \to 35$,算出至少 83%。后续研究给出的估计范围大致在 50% 到 90% 之间。

被多检出来的绝大多数是很小的甲状腺乳头状癌,影像上可疑,生物学上几乎不会进展。代价是数万台切除术、数万人终身服用左甲状腺素、数百万次随访超声——最后这一项还挤占着别人的影像资源,机会代价在这里是零和的。值得强调的是,这不是哪台机器坏了,检测本身没有问题;是把全人群倒进检测器这个动作出了问题。普查没有入口约束,它提高的不是先验,是假阳性。

神经母细胞瘤筛查是这个案例的姊妹篇。1990 年代美、日、欧几项大规模试验结果一致:筛查确实检出了更多病例,但死亡率不变,死亡年龄分布不变,各期生存率也不变。三条判据同时成立,说明新检出的病例和原有病例在临床行为上无法区分。这大概是医学史上过度诊断最干净的例子,代价是几万个孩子接受了手术和化疗,其中一部分本可以只是观察。

一个检测毫无问题、项目仍然失败的案例

先天梅毒在美国消失了四十年,然后回来了。2013 到 2014 年降到历史最低点,每 10 万活产不到 10 例;之后曲线掉头向上,到 2022 年前后重新回到每 10 万活产 100 例以上。

第一反应是「检测变差了」。但梅毒的血清学检测几十年没变,实验室的标准化程度比二十年前更高。变的是检测之外的东西:产前检查的覆盖率、无症状梅毒的识别率、无保险和无稳定住所人群的比例。

把机制写成公式:设有效筛查强度为 $Se_{\text{eff}} = c\cdot Se\cdot\alpha$,其中 $c$ 是筛查覆盖率,$\alpha$ 是查出后真正完成治疗的比例。取 $Se = 0.95$、$\alpha = 0.90$,覆盖率从 95% 掉到 60%,有效灵敏度就从 81% 掉到 51%,检测性能一个数字没改。病例数还正比于患病率 $p$ 和查出不治的传播概率 $\beta$——五个因子里只有 $Se$ 属于实验室。

筛查项目的有效性等于检测性能乘以可达性乘以依从性乘以治疗可得性。四个因子里,只有第一个属于技术。

原因很简单:$Se$ 从 0.90 提到 0.99 需要一次实验室级别的技术突破,而覆盖率从 0.90 掉到 0.70,只需要一次预算削减。

塔斯基吉:$c_{FN} = \infty$ 被卡住了

1932 年起,美国公共卫生服务部在阿拉巴马州塔斯基吉县观察梅毒的自然史,数百名黑人男性患病而不被告知、不被治疗。1947 年青霉素已成为标准治疗,项目仍决定不给。

这个案例常被当作伦理丑闻引用,但它同时是第二节那个开箱判据的一个标本。梅毒三期致死,$c_{FN}$ 是无穷大,而判据阈值

$$p^{*} = \frac{c_{FP}}{b\cdot LR_+ + c_{FP}} \to 0$$

塌到零:任何阳性都必须按患者处理,没有例外,不存在任何「值得再权衡」的余地。所以塔斯基吉不是「当初不知道有青霉素」,也不是「权衡之后选了不治」,它是在 $c_{FN} = \infty$ 的情形下做出了 $c_{FN} = 0$ 的决策。这是逻辑上的失败,不是知识上的失败。

疾病定义没变,治疗能力变了,而决策框架没变。前面说过,检测的定义、诊断阈值和治疗方案三者是耦合的,改掉任何一个,另外两个都必须重新审视。这套结构直到 1974 年《国家研究法案》要求所有联邦资助的人体研究通过伦理委员会审查,才被制度性堵住——而那已经是事件暴露之后的事。制度总是跟着丑闻走,而不是提前于丑闻。

八、筛查项目是怎么拼出来的

1968 年,世界卫生组织出版了 Wilson 和 Jungner 的《疾病筛查的原则与实践》,二十几页的小册子,地位相当于这个领域的 Koch 推定列表。十条原则里最值得注意的是:没有一条要求「筛查必须被证明有益」。其余几条倒是和前文的量一一对应:要求疾病有一段可识别的无症状期,那是筛查的唯一立足点;要求对已识别的患者有可接受的治疗,因为没有治疗,$c_{FN}$ 就是无穷大;要求查找病例的费用与整体医疗支出相平衡,那是成本效果分析的位置。

这个缺陷后来被补上,现代标准要求随机对照试验证据优先。门槛实际变高了:美国处于某种形式筛查推荐中的疾病,从 1995 年前后的约 110 种降到 2012 年的约 50 种,删掉的大部分不是被证明有害,而是被证明「证据不足」。

RCT 之所以必要,是因为筛查的收益必须用死亡率来量,而死亡率是最不容易被过度诊断污染的终点;之所以昂贵,是因为样本量由效应量的平方决定:死亡率相对下降 20% 的项目,两组各需约 1700 人;下降 10%,各需约 7000 人;再往下,样本量很快把项目判死。罕见病筛查做不了 RCT,不是因为效应量小,而是因为事件数根本凑不出来——发病率 $1/50000$ 的病,要凑 30 个死亡事件需要一百五十万人和一二十年随访。

只讲失败会让人以为筛查都不行,所以值得记几个被广泛认为成功的项目。先天梅毒的孕期筛查加青霉素预防:检测便宜稳定,治疗一次性且代价极小,婴儿的结局可以被观察,筛查效果能被独立验证。血库的 HIV 与肝炎筛查:单看 PPV 只有 9%,但假阳性的后果只是扔掉一袋血,假阴性的后果近乎无穷大,而且同一份血天然被多个独立的检测系统交叉覆盖——那是级联的实践形态。乙型肝炎表面抗原筛查加疫苗:筛查的输出能直接转化成一次便宜、有效的干预。归纳起来就三条:治疗便宜有效,窗口够宽,假阳性有便宜的出路。三者齐备,筛查才立得住。

如果只从这篇文章带走一份操作性清单,可以是这几条:

  1. 看到「准确率 X%」,先问哪个方向:$Se$、$Sp$、$PPV$ 还是 $Acc$。
  2. 看到任何 $PPV$,先问先验。没有先验的 $PPV$ 是一个没有单位的数字。
  3. 低先验下,$Sp$ 比 $Se$ 值钱:提高 $Se$ 的边际收益是 $p$ 量级,提高 $Sp$ 的边际代价是 $(1-p)$ 量级。
  4. 多轮筛查的正确形式是级联,不是叠加。
  5. 批量检测是富集操作:先验从 $p$ 抬到约 $1/b$,成本在 $b = 1/\sqrt p$ 处最低。
  6. 阈值是决策,不是性能。美国儿童血铅干预线从 40 降到 10,测量数据没变,变的是「多高的血铅值得干预」这个决策。
  7. 排序不产生信息:没有额外信息时,从 100 个箱子里挑「最可疑」的一个,命中率就是 $p$。
  8. 警惕金标准本身有误差,那会让所有误差估计都偏乐观。
  9. 过度诊断三判据:发病率升而死亡率不动;生存曲线不变;各期生存率不变。
  10. 筛查项目最脆弱的环节是可达性,不是检测。

九、回到那只箱子

把芙莉莲的期望收益算一遍

现在回到芙莉莲。设开到宝物的收益 $b = 100$,挨咬代价 $c_{FP} = 1$,$Se = Sp = 0.99$。开一次箱的期望收益是 $E = 101\cdot PPV - 1$,对几个先验算一遍:

先验 $p$ $PPV$ 期望收益 该不该开
$0.01$ $50.0\%$ $+49.5$ 疯狂开
$0.001$ $9.0\%$ $+8.1$ 开
$0.0001$ $0.98\%$ $-0.01$ 五五开
$0.00005$ $0.49\%$ $-0.50$ 别开

零点在 $p \approx 1.01\times10^{-4}$。把 $c_{FP}$ 换成 5 再算一遍:期望收益变成 $105\cdot PPV - 5$,零点上移到 $5\times10^{-4}$。这个敏感性值得摆出来:在极低先验的场景里,「挨一次咬的代价有多大」这个纯主观判断,比「鉴定魔法有多准」更能决定行为。精度从 99% 提到 99.9%,相当于把 $LR_+$ 从 99 提到 999,开箱阈值只降到原来的十分之一;而「一次失败能忍」和「一次失败就退出」之间,是 $10^{-4}$ 到 $5\times10^{-4}$ 的差距。修正信念的收益,不如修正偏好。

她做的正是级联

一个 $Se = Sp = 99\%$ 的鉴定魔法,在宝物率 $10^{-4}$ 的环境里,单次阳性只有 0.98% 可信。而级联那一节算过那串数字:0.98% → 49.5% → 98.98%。所以芙莉莲做的事情,在结构上等价于级联确证,她的确证方式是把箱子打开看。至于「一次又一次被吞」,从上面的表看,是 $c_{FP}$ 取值偏低时必然的均衡状态:期望收益为正,但单次成功率不到 5%。她在持续为正期望的赌局付费。

「99% 准确率」没有错,只是它回答的问题和观众以为的不是同一个。观众以为它说的是「我开箱有九成把握」,它实际说的是「我判断宝箱时,看错的概率是 1%」。从前者到后者,要走一遍条件概率,要走一遍先验,要走一遍代价比较。而绝大多数误读,都发生在以为可以跳过这三步的地方。

医院里没有宝箱怪,但有检验单。有检验单的地方,就有 $PPV$。

如果她能改一件事

假设给芙莉莲三个选项。起点 $p = 10^{-4}$,用几率形式算:每做一轮鉴定,后验几率乘一个 $LR_+ = \dfrac{Se}{1-Sp}$,$n$ 轮之后

$$OD = \frac{p}{1-p}\cdot LR_+^n, \qquad PPV = \frac{OD}{1+OD}$$

方案 每轮 $LR_+$ 轮数 $PPV$ 相对成本
原始 99 1 $0.98\%$ 1
换更准的魔法(99.9%) 999 1 $9.1\%$ 极高
加一道独立鉴定 $\times 99$ 2 $49.5\%$ 中
便宜鉴定重复三次($Se = 0.80$,$Sp = 0.98$) $\times 40$ 3 $20.4\%$ 低

加一道独立鉴定胜出得毫无悬念,但背后的结构规律比这个具体比较更通用。对上式取对数:对数几率是加法,每一次检测贡献一个 $\ln LR$,与先验相加。所以「信息」是可以相加的资源,它的单价是 $\ln LR$ 除以成本:

方案 $\ln LR$ 假设成本 单价
换更准的魔法 $6.9$ $100$ $0.069$
加一道独立鉴定 $4.6$ $50$ $0.092$
便宜鉴定重复 $3.7$ $2$ $1.84$

便宜鉴定的单价高出 20 倍以上。只要它允许重复足够多次,它一定能赢。

在先验极低的地方,信息必须便宜。精确度的提升在成本上是指数级的,而把同一份信息重复采多遍是线性叠加的。所以在「十次里九次都是坏消息」的检测环境里,正确的策略是「用便宜的手段多做几次」,而不是「花钱做一次准的」。芙莉莲真正做对的事不是「她的鉴定魔法很准」,而是「她反复确认」。

一些豆知识

完美使用与一般使用

1970 年代口服避孕药上市时,广告上的「超过 99% 有效」指完美使用条件下的有效率;一般使用条件下失败率约每年 7%,实际有效率约 93%,差距几乎全部来自忘记吃药。同一句话里的两个 99%,一个指条件概率,一个指无条件概率。

「罕见」的定义非常随意

欧盟的定义是患病人数少于 5000,日本和台湾用年发病率低于万分之一,美国用患病人数少于 20 万。同一疾病在三个定义下的罕见程度可以差几十倍,而这直接决定它能不能进筛查清单、能不能进医保目录、有没有药厂愿意做临床试验。

一个数字巧合

本文前面算出,$Se = Sp = 0.99$ 的鉴定魔法在宝物率低于 $10^{-4}$ 时不值得开箱;又算出,常染色体隐性遗传病的发病率是携带者频率的平方,携带率 $1/50$ 对应发病率 $1/10000$。两个 $10^{-4}$ 在这里碰上了。当然这是巧合,一个讲物品稀有度,一个讲基因频率。

但如果把「宝箱」理解成「致病等位基因」,把「鉴定」理解成「症状」,那么医学史上有很长一段时期,人类处理罕见病的方式确实就是这样:靠症状去找,等于拿着一个 99% 准确的检测器,在宝物率万分之一的地图上乱逛。直到新生儿筛查把「确认」这个环节从「症状」换成「实验室指标」,这个局面才改变。前面那个级联算例,就是这次替换的数学写照。

参考(节选)

  • Wilson JMG, Jungner G. Principles and Practice of Screening for Disease. WHO Public Health Papers 5. 1968.
  • Elmore JG, et al. Screening for Breast Cancer. N Engl J Med. 2005; 352(15): 1495-1504.
  • Welch HG. Overdiagnosis: What It Is and What It Means. Johns Hopkins University Press. 2011.
  • 关于韩国甲状腺癌筛查的前后对比分析,New England Journal of Medicine. 2016.
  • 关于 Krabbe 病纳入新生儿筛查的早期报道,含纽约州项目启动后首批病例的经过。
  • 国家卫生健康委员会,第一批罕见病目录(2018 年)与第二批罕见病目录(2023 年)。