PPV、NPV — 盛行率如何毀掉陽性預測值
這章讀完,你會:看到「陽性的人裡真的有病」就選 PPV,而不是敏感度。 你也會知道為什麼同一個 Sn/Sp 很漂亮的檢驗,放到低盛行率族群時,陽性結果仍可能大多是假的。
先想 30 秒再往下讀
一個檢驗敏感度 99%、特異度 99%。如果疾病盛行率只有 0.1%,驗陽性的人多半真的有病嗎?先不要算,先猜:陽性可信度會接近 99%,還是會被盛行率拉垮?
PPV:陽性的人裡,真的有病幾個
陽性預測值(positive predictive value, PPV)問的是:檢驗陽性的人裡,有多少比例真的有病。它從檢驗結果出發,所以分母是陽性那一橫列。
PPV = TP / (TP + FP)
考場上先用一句人話翻譯:PPV 問「這個陽性結果能不能信?」所以它不是檢驗對有病者的抓人能力,而是陽性結果交到你手上後,這個人真的有病的機率。
NPV:陰性的人裡,真的沒病幾個
陰性預測值(negative predictive value, NPV)問的是:檢驗陰性的人裡,有多少比例真的沒病。它同樣從檢驗結果出發,所以分母是陰性那一橫列。
NPV = TN / (TN + FN)
臨床對話會長這樣:病人拿著陰性報告問「我真的沒事嗎?」這就是 NPV,不是特異度。特異度問沒病者會不會驗陰;NPV 問陰性者是不是真的沒病。
流病史 · 貝氏定理進診斷學
貝氏定理(Bayes theorem)把「檢驗前你有多可能生病」和「檢驗本身多會分辨」接在一起。放到診斷題,就是 Sn/Sp 再好,也必須乘上盛行率這個事前機率;跟你考試有關的是:PPV/NPV 是事後機率,不是檢驗固有特性。
盛行率低,PPV 會先被假陽性淹沒
PPV 會隨盛行率(prevalence)改變。疾病越少,真正有病的人本來就少;即使偽陽性率很低,沒病人口太大時,FP 仍可能堆出一大群。
PPV = (Sn × prev) / (Sn × prev + (1 - Sp) × (1 - prev))
盛行率下降時,分子 Sn × prev 變小;但分母裡的假陽性項 (1 - Sp) × (1 - prev) 會因沒病人口巨大而變得很有存在感。
把低盛行率想成在一座大型體育場找少數病人。檢驗再準,只要全場大多數人都沒病,少量誤報也會變成一排假陽性;陽性名單裡真正有病的比例就被稀釋。
Sn/Sp vs PPV/NPV — 本站最重要的一張表
| 看這個 | Sn/Sp | PPV/NPV |
|---|---|---|
| 題目已知什麼 | 已知真的有病或真的沒病 | 已知檢驗陽性或陰性 |
| 問的是誰 | 問檢驗:它能不能抓對疾病狀態 | 問這個人:結果出來後到底有沒有病 |
| 公式方向 | 直行 column:TP/(TP+FN)、TN/(TN+FP) | 橫列 row:TP/(TP+FP)、TN/(TN+FN) |
| 會不會隨盛行率變 | 不會,檢驗固有特性 | 會,事後機率會被族群盛行率推動 |
| 題幹訊號 | 「有病者中陽性」「沒病者中陰性」 | 「陽性者中有病」「陰性者中沒病」 |
| 最大陷阱 | 把 Sn 誤當 PPV | 以為高 Sn/Sp 就保證高 PPV |
破題關鍵字
看到「檢查結果為陽性的病人中,確實有病的機率」→ 想 PPV;看到「篩檢陽性後真正得病的比例」→ 想 PPV,不是敏感度;看到「檢查結果為陰性的人真的沒病」→ 想 NPV;看到「Sn/Sp 固定但盛行率不同」→ 想 PPV/NPV 會變;看到「問陽性者沒有病的機率」→ 想 1 - PPV。
千人點陣看 PPV 被盛行率打垮
調整盛行率,觀察同一組 Sn/Sp 下,陽性格子裡真正有病者的比例如何改變。
你剛剛看到了什麼
當盛行率下降,真的有病者變少,假陽性卻來自龐大的沒病族群;所以 PPV 會下跌。Sn/Sp 是檢驗本身的條件比例,PPV 是把檢驗放進某個族群後的結果。
案例檔案 · 低盛行族群的假陽性海嘯
把罕見疾病拿去做全民篩檢時,真正病人非常少;即使每一百個沒病者只誤報一個,因為沒病者太多,陽性名單仍可能充滿假陽性。全民 HIV 篩檢或罕病篩檢的政策討論,都繞不開這個問題。一句教訓:低盛行率不是小細節,它會直接把 PPV 拉低。
大家都搞錯
「99% 準」不等於「陽性後 99% 有病」。考試會給很高的 Sn/Sp,再把疾病放到低盛行率族群,問你陽性者沒有病的機率;正確做法是算 PPV 或 1 - PPV,不是背一句檢驗很準就結束。
國考考過長這樣
「篩檢陽性者真正有病的比例稱為敏感度」是最不適當的敘述。
逐句解碼:「陽性者真正有病」就是 TP/(TP+FP),答案是 PPV。把它叫敏感度,是把橫列和直行互換。
愛滋篩檢 Sn=82%、Sp=93%、盛行率 3%,篩檢陽性者「沒有」愛滋的機率?答案約 0.73。
逐句解碼:題目問陽性者沒有病,這是 1 - PPV。PPV = (0.82×0.03) / [(0.82×0.03)+(0.07×0.97)] ≈ 0.27,所以沒有病的機率 ≈ 0.73。
Sn=Sp=90%,對 60 歲男女 PPV 不同,主因為冠心病盛行率不同。
逐句解碼:題目故意固定 Sn/Sp,排除檢驗本身差異;PPV 仍不同,只能從族群盛行率解釋。這是本章最核心的「盛行率毀掉 PPV」概念。
你來當審稿人
某報告寫道:「此癌症篩檢 Sn=98%、Sp=98%,因此在低風險族群中,篩檢陽性者約 98% 真的罹癌,可安心作為全民篩檢。」
我挑好毛病了,看解答
坑一:Sn/Sp 不能直接當 PPV。坑二:低風險族群盛行率低,PPV 可能被假陽性大幅拉低。正確說法應先帶入盛行率,計算 PPV,再討論陽性後追加確認與篩檢政策。
還記得嗎 · CH 11
CH11 的 Sn/Sp 是直行、問檢驗;CH12 的 PPV/NPV 是橫列、問結果出來後這個人。10 秒小題:TP/(TP+FP) 是 Sn 還是 PPV?
看答案
PPV。分母 TP+FP 是所有檢驗陽性者,不是所有真的有病者。