最近帮朋友看一道概率题,发现自己对贝叶斯公式的印象只剩下「分母很长」。这里重新推一遍,顺便出几道题给自己练手。
题目
假设某种疾病在人群中的患病率是 1%。有一种检测:
- 患病的人去检测,99% 会呈阳性
- 没患病的人去检测,5% 会被误判为阳性
一个人检测结果为阳性,他真正患病的概率是多少?
先凭直觉猜一个数,再往下看。
推导
记 为「患病」, 为「检测阳性」。题目给出的是:
我们要求的是 。贝叶斯公式:
分母用全概率公式展开:
展开计算过程
代入数值:
于是:
答案是:
为什么和直觉差这么多
直觉往往会盯着「99% 的准确率」,忽略了患病率本身只有 1%。换成具体人数会更直观:假设有 10000 人去检测,
| 人数 | 检测阳性 | |
|---|---|---|
| 患病 | 100 | 99 |
| 未患病 | 9900 | 495 |
阳性的一共 594 人,其中真正患病的只有 99 人,正好是六分之一。没患病的人基数太大,5% 的误判也就不少了。
这种「忽略基础比率」的倾向,在心理学里叫 基础比率谬误。
用代码验证
p_d = 0.01
p_pos_given_d = 0.99
p_pos_given_not_d = 0.05
p_pos = p_pos_given_d * p_d + p_pos_given_not_d * (1 - p_d)
print(p_pos_given_d * p_d / p_pos) # 0.1666...const pD = 0.01;
const pPos = 0.99 * pD + 0.05 * (1 - pD);
console.log((0.99 * pD) / pPos); // 0.1666...练习
- 如果患病率从 1% 提高到 10%,其他条件不变,阳性者真正患病的概率会怎样变化?
- 明显升高
解析:基础比率变大,分子增长得比分母快。代入计算约为 68.75%。
- 以下哪些做法可以提高阳性结果的可信度?
- 降低误判率
- 对阳性者再做一次独立检测
解析:扩大检测人数不改变任何一个概率。第二次独立检测相当于用第一次的结果作为新的先验。
- 贝叶斯公式中的分母 可以用全概率公式展开。
解析: 按「患病」与「未患病」两种情况分别计算再相加。
- 在本题中, 叫作检测的 灵敏度, 叫作检测的 特异度。
解析:灵敏度衡量「有病能查出来」,特异度衡量「没病不误报」。
気に入ったならばコメントを残してくださいね~