诊断试验四格表计算器:灵敏度 / 特异度 / 阳性预测值
诊断性试验(diagnostic test)评价的核心是一张 2×2 四格表:行是检测结果(阳性/阴性),列是真实疾病状态(患病/无病)。四个格子分别记录四类人:
真实患病(+) 真实无病(−)
检测阳性(+) TP FP
检测阴性(−) FN TN
- TP(True Positive,真阳性):有病且被正确检出
- FP(False Positive,假阳性):无病但检测显示阳性
- FN(False Negative,假阴性):有病但检测显示阴性
- TN(True Negative,真阴性):无病且被正确排除
八个核心指标
灵敏度(敏感性) Se = TP / (TP + FN)
特异度 Sp = TN / (TN + FP)
阳性预测值 PPV = TP / (TP + FP)
阴性预测值 NPV = TN / (TN + FN)
阳性似然比 LR+ = Se / (1 − Sp)
阴性似然比 LR− = (1 − Se) / Sp
约登指数 J = Se + Sp − 1
准确度 = (TP + TN) / (TP + FP + FN + TN)
灵敏度和特异度是检测自身的固有属性,不受患病率影响,可跨人群比较。PPV 和 NPV 则随患病率变化:同一检测在罕见病筛查(患病率 0.1%)和高危门诊(患病率 40%)中,PPV 可以相差 100 倍。
LR+(阳性似然比) 越大,阳性结果越支持诊断;LR−(阴性似然比) 越小,阴性结果越能排除诊断。Jaeschke 1994 经验阈值:LR+ > 10 或 LR− < 0.1 被认为有强力诊断价值;LR+ 2–5 或 LR− 0.2–0.5 提示有限诊断价值。
约登指数 J 综合了灵敏度与特异度,在 ROC 曲线分析中常用于选取最优截断点(J 最大处平衡假阳性与假阴性的代价)。
贝叶斯后验概率
若已知目标人群的患病率 P₀(先验概率),可用似然比更新为后验概率:
先验比数(Odds)= P₀ / (1 − P₀)
后验比数 = 先验比数 × LR
后验概率 = 后验比数 / (1 + 后验比数)
这与代入患病率直接算调整后 PPV/NPV 在数学上等价,但更直观:它将“检测结果”理解为更新先验的一个证据。
置信区间:Wilson 评分法
对比例 p̂ = k/n,Wilson 95% 置信区间为:
令 z = 1.96
中心 = p̂ + z²/(2n)
半径 = z × √(p̂(1−p̂)/n + z²/(4n²))
分母 = 1 + z²/n
下界 = (中心 − 半径) / 分母
上界 = (中心 + 半径) / 分母
Wilson 法优于常用的 Wald 法(p̂ ± 1.96 × SE):当 p̂ 接近 0 或 1、或样本量小时,Wald 法会给出负数下界或超过 1 的上界,而 Wilson 法始终落在 [0, 1]。
适用边界
- 仅适用于二分类结果(阳性/阴性)。连续指标须先选定截断点,再填入四格表。
- 四格表中任一格为 0 时,部分指标无法计算(如 FP = 0 → LR+ = ∞),工具会逐项标注,但不自动添加 0.5 Haldane–Anscombe 校正,是否校正需研究者判断。
- 用 LR 更新后验概率时,隐含假设该检测的灵敏度/特异度在目标人群中与建表人群一致——不同样本类型、不同截断点可能使这一假设失效。
- 本工具不输出 ROC 曲线(需要系列截断点数据),仅在给定截断点处评价性能。
验证示例
输入:TP = 45,FP = 10,FN = 5,TN = 90(共 150 例,样本患病率 = 50/150 ≈ 0.333)
Se = 45 / (45 + 5) = 45 / 50 = 0.900
Sp = 90 / (90 + 10) = 90 / 100 = 0.900
PPV = 45 / (45 + 10) = 45 / 55 ≈ 0.818
NPV = 90 / (90 + 5) = 90 / 95 ≈ 0.947
LR+ = 0.900 / (1 − 0.900) = 0.900 / 0.100 = 9.00
LR− = (1 − 0.900) / 0.900 = 0.100 / 0.900 ≈ 0.111
J = 0.900 + 0.900 − 1 = 0.800
准确度 = (45 + 90) / 150 = 135 / 150 = 0.900
若该检测用于患病率 P₀ = 0.1 的筛查人群(先验比数 = 0.1/0.9 ≈ 0.111): - 阳性结果后验:0.111 × 9.00 = 1.000 → 后验概率 = 0.500 - 阴性结果后验:0.111 × 0.111 = 0.0123 → 后验概率 ≈ 0.012
LR+ = 9.0 表明该检测性能良好但未达到“强力诊断”阈值(> 10)。
常见错误
- TP/FP/FN/TN 行列填反:FP 是“无病但阳性”,FN 是“有病但阴性”——填反会让 Se 和 Sp 对调,结果数值仍在合理范围内,极难发现。建议填表前逐格核对含义。
- 把样本率当患病率:四格表里的疾病比例((TP+FN)/n)是研究纳入人群的率,未必等于目标应用人群的患病率。直接用样本率推算 PPV/NPV 用于预测外部人群时需说明这一假设。
- 只报告 PPV 而不说明患病率:PPV 离开患病率语境没有意义,读者无法将结论迁移到自己的人群。推荐同时报告 LR+/LR−,它们是不依赖人群的检测性质。
常见问题
PPV 和灵敏度有什么区别?
灵敏度是「患者中被检出的比例」,只取决于检测本身,不随人群变化;PPV 是「阳性结果里真正有病的概率」,还受患病率影响。同一检测在罕见病筛查(患病率 0.1%)和高危门诊(患病率 40%)中,PPV 可以相差 100 倍以上。
为什么报告 LR 而不只报告 PPV?
阳性/阴性似然比(LR+/LR−)是检测的固有属性,不随人群患病率变化;而 PPV 和 NPV 会随人群改变。把 LR 报出来,读者可以用自己人群的患病率通过贝叶斯公式推算后验概率,比只给 PPV 更具可迁移性。
约登指数 J 怎么用?
J = 灵敏度+特异度 − 1,范围 0–1,越接近 1 越好。它常用于从连续指标的 ROC 曲线上选最优截断点:J 最大处平衡了假阳性与假阴性的代价。J = 0 等价于随机猜测,J = 1 是完美检测。
这和卡方检验有什么不同?
卡方/Fisher 精确检验(见 chi-square-fisher 工具)回答「检测结果与疾病状态是否存在统计关联」(输出 p 值与优势比),本工具回答「这个检测有多好用」(输出可直接用于临床决策的灵敏度、特异度等指标)。两者互补,不可替代。
某个格子为 0 怎么办?
若 FP = 0 则 LR+ 为正无穷;若 FN = 0 则 LR− 为 0;若 TP = 0 或 TN = 0 则 Se / Sp 无法定义。本工具遇到这种情况会逐项标注,但不自动加 0.5 校正(Haldane–Anscombe 校正),因为是否校正需研究者根据实验设计判断。