14  ROC 曲线与 cutoff 建立

14.1 分析目的

受试者工作特征(receiver operating characteristic,ROC)曲线评价定量指标区分阳性与阴性结局的能力, 常用于建立诊断截断值(cutoff)。ivdtoolsroc() 提供渐进式工作流:roc() 创建对象 → describe()auc()(AUC 与置信区间)→ cutoff()(Youden 与最近拐角最优截断值)→ plot()summary()

本文以一个完整的单标记物示例演示 ROC 分析全流程。参考变量必须是二分类;若原始参考为连续变量, 应先转二分类(参见《定性分析》中的 continuous_to_binary())并记录阈值与阳性方向。

代码
library(ivdtools)
library(readr)

14.2 函数概述

函数 主要用途 关键输入或输出
roc() 创建 ROC 对象 colsreferenceidpositive
describe() 标记物描述统计 参考强制按分类处理
auc() AUC 与置信区间 逐标记物
cutoff() 最优截断值 Youden 与最近拐角,需先 auc()
plot() ROC 曲线 cutpoint 标出最优点
summary() 汇总

14.3 示例:单标记物 ROC 分析

14.3.1 读取和核验数据

代码
roc_dat <- read_csv("./data/roc-example.csv", show_col_types = FALSE)
roc_dat <- as.data.frame(roc_dat)
str(roc_dat)
'data.frame':   100 obs. of  3 variables:
 $ sid: num  1 2 3 4 5 6 7 8 9 10 ...
 $ ref: num  0 0 0 0 0 0 0 0 0 0 ...
 $ x1 : num  7.59 8.31 5.89 5.59 9.57 ...
代码
table(roc_dat$ref)

 0  1 
50 50 

参考列 ref 为 0/1 二分类,正、负各 50 例。

14.3.2 创建对象与描述

代码
ro <- roc(roc_dat, cols = "x1", reference = "ref", id = "sid")
ro

ROC Analysis
  Data class:        data.frame
  Total rows:        100
  Complete cases:    100
  Reference:         ref (binary)
  Positive / Neg:    50 / 50
  Evaluation cols:   1  (x1)
  Duplicate IDs:     none

Analysis slots:
    [ ] Describe
    [ ] AUC
    [ ] Cutoff
    [ ] MLR
代码
ro <- describe(ro)

Descriptive Statistics
  Variable               n     Mean       SD      Min       Q1   Median       Q3      Max  NA
  --------------------------------------------------------------------------- 
  x1                   100   9.2576   4.4744  -0.3894   5.8224   8.5472  12.9591  18.7295  

  ref
  Level                Count  Percent
   -------------------------------------- 
  0                       50    50.0%
  1                       50    50.0%

参数说明: roc()cols 为定量标记物列;reference 为二分类参考列(数值 0/1、二水平 因子或二取值字符均可);positive 指定阳性水平(不给出时默认取排序后的最后一个水平)。 每个标记物的方向(geq/leq)按阳性组均值自动判断。

14.3.3 AUC

代码
ro <- auc(ro)

AUC Table
  Column               AUC          95% CI  Direction
  ------------------------------------------------------------ 
  x1                0.9420  [0.8940, 0.9900]       geq
代码
ro$auc_table

标记物 x1 的 AUC ≈ 0.942(95% CI [0.894, 0.990]),区分能力较强。

14.3.4 最优截断值

代码
ro <- cutoff(ro)

