指标 A 的 AUC 高一点,不代表它更好。差异可能完全来自抽样波动,而且两条 ROC 来自同一批病人时,它们之间是相关的。
一、为什么不能直接比大小
- AUC 是估计值,带标准误;0.82 与 0.78 的 95% CI 常常大幅重叠。
- 同一批受试者上测得的两条 ROC 是**配对**的(相关),忽略相关性会高估方差、低估差异的显著性。
- 不同样本(如两个独立队列)上的 AUC 只能做近似比较,且必须说明人群差异。
二、DeLong 检验在做什么
- 它估计两个 AUC 之差的方差,并显式包含两条曲线之间的协方差 —— 这正是"配对"信息。
- 输出:两个 AUC、差值、差值的 95% CI、Z 值与 P 值。
- 判读看差值 CI 是否包含 0,而不是只看 P 值;CI 宽度直接反映样本量是否够。
- 两组比较(AUC 差异)与多组比较(三个以上指标)方法不同,多组要做多重比较校正。
三、审稿人最常追问的四点
- 样本量:每类至少 2 例才能算(更严格的标准是每类 ≥ 5 例),事件太少时 AUC 的 CI 会宽到无意义。
- 内生性:在建模数据上算 AUC 会高估性能,应报告验证集或交叉验证结果。
- 阈值:最优阈值来自训练集,不能在同一份数据上既选阈值又评估敏感度/特异度。
- 临床价值:AUC 差异显著 ≠ 临床有用;应补决策曲线(DCA)或净重分类改善(NRI)。
四、用接口直接算(可复制)
一条标签 + 两个指标分数,返回两 AUC、差值、95% CI 与 P 值。样本每类少于 2 例时接口会直接拒绝,而不是给一个 NaN。
REST:DeLong 比较两条 ROC
curl -X POST https://sanyu.wentangkeji.com/api/open/v1/run/act_delong \
-H "Authorization: Bearer sk-sanyu-你的密钥" \
-H "Content-Type: application/json" \
-d '{"labels":[0,1,0,1,1,0],\
"scores1":[0.1,0.9,0.2,0.8,0.7,0.3],\
"scores2":[0.2,0.7,0.3,0.6,0.8,0.4]}'
常见问题
- AUC 差 0.04,需要做统计学检验吗?
- 需要,而且要看差值的 95% CI。CI 包含 0 时不能声称"更好";CI 很宽说明样本量不足以支持任何结论,此时应该报告"未能证明差异",而不是"两者相当"。
- DeLong 和 Bootstrap 哪个更合适?
- DeLong 是解析解,快且在大样本下表现好;Bootstrap(建议 ≥ 1000 次,固定随机种子)在样本小、指标非标准时更稳健,但必须报告重抽样次数与种子,否则不可复现。
- 三个以上指标一起比较怎么办?
- 不能两两 DeLong 后直接看 P < 0.05。要么用多组检验(如基于广义估计方程的比较),要么对两两比较做 Bonferroni/Holm 校正,并在方法学里写明。