跳到主内容
UniKit

贝叶斯定理

输入先验 P(A)、似然 P(B|A) 与假阳性率 P(B|¬A),算出后验 P(A|B)、全概率、似然比,并用「1000 人里有几个真阳性」的频数表解释结果。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

结果

后验 P(A|B)16.6667%
全概率 P(B)5.9400%
似然比 P(B|A) / P(B|¬A)19.8
先验比 P(A) / P(¬A)0.0101
后验比 P(A|B) / P(¬A|B)0.2
特异度 1 − P(B|¬A)95.0000%
漏检率 1 − P(B|A)1.0000%
阴性预测值 P(¬A|¬B)1.0525%
自然频数表

换成具体人数:1000 人里约 10 人真的患病,60 人检测为阳性;这 60 人里只有 10 人真患病,另外 50 人是假阳性。

患病(A 为真)10
健康(A 为假)990
真阳性10
假阳性50
漏检(假阴性)0
真阴性940
检测阳性合计60
检测阴性合计940

这个工具能做什么

  • 看懂医学筛查报告:患病率 1%、灵敏度 99%、假阳性率 5% 时,阳性者真正患病的概率只有约 16.7%,频数表能一眼说明为什么。
  • 排查垃圾邮件、欺诈检测这类二分类模型:把模型的历史准确率换算成后验概率,判断告警到底该不该信。
  • 理解「基础比率谬误」:先验概率越小,同样的检测结果带来的后验越低,改一下先验就能直观看到差别。
  • 做概率作业:全概率公式、贝叶斯公式、先验比 × 似然比 = 后验比这几个步骤的结果都能直接对照。

示例

输入

先验 P(A) = 1%,灵敏度 P(B|A) = 99%,假阳性率 P(B|¬A) = 5%,人群 1000 人

输出

全概率 P(B) = 5.9400%,后验 P(A|B) = 16.6667%,似然比 = 19.8,先验比 = 0.0101,后验比 = 0.2;1000 人里约 10 人患病、60 人阳性,其中真阳性 10 人、假阳性 50 人

假阳性率虽然是灵敏度的 5 倍,但因为健康人基数大,假阳性的绝对数量反而是真阳性的 5 倍。

常见问题

为什么灵敏度 99% 的检测,阳性后患病的概率只有 16.7%?

因为患病率只有 1%。1000 人里只有 10 人患病,检测能抓出约 10 人;而 990 个健康人按 5% 的假阳性率会产出约 50 个假警报。阳性总共约 60 人,真患病的只占 10/60 ≈ 16.7%。先验概率(基础比率)在这里起决定作用。

「先验比 × 似然比 = 后验比」是什么意思?

这是贝叶斯定理的比值形式,也是实际使用中最方便的形式:先验比 = P(A)/P(¬A) = 0.01/0.99 ≈ 0.0101,似然比 = 0.99/0.05 = 19.8,相乘得到后验比 ≈ 0.2,即 P(A|B) = 0.2/1.2 = 1/6 ≈ 16.7%。证据的作用就是给先验比乘一个倍数。

频数表里的人数为什么是整数,而概率是小数?

频数表是给人看的:把概率乘上人群规模后四舍五入成整数,读起来就是「1000 人里有几个」。取整会带来最多 ±1 人的偏差,所以表里的阳性预测值与上方的后验概率可能有很小的出入,以概率为准。

阴性预测值为什么这么高?

阴性预测值 P(¬A|¬B) 是「检测阴性时确实健康」的概率。当患病率很低时,阴性人群绝大多数本来就健康,所以这个值接近 1。它高并不说明检测很准,只说明阴性结果不太会漏掉病人。

假阳性率填 0 会怎样?

似然比会变成无穷大,意味着只要阳性就一定是真阳性,后验概率变成 100%。这是理想检测的极端情况;现实中假阳性率不可能为 0,建议按真实数据填写。

关键词:bayes theoremposterior probabilitypriorlikelihoodfalse positivelikelihood ratiobase rate贝叶斯定理后验概率先验概率假阳性似然比全概率

同类工具