Optimal Cutoff Analysis
  Column: x1
    Youden / Corner: cutoff = 8.7617  (sens = 0.9000, spec = 0.9200, Youden = 0.8200)

  Full cutoff table:
        Cutoff      Sens      Spec     TP    FP    TN    FN    Youden
  ---------------------------------------------------------------------- 
          -Inf    1.0000    0.0000     50    50     0     0    0.0000
       18.7295    0.0200    1.0000      1     0    50    49    0.0200
       18.5675    0.0400    1.0000      2     0    50    48    0.0400
       18.2248    0.0600    1.0000      3     0    50    47    0.0600
       17.7837    0.0800    1.0000      4     0    50    46    0.0800
       16.4453    0.1000    1.0000      5     0    50    45    0.1000
       15.8893    0.1200    1.0000      6     0    50    44    0.1200
       15.8087    0.1400    1.0000      7     0    50    43    0.1400
       15.6058    0.1600    1.0000      8     0    50    42    0.1600
       15.5003    0.1800    1.0000      9     0    50    41    0.1800
       15.2855    0.2000    1.0000     10     0    50    40    0.2000
       15.0168    0.2200    1.0000     11     0    50    39    0.2200
       14.8639    0.2400    1.0000     12     0    50    38    0.2400
       14.6980    0.2600    1.0000     13     0    50    37    0.2600
       14.4757    0.2800    1.0000     14     0    50    36    0.2800
       14.4469    0.3000    1.0000     15     0    50    35    0.3000
       14.4042    0.3200    1.0000     16     0    50    34    0.3200
       14.1952    0.3400    1.0000     17     0    50    33    0.3400
       14.1938    0.3600    1.0000     18     0    50    32    0.3600
       13.9382    0.3800    1.0000     19     0    50    31    0.3800
       13.7845    0.4000    1.0000     20     0    50    30    0.4000
       13.3718    0.4200    1.0000     21     0    50    29    0.4200
       13.0699    0.4400    1.0000     22     0    50    28    0.4400
       12.9970    0.4600    1.0000     23     0    50    27    0.4600
       12.9854    0.4800    1.0000     24     0    50    26    0.4800
       12.9659    0.5000    1.0000     25     0    50    25    0.5000
       12.9569    0.5200    1.0000     26     0    50    24    0.5200
       12.7812    0.5400    1.0000     27     0    50    23    0.5400
       12.7534    0.5600    1.0000     28     0    50    22    0.5600
       12.5227    0.5800    1.0000     29     0    50    21    0.5800
       12.3440    0.6000    1.0000     30     0    50    20    0.6000
       12.2962    0.6200    1.0000     31     0    50    19    0.6200
       12.1394    0.6400    1.0000     32     0    50    18    0.6400
       12.1354    0.6600    1.0000     33     0    50    17    0.6600
       12.0393    0.6800    1.0000     34     0    50    16    0.6800
       11.7418    0.6800    0.9800     34     1    49    16    0.6600
       11.6642    0.7000    0.9800     35     1    49    15    0.6800
       11.5082    0.7000    0.9600     35     2    48    15    0.6600
       11.4038    0.7200    0.9600     36     2    48    14    0.6800
       11.2133    0.7400    0.9600     37     2    48    13    0.7000
       11.0696    0.7600    0.9600     38     2    48    12    0.7200
       10.3902    0.7800    0.9600     39     2    48    11    0.7400
       10.1719    0.8000    0.9600     40     2    48    10    0.7600
        9.8836    0.8200    0.9600     41     2    48     9    0.7800
        9.5685    0.8200    0.9400     41     3    47     9    0.7600
        9.3526    0.8400    0.9400     42     3    47     8    0.7800
        9.1944    0.8600    0.9400     43     3    47     7    0.8000
        9.1032    0.8800    0.9400     44     3    47     6    0.8200
        8.8558    0.8800    0.9200     44     4    46     6    0.8000
        8.7617    0.9000    0.9200     45     4    46     5    0.8200
        8.5538    0.9000    0.9000     45     5    45     5    0.8000
        8.5406    0.9000    0.8800     45     6    44     5    0.7800
        8.5296    0.9200    0.8800     46     6    44     4    0.8000
        8.5259    0.9200    0.8600     46     7    43     4    0.7800
        8.3125    0.9200    0.8400     46     8    42     4    0.7600
        8.2985    0.9200    0.8200     46     9    41     4    0.7400
        7.9078    0.9200    0.8000     46    10    40     4    0.7200
        7.8493    0.9200    0.7800     46    11    39     4    0.7000
        7.6187    0.9200    0.7600     46    12    38     4    0.6800
        7.5941    0.9200    0.7400     46    13    37     4    0.6600
        7.5556    0.9200    0.7200     46    14    36     4    0.6400
        7.5150    0.9200    0.7000     46    15    35     4    0.6200
        7.4355    0.9200    0.6800     46    16    34     4    0.6000
        7.1837    0.9200    0.6600     46    17    33     4    0.5800
        6.8235    0.9400    0.6600     47    17    33     3    0.6000
        6.8029    0.9400    0.6400     47    18    32     3    0.5800
        6.7765    0.9400    0.6200     47    19    31     3    0.5600
        6.6770    0.9400    0.6000     47    20    30     3    0.5400
        6.5446    0.9400    0.5800     47    21    29     3    0.5200
        6.5440    0.9600    0.5800     48    21    29     2    0.5400
        6.1603    0.9600    0.5600     48    22    28     2    0.5200
        6.0665    0.9600    0.5400     48    23    27     2    0.5000
        6.0554    0.9600    0.5200     48    24    26     2    0.4800
        6.0361    0.9600    0.5000     48    25    25     2    0.4600
        5.9000    0.9600    0.4800     48    26    24     2    0.4400
        5.8857    0.9600    0.4600     48    27    23     2    0.4200
        5.6326    0.9600    0.4400     48    28    22     2    0.4000
        5.6281    0.9600    0.4200     48    29    21     2    0.3800
        5.5851    0.9600    0.4000     48    30    20     2    0.3600
        5.5802    0.9600    0.3800     48    31    19     2    0.3400
        5.4514    0.9600    0.3600     48    32    18     2    0.3200
        5.3207    0.9600    0.3400     48    33    17     2    0.3000
        5.1582    0.9600    0.3200     48    34    16     2    0.2800
        5.0599    0.9600    0.3000     48    35    15     2    0.2600
        5.0167    0.9600    0.2800     48    36    14     2    0.2400
        4.5654    0.9600    0.2600     48    37    13     2    0.2200
        3.9706    0.9800    0.2600     49    37    13     1    0.2400
        3.9552    0.9800    0.2400     49    38    12     1    0.2200
        3.9103    1.0000    0.2400     50    38    12     0    0.2400
        3.7719    1.0000    0.2200     50    39    11     0    0.2200
        3.5881    1.0000    0.2000     50    40    10     0    0.2000
        3.4583    1.0000    0.1800     50    41     9     0    0.1800
        3.4422    1.0000    0.1600     50    42     8     0    0.1600
        2.9673    1.0000    0.1400     50    43     7     0    0.1400
        2.9111    1.0000    0.1200     50    44     6     0    0.1200
        2.7698    1.0000    0.1000     50    45     5     0    0.1000
        2.5203    1.0000    0.0800     50    46     4     0    0.0800
        2.3646    1.0000    0.0600     50    47     3     0    0.0600
        2.2596    1.0000    0.0400     50    48     2     0    0.0400
        0.4733    1.0000    0.0200     50    49     1     0    0.0200
       -0.3894    1.0000    0.0000     50    50     0     0    0.0000
           Inf    0.0000    1.0000      0     0    50    50    0.0000
