实例教程:协变量调整后的ROC曲线及AUC的计算

专题合集更多教程

在很多情况下,协变量会影响诊断指标值的分布情况。例如,我们在上一篇文章中用到的数据,年龄就会影响卵巢储备功能检测指标的分布。(点击查看文章详情:如何联合多个指标提升诊断准确度?教程来了!

 

所以在评价一个诊断指标的准确度时,需要通过调整来去除协变量造成的影响。通常提到调整,大家首先会想到将协变量加入回归模型中,就可以得到调整后的效应量估计。但是这种方法并不适用于计算调整后的诊断准确度,因为这样得到的准确度是联合了多个指标的诊断得分的准确度(详见上篇文章),而不是真正的调整了协变量影响后的诊断指标自身的准确度。这篇文章,我们就介绍一下,如何计算协变量调整后的ROC曲线和AUC值。

 

以基础窦卵泡数(AFC)为例,我们根据样本中患者年龄的中位数(34岁)将所有患者分为低年龄组(≤34岁)和高年龄组(>34岁),可以发现低年龄组(实线)的AFC值要高于高年龄组(虚线)的AFC值(实线表示的分布位置比同一颜色的虚线表示的分布位置偏向更高的AFC值)(图1)。

 

图1. 卵巢低反应/非低反应组AFC指标分年龄组的分布

 

诊断指标值在协变量组间的差异,会对ROC曲线和AUC的估计有什么影响呢?从图2中我们可以看出,基于全部患者的整体ROC曲线,相比于根据协变量分层的ROC曲线,会得到更高的AUC值。

 

原因就在于,分层变量本身也是具有一定预测能力的变量。如果我们想要得到诊断试验指标本身的诊断准确度,就需要排除分层变量自身的预测能力对诊断试验表现的影响。

 

图2. 协变量分组ROC曲线和整体ROC曲线

蓝色:年龄≤34岁,AUC=0.7525

红色:年龄>34岁,AUC=0.7837

黄色:全部患者,AUC=0.7988

 

Janes和Pepe提出了一种协变量调整ROC曲线(AROC)方法,本文仅介绍这种方法的思想和如何实现。如果对公式感兴趣的小伙伴,可以参考这篇文章:

 

Accommodating covariates in ROC analysis

 

全文链接:

 

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2758790/

 

简单介绍下AROC

 

AROC的估计分为两步:1. 按照协变量的每个亚组(例如低年龄组和高年龄组),估计诊断指标值在健康人群(control)中的分布,然后根据这个分布,计算每个患病者(case)在所属亚组中的分位值(PV);2. 估计患病者的PV的累积分布函数。

 

如果协变量是连续型变量,我们就不能根据协变量划分亚组,这时候我们在第1步先建立在健康人群中,诊断指标值对协变量的回归模型,得到残差的分布,然后计算每个患病者的残差在这个分布中对应的分位值。

 

以上步骤,也叫诊断指标的标准化,我们可以用一句简单的概括来说明这一操作的基本思想:在与患病者特征一致的健康人群中,找到患病者的诊断指标值处于什么位置。

 

下一步,将会根据上述步骤计算得到的PV(经过标准化的诊断指标,而不是原始指标值)绘制AROC、计算AUC。

 

详解操作步骤

 

理论部分到此结束,大家最关心的,肯定是如何实现这种分析。这里我们需要用到stata中的roccurve命令,使用方法如下:

 

roccurve disease_var test_varlist, adjcov(covarlist) adjmodel(model)

 

disease_var表示疾病状态(1为患病,2为健康),test_varlist表示诊断试验指标,covarlist表示需要调整的协变量,adjmodel中的model代表协变量调整的模型类型,对于分类协变量选择stratified,对于连续型协变量选择linear。

 

我们还是以AFC为例,但是这里我们调整了年龄这个协变量。图3中,左图是按照年龄组(低龄/高龄)作为协变量进行调整,右图是将年龄作为连续变量进行调整的结果。

 

图3. 经年龄调整后的AFC的ROC曲线

TPR(True Positive Rate) = Sensitivity

FPR(False Positive Rate)=1-Specificity

 

我们可以将原始AFC,AFC按年龄组调整后,AFC按年龄调整后的ROC曲线绘制在一起,来进行对比(图4)。可以发现,在调整了年龄这个协变量之后,AFC的ROC曲线下面积有所减小,这说明年龄对AFC的影响会导致AFC本身的诊断准确度被高估。经调整后的AUC可以去除年龄的影响,正确体现AFC的诊断价值。

 

图4. 经年龄调整前与调整后的AFC的ROC曲线的对比

 

如果需要计算协变量调整后的AUC,我们需要用到comproc命令,使用方法如下:

comproc disease_var test_varlist, adjcov(covarlist) adjmodel(model)

 

其中模型参数与上文中roccurve的设置相同。结果见表1。

 

以上是调整后ROC曲线在stata中实现的方法,同样的分析,也可以用R来实现,具体参考ROCt包中的adjusted.ROC命令

https://cran.r-project.org/web/packages/ROCt/index.html

 

关注医咖会,提高临床研究水平!

描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
我要提问
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
    提交问题