Codar
下载

诊断标志物评估与 ROC 曲线

诊断标志物评估回答的是:某个指标能多准确地区分有病和没病、某亚型和其他亚型。ROC 曲线把所有可能截断值下的灵敏度和 1 减特异度连成曲线,曲线下面积 AUC 表示随机抽一个病例和一个对照时,病例得分更高的概率,0.5 相当于随机猜测。完整评估还包括 AUC 置信区间、最佳截断值及对应的灵敏度、特异度和预测值,多个标志物的 AUC 比较,以及联合模型的验证。数据可以是血清蛋白、代谢物、基因表达、甲基化或影像特征。

什么时候用

  • 评估单个血清、组织或分子指标区分疾病与对照的能力
  • 比较新标志物与现有标志物的诊断效能
  • 为连续指标确定截断值并报告灵敏度、特异度
  • 构建并验证多个标志物的联合诊断模型
  • 评估标志物区分疾病亚型或良恶性的能力
  • 检验标志物在不同分期、性别或中心中的表现是否稳定

不适合的情况

  • 预测未来事件发生时间,应使用生存分析与预后模型
  • 极少阳性样本时只报告 AUC,忽视精确率与置信区间
  • 在同一数据上选截断值后直接报告其灵敏度和特异度

需要准备的数据

标志物测量值
每个样本一个连续或有序数值;多个标志物各占一列,缺失值需说明处理方式
金标准分组
以病理、临床诊断等参考标准确定的二分类标签,需写明标准来源和判定时间
协变量与来源信息
年龄、性别、中心、批次等,用于分层分析和检查混杂
验证集
独立中心或时间段的样本,用于检验截断值和联合模型能否外推

分析步骤

  1. 1

    明确诊断问题

    写清楚要区分的人群,例如早期癌症对良性病变,而不是癌症对健康人。对照的选择决定了 AUC 的实际意义,越接近真实就诊人群越有价值。

  2. 2

    描述与组间比较

    先画箱线图或小提琴图,比较两组分布并做检验。注意分布形状和离群值,检查测量值是否随批次、中心或采样时间出现系统偏移,有偏移时需先校正或分层。

  3. 3

    绘制 ROC 曲线

    用 R 包 pROC 的 roc 或 Python scikit-learn 的 roc_curve 计算,指明哪一类为阳性及取值方向。用 ci.auc 以 DeLong 法或 bootstrap 给出 AUC 的 95% 置信区间。

  4. 4

    选择截断值

    在训练数据上按 Youden 指数或预设的灵敏度、特异度要求选截断值,例如筛查场景优先保证灵敏度。报告该截断值下的灵敏度、特异度、PPV 和 NPV 及置信区间。

  5. 5

    比较多个标志物

    同一批样本上的多个 AUC 用 DeLong 检验比较(pROC 的 roc.test)。只比较 AUC 不够,还要看在关注的特异度范围内哪个标志物灵敏度更高。

  6. 6

    构建联合模型

    用逻辑回归等方法组合多个标志物,得到每个样本的预测概率后再画 ROC。用交叉验证或独立验证集评估联合模型,并报告校准情况和相对单个标志物的提升。

  7. 7

    独立验证

    把训练集确定的截断值和模型原样应用到验证集,报告 AUC、灵敏度和特异度。验证集性能明显下降,说明存在过拟合或两组人群构成差异,需分析原因。

关键参数与决策

阳性类与方向

pROC 默认根据两组中位数自动判断方向,可能在验证集被反向设置。应显式指定对照组、病例组和 direction 参数,保证训练与验证使用同一方向。

截断值标准

Youden 指数让灵敏度与特异度之和最大,是通用选择;筛查强调低漏诊时固定高灵敏度,确诊强调低误诊时固定高特异度,应根据应用场景预先确定。

AUC 置信区间方法

DeLong 法计算快,适用大多数情况;样本量小或分布特殊时可用 bootstrap,重抽样次数通常设为数千次,并固定随机种子。

类别不平衡

阳性样本比例很低时,ROC 和 AUC 可能看起来很好,但 PPV 很低。此时应补充精确率-召回率曲线,并按目标人群的患病率计算预测值。

样本量规划

根据预期 AUC、病例对照比例和可接受的置信区间宽度估算所需样本量。病例数太少时 AUC 置信区间很宽,即使点估计较高,也不足以支持诊断价值的结论。