代码
print(ro$cutoff_table)

Optimal Cutoff Analysis
  Column: x1
    Youden / Corner: cutoff = 8.7617  (sens = 0.9000, spec = 0.9200, Youden = 0.8200)

  Full cutoff table:
        Cutoff      Sens      Spec     TP    FP    TN    FN    Youden
  ---------------------------------------------------------------------- 
          -Inf    1.0000    0.0000     50    50     0     0    0.0000
       18.7295    0.0200    1.0000      1     0    50    49    0.0200
       18.5675    0.0400    1.0000      2     0    50    48    0.0400
       18.2248    0.0600    1.0000      3     0    50    47    0.0600
       17.7837    0.0800    1.0000      4     0    50    46    0.0800
       16.4453    0.1000    1.0000      5     0    50    45    0.1000
       15.8893    0.1200    1.0000      6     0    50    44    0.1200
       15.8087    0.1400    1.0000      7     0    50    43    0.1400
       15.6058    0.1600    1.0000      8     0    50    42    0.1600
       15.5003    0.1800    1.0000      9     0    50    41    0.1800
       15.2855    0.2000    1.0000     10     0    50    40    0.2000
       15.0168    0.2200    1.0000     11     0    50    39    0.2200
       14.8639    0.2400    1.0000     12     0    50    38    0.2400
       14.6980    0.2600    1.0000     13     0    50    37    0.2600
       14.4757    0.2800    1.0000     14     0    50    36    0.2800
       14.4469    0.3000    1.0000     15     0    50    35    0.3000
       14.4042    0.3200    1.0000     16     0    50    34    0.3200
       14.1952    0.3400    1.0000     17     0    50    33    0.3400
       14.1938    0.3600    1.0000     18     0    50    32    0.3600
       13.9382    0.3800    1.0000     19     0    50    31    0.3800
       13.7845    0.4000    1.0000     20     0    50    30    0.4000
       13.3718    0.4200    1.0000     21     0    50    29    0.4200
       13.0699    0.4400    1.0000     22     0    50    28    0.4400
       12.9970    0.4600    1.0000     23     0    50    27    0.4600
       12.9854    0.4800    1.0000     24     0    50    26    0.4800
       12.9659    0.5000    1.0000     25     0    50    25    0.5000
       12.9569    0.5200    1.0000     26     0    50    24    0.5200
       12.7812    0.5400    1.0000     27     0    50    23    0.5400
       12.7534    0.5600    1.0000     28     0    50    22    0.5600
       12.5227    0.5800    1.0000     29     0    50    21    0.5800
       12.3440    0.6000    1.0000     30     0    50    20    0.6000
       12.2962    0.6200    1.0000     31     0    50    19    0.6200
       12.1394    0.6400    1.0000     32     0    50    18    0.6400
       12.1354    0.6600    1.0000     33     0    50    17    0.6600
       12.0393    0.6800    1.0000     34     0    50    16    0.6800
       11.7418    0.6800    0.9800     34     1    49    16    0.6600
       11.6642    0.7000    0.9800     35     1    49    15    0.6800
       11.5082    0.7000    0.9600     35     2    48    15    0.6600
       11.4038    0.7200    0.9600     36     2    48    14    0.6800
       11.2133    0.7400    0.9600     37     2    48    13    0.7000
       11.0696    0.7600    0.9600     38     2    48    12    0.7200
       10.3902    0.7800    0.9600     39     2    48    11    0.7400
       10.1719    0.8000    0.9600     40     2    48    10    0.7600
        9.8836    0.8200    0.9600     41     2    48     9    0.7800
        9.5685    0.8200    0.9400     41     3    47     9    0.7600
        9.3526    0.8400    0.9400     42     3    47     8    0.7800
        9.1944    0.8600    0.9400     43     3    47     7    0.8000
        9.1032    0.8800    0.9400     44     3    47     6    0.8200
        8.8558    0.8800    0.9200     44     4    46     6    0.8000
        8.7617    0.9000    0.9200     45     4    46     5    0.8200
        8.5538    0.9000    0.9000     45     5    45     5    0.8000
        8.5406    0.9000    0.8800     45     6    44     5    0.7800
        8.5296    0.9200    0.8800     46     6    44     4    0.8000
        8.5259    0.9200    0.8600     46     7    43     4    0.7800
        8.3125    0.9200    0.8400     46     8    42     4    0.7600
        8.2985    0.9200    0.8200     46     9    41     4    0.7400
        7.9078    0.9200    0.8000     46    10    40     4    0.7200
        7.8493    0.9200    0.7800     46    11    39     4    0.7000
        7.6187    0.9200    0.7600     46    12    38     4    0.6800
        7.5941    0.9200    0.7400     46    13    37     4    0.6600
        7.5556    0.9200    0.7200     46    14    36     4    0.6400
        7.5150    0.9200    0.7000     46    15    35     4    0.6200
        7.4355    0.9200    0.6800     46    16    34     4    0.6000
        7.1837    0.9200    0.6600     46    17    33     4    0.5800
        6.8235    0.9400    0.6600     47    17    33     3    0.6000
        6.8029    0.9400    0.6400     47    18    32     3    0.5800
        6.7765    0.9400    0.6200     47    19    31     3    0.5600
        6.6770    0.9400    0.6000     47    20    30     3    0.5400
        6.5446    0.9400    0.5800     47    21    29     3    0.5200
        6.5440    0.9600    0.5800     48    21    29     2    0.5400
        6.1603    0.9600    0.5600     48    22    28     2    0.5200
        6.0665    0.9600    0.5400     48    23    27     2    0.5000
        6.0554    0.9600    0.5200     48    24    26     2    0.4800
        6.0361    0.9600    0.5000     48    25    25     2    0.4600
        5.9000    0.9600    0.4800     48    26    24     2    0.4400
        5.8857    0.9600    0.4600     48    27    23     2    0.4200
        5.6326    0.9600    0.4400     48    28    22     2    0.4000
        5.6281    0.9600    0.4200     48    29    21     2    0.3800
        5.5851    0.9600    0.4000     48    30    20     2    0.3600
        5.5802    0.9600    0.3800     48    31    19     2    0.3400
        5.4514    0.9600    0.3600     48    32    18     2    0.3200
        5.3207    0.9600    0.3400     48    33    17     2    0.3000
        5.1582    0.9600    0.3200     48    34    16     2    0.2800
        5.0599    0.9600    0.3000     48    35    15     2    0.2600
        5.0167    0.9600    0.2800     48    36    14     2    0.2400
        4.5654    0.9600    0.2600     48    37    13     2    0.2200
        3.9706    0.9800    0.2600     49    37    13     1    0.2400
        3.9552    0.9800    0.2400     49    38    12     1    0.2200
        3.9103    1.0000    0.2400     50    38    12     0    0.2400
        3.7719    1.0000    0.2200     50    39    11     0    0.2200
        3.5881    1.0000    0.2000     50    40    10     0    0.2000
        3.4583    1.0000    0.1800     50    41     9     0    0.1800
        3.4422    1.0000    0.1600     50    42     8     0    0.1600
        2.9673    1.0000    0.1400     50    43     7     0    0.1400
        2.9111    1.0000    0.1200     50    44     6     0    0.1200
        2.7698    1.0000    0.1000     50    45     5     0    0.1000
        2.5203    1.0000    0.0800     50    46     4     0    0.0800
        2.3646    1.0000    0.0600     50    47     3     0    0.0600
        2.2596    1.0000    0.0400     50    48     2     0    0.0400
        0.4733    1.0000    0.0200     50    49     1     0    0.0200
       -0.3894    1.0000    0.0000     50    50     0     0    0.0000
           Inf    0.0000    1.0000      0     0    50    50    0.0000

cutoff() 给出全部候选截断值及对应的灵敏度、特异度、Youden 指数等,并用两种准则标记最优: Youden(最大化 Se + Sp − 1)与最近拐角(最小化到 (0,1) 的距离)。本例 Youden/Corner 最优截断值均为 8.76(灵敏度 0.90、特异度 0.92、Youden 0.82)。

参数说明: cutoff() 必须先于 auc() 执行之前完成 auc()plot(cutpoint=...) 需要已执行 cutoff()cutpoint 可选 "Youden""Corner""all"NULL

14.3.5 图形与汇总

代码
plot(ro, cutpoint = "Youden")

代码
summary(ro)

ROC Analysis -- Summary
-------------------------------------------------- 

ROC Analysis
  Data class:        data.frame
  Total rows:        100
  Complete cases:    100
  Reference:         ref (binary)
  Positive / Neg:    50 / 50
  Evaluation cols:   1  (x1)
  Duplicate IDs:     none

Analysis slots:
    [x] Describe
    [x] AUC
    [ ] Cutoff
    [ ] MLR


Descriptive Statistics
  Variable               n     Mean       SD      Min       Q1   Median       Q3      Max  NA
  --------------------------------------------------------------------------- 
  x1                   100   9.2576   4.4744  -0.3894   5.8224   8.5472  12.9591  18.7295  

  ref
  Level                Count  Percent
   -------------------------------------- 
  0                       50    50.0%
  1                       50    50.0%