常见错误

  • 在同一数据上选截断值又报告其性能:截断值针对该数据最优,灵敏度和特异度被高估,需在验证集重新评估。
  • 病例为确诊晚期患者、对照为健康人:两组差别远大于实际就诊场景,AUC 被严重高估,即谱偏倚。
  • 把 AUC 低于 0.5 当作无效指标:多半是方向设反,翻转后 AUC 等于 1 减原值,应检查阳性类设置。
  • 用病例对照研究的比例计算 PPV 和 NPV:预测值依赖患病率,需按目标人群患病率重新换算。
  • 多个标志物两两比较不校正:比较次数多时假阳性增加,应预先指定主要比较或做多重校正。
  • 联合模型只报告训练集 AUC:变量越多训练 AUC 越高,不经交叉验证或外部验证的提升没有意义。

结果怎么看

ROC 曲线图

横轴 1 减特异度,纵轴灵敏度,对角线代表随机。曲线越靠左上越好,图例标注 AUC 及置信区间。多条曲线在关注区段交叉时,不能仅凭 AUC 高低判断谁更适用。

诊断效能表

列出 AUC、截断值、灵敏度、特异度、PPV、NPV 及置信区间。置信区间很宽说明样本量不足;截断值在验证集上的性能应单独列出。

AUC 比较结果

DeLong 检验给出两条相关 ROC 曲线 AUC 差值和 P 值。AUC 差异很小但 P 值显著时,需判断差异是否有实际意义。

联合模型校准曲线

比较预测概率与实际阳性比例,理想情况下各点贴近对角线。校准差的模型即使 AUC 很高,给出的概率也不能直接用于判断个体风险。

分层 ROC 结果

按分期、性别、年龄段或中心分别计算 AUC。各亚组 AUC 相近说明标志物表现稳定;若只在晚期亚组表现好、早期亚组接近 0.5,说明该指标对早期诊断价值有限。

和相近方法怎么选

ROC 曲线与精确率-召回率曲线

ROC 不受患病率影响,适合比较标志物的内在区分能力;PR 曲线反映在实际阳性比例下的精确率,更适合阳性很少的场景。不平衡数据中两者应同时报告。

诊断 ROC 与时间依赖 ROC

诊断 ROC 针对当下的二分类状态;时间依赖 ROC 用于生存数据,评估在某时间点前是否发生事件,需处理删失。判断是否患病用前者,预测预后用后者。

AUC 比较与 NRI、IDI

在已有标志物基础上加入新指标,AUC 常只提高一点。NRI 和 IDI 关注重新分类是否更准确、预测概率差是否增大,可作为补充,但同样需在验证集计算。

常见问题

AUC 多少算好?

常见经验划分是 0.7 到 0.8 为可接受,0.8 到 0.9 为较好,0.9 以上为很好。但这只是粗略参考,还要看置信区间、对照人群是否贴近实际,以及与现有标志物相比是否有提升。

ROC 曲线的最佳截断值怎么确定?

最常用 Youden 指数,即灵敏度加特异度减 1 取最大的点,pROC 中可用 coords 设定 best 获取。也可根据应用场景固定灵敏度或特异度。截断值应在训练集确定,再到验证集检验。

两个 AUC 怎么比较显著性?

同一批样本上测的两个标志物,ROC 曲线是相关的,用 DeLong 检验,pROC 的 roc.test 可直接计算。若来自不同样本,则用非配对的比较方法。报告时同时给出 AUC 差值和置信区间。

多个标志物怎么联合画 ROC?

常用逻辑回归把多个标志物组合,得到每个样本的预测概率,再以概率画 ROC。变量较多时可用带惩罚的回归。联合模型必须经交叉验证或外部验证,否则 AUC 提升可能来自过拟合。

AUC 小于 0.5 是什么意思?

大多数情况是方向设反了,即标志物在对照组更高,而软件把较高值当作阳性。翻转方向后 AUC 等于 1 减原值。若确认方向无误仍低于 0.5,说明该指标区分能力比随机还差。

在 Codar 里怎么做

在 Codar 里上传标志物测量值与金标准分组表并说明应用场景。Codar 确认方案后评估诊断生物标志物性能:绘制 ROC 曲线,计算 AUC 及置信区间,选择截断值并给出灵敏度、特异度和预测值,比较多个标志物和联合模型。交付 ROC 图、效能表、报告和可复现脚本。仅供科研,不替代临床诊断。

可以这样提问
这是 150 例胰腺癌和 120 例慢性胰腺炎的 CA19-9 与 3 个候选蛋白数据,帮我画 ROC、比较 AUC,并评估联合诊断模型
了解精准医学插件