AUC Table
  Column               AUC          95% CI  Direction
  ------------------------------------------------------------ 
  x1                0.9420  [0.8940, 0.9900]       geq


Optimal Cutoff Analysis
  Column: x1
    Youden / Corner: cutoff = 8.7617  (sens = 0.9000, spec = 0.9200, Youden = 0.8200)

  Full cutoff table:
        Cutoff      Sens      Spec     TP    FP    TN    FN    Youden
  ---------------------------------------------------------------------- 
          -Inf    1.0000    0.0000     50    50     0     0    0.0000
       18.7295    0.0200    1.0000      1     0    50    49    0.0200
       18.5675    0.0400    1.0000      2     0    50    48    0.0400
       18.2248    0.0600    1.0000      3     0    50    47    0.0600
       17.7837    0.0800    1.0000      4     0    50    46    0.0800
       16.4453    0.1000    1.0000      5     0    50    45    0.1000
       15.8893    0.1200    1.0000      6     0    50    44    0.1200
       15.8087    0.1400    1.0000      7     0    50    43    0.1400
       15.6058    0.1600    1.0000      8     0    50    42    0.1600
       15.5003    0.1800    1.0000      9     0    50    41    0.1800
       15.2855    0.2000    1.0000     10     0    50    40    0.2000
       15.0168    0.2200    1.0000     11     0    50    39    0.2200
       14.8639    0.2400    1.0000     12     0    50    38    0.2400
       14.6980    0.2600    1.0000     13     0    50    37    0.2600
       14.4757    0.2800    1.0000     14     0    50    36    0.2800
       14.4469    0.3000    1.0000     15     0    50    35    0.3000
       14.4042    0.3200    1.0000     16     0    50    34    0.3200
       14.1952    0.3400    1.0000     17     0    50    33    0.3400
       14.1938    0.3600    1.0000     18     0    50    32    0.3600
       13.9382    0.3800    1.0000     19     0    50    31    0.3800
       13.7845    0.4000    1.0000     20     0    50    30    0.4000
       13.3718    0.4200    1.0000     21     0    50    29    0.4200
       13.0699    0.4400    1.0000     22     0    50    28    0.4400
       12.9970    0.4600    1.0000     23     0    50    27    0.4600
       12.9854    0.4800    1.0000     24     0    50    26    0.4800
       12.9659    0.5000    1.0000     25     0    50    25    0.5000
       12.9569    0.5200    1.0000     26     0    50    24    0.5200
       12.7812    0.5400    1.0000     27     0    50    23    0.5400
       12.7534    0.5600    1.0000     28     0    50    22    0.5600
       12.5227    0.5800    1.0000     29     0    50    21    0.5800
       12.3440    0.6000    1.0000     30     0    50    20    0.6000
       12.2962    0.6200    1.0000     31     0    50    19    0.6200
       12.1394    0.6400    1.0000     32     0    50    18    0.6400
       12.1354    0.6600    1.0000     33     0    50    17    0.6600
       12.0393    0.6800    1.0000     34     0    50    16    0.6800
       11.7418    0.6800    0.9800     34     1    49    16    0.6600
       11.6642    0.7000    0.9800     35     1    49    15    0.6800
       11.5082    0.7000    0.9600     35     2    48    15    0.6600
       11.4038    0.7200    0.9600     36     2    48    14    0.6800
       11.2133    0.7400    0.9600     37     2    48    13    0.7000
       11.0696    0.7600    0.9600     38     2    48    12    0.7200
       10.3902    0.7800    0.9600     39     2    48    11    0.7400
       10.1719    0.8000    0.9600     40     2    48    10    0.7600
        9.8836    0.8200    0.9600     41     2    48     9    0.7800
        9.5685    0.8200    0.9400     41     3    47     9    0.7600
        9.3526    0.8400    0.9400     42     3    47     8    0.7800
        9.1944    0.8600    0.9400     43     3    47     7    0.8000
        9.1032    0.8800    0.9400     44     3    47     6    0.8200
        8.8558    0.8800    0.9200     44     4    46     6    0.8000
        8.7617    0.9000    0.9200     45     4    46     5    0.8200
        8.5538    0.9000    0.9000     45     5    45     5    0.8000
        8.5406    0.9000    0.8800     45     6    44     5    0.7800
        8.5296    0.9200    0.8800     46     6    44     4    0.8000
        8.5259    0.9200    0.8600     46     7    43     4    0.7800
        8.3125    0.9200    0.8400     46     8    42     4    0.7600
        8.2985    0.9200    0.8200     46     9    41     4    0.7400
        7.9078    0.9200    0.8000     46    10    40     4    0.7200
        7.8493    0.9200    0.7800     46    11    39     4    0.7000
        7.6187    0.9200    0.7600     46    12    38     4    0.6800
        7.5941    0.9200    0.7400     46    13    37     4    0.6600
        7.5556    0.9200    0.7200     46    14    36     4    0.6400
        7.5150    0.9200    0.7000     46    15    35     4    0.6200
        7.4355    0.9200    0.6800     46    16    34     4    0.6000
        7.1837    0.9200    0.6600     46    17    33     4    0.5800
        6.8235    0.9400    0.6600     47    17    33     3    0.6000
        6.8029    0.9400    0.6400     47    18    32     3    0.5800
        6.7765    0.9400    0.6200     47    19    31     3    0.5600
        6.6770    0.9400    0.6000     47    20    30     3    0.5400
        6.5446    0.9400    0.5800     47    21    29     3    0.5200
        6.5440    0.9600    0.5800     48    21    29     2    0.5400
        6.1603    0.9600    0.5600     48    22    28     2    0.5200
        6.0665    0.9600    0.5400     48    23    27     2    0.5000
        6.0554    0.9600    0.5200     48    24    26     2    0.4800
        6.0361    0.9600    0.5000     48    25    25     2    0.4600
        5.9000    0.9600    0.4800     48    26    24     2    0.4400
        5.8857    0.9600    0.4600     48    27    23     2    0.4200
        5.6326    0.9600    0.4400     48    28    22     2    0.4000
        5.6281    0.9600    0.4200     48    29    21     2    0.3800
        5.5851    0.9600    0.4000     48    30    20     2    0.3600
        5.5802    0.9600    0.3800     48    31    19     2    0.3400
        5.4514    0.9600    0.3600     48    32    18     2    0.3200
        5.3207    0.9600    0.3400     48    33    17     2    0.3000
        5.1582    0.9600    0.3200     48    34    16     2    0.2800
        5.0599    0.9600    0.3000     48    35    15     2    0.2600
        5.0167    0.9600    0.2800     48    36    14     2    0.2400
        4.5654    0.9600    0.2600     48    37    13     2    0.2200
        3.9706    0.9800    0.2600     49    37    13     1    0.2400
        3.9552    0.9800    0.2400     49    38    12     1    0.2200
        3.9103    1.0000    0.2400     50    38    12     0    0.2400
        3.7719    1.0000    0.2200     50    39    11     0    0.2200
        3.5881    1.0000    0.2000     50    40    10     0    0.2000
        3.4583    1.0000    0.1800     50    41     9     0    0.1800
        3.4422    1.0000    0.1600     50    42     8     0    0.1600
        2.9673    1.0000    0.1400     50    43     7     0    0.1400
        2.9111    1.0000    0.1200     50    44     6     0    0.1200
        2.7698    1.0000    0.1000     50    45     5     0    0.1000
        2.5203    1.0000    0.0800     50    46     4     0    0.0800
        2.3646    1.0000    0.0600     50    47     3     0    0.0600
        2.2596    1.0000    0.0400     50    48     2     0    0.0400
        0.4733    1.0000    0.0200     50    49     1     0    0.0200
       -0.3894    1.0000    0.0000     50    50     0     0    0.0000
           Inf    0.0000    1.0000      0     0    50    50    0.0000

14.4 结果判读要点

  1. 参考可靠:ROC 结论依赖参考标准,参考错误会传导到 AUC 与 cutoff。
  2. 方向确认:确认标记物的判定方向(geq/leq)符合临床意义。
  3. cutoff 选择:Youden 与最近拐角是两种准则,最终 cutoff 应结合临床代价(假阴/假阳权重) 与方案确定,不能只看统计最优。
  4. 样本量:AUC 的置信区间随样本量与事件数变化,小样本或事件过少时谨慎解释。
  5. 方法限制:本工作流为经验 ROC/梯形 AUC,配对多曲线比较、部分 AUC 等需另行设计。
  6. 独立验证:在训练数据上的 AUC 是表观性能,推广前应在独立数据上验证。