分享

ROC分析

 Memo_Cleon 2021-08-16

本次笔记涉及单变量和多变量的ROC和PR曲线的绘制,AUC、最佳界值的确定以及两条ROC曲线间的比较,采用软件SPSS26。

受试者工作特征曲线(Receiver Operating Characteristic Curve, ROC曲线)和ROC曲线下的面积(Area Under ROC Curve,AUC)常用于诊断试验的评估,在二分类的logistic回归模型的模型拟合效果评估中也用到了AUC。
为更好的理解ROC,需要先理解几个概念。当我们采用某种诊断方法对一个二分类的结局场景进行预测时,就产生了下面的混淆矩阵:

由这个混淆矩阵我们可以得到很多指标:

真阳性率(TPR)=TP/(TP+FN):实际为阳性预测也为阳性的比例。也称灵敏度(Sensitivity)、召回率(Recall);

假阳性率(FPR)=FP/(FP+TN):实际为阴性但预测为阳性的比例;

真阴性率(TNR)=TN/(FP+TN):实际为阴性预测也为阴性的比例。也称为特异度(Specificity);

假阴性率(FNR)=FN/(TP+FN):实际为阳性但预测为阴性的比例;

准确率(ACC)=(TP+TN)/(TP+FP+FN+TN):预测正确的比例;

阳性预测值(PPV)=TP/(TP+FP):预测为阳性的结果中实际为阳性的比例。也称精准率(Precision);

阴性预测值(NPV)=TN/(FN+TN):预测为阴性的结果中实际为阴性的比例。

ROC曲线是以灵敏度为纵坐标、(1-特异度)为横坐标绘制的曲线。灵敏度(Sensitivity)即真阳性率(TPR),特异度(Specificity)即为真阴性率(TNR),(1-特异度)就是(1-TNR)=FPR,所以ROC曲线横坐标值是假阳性率(FPR),而纵坐标值是真阳性率(TPR)。

这里可能会有一个疑问,一组数据不应该只有一个分类结果吗,而ROC曲线则是需要一系列的TPR和FPR值,这是如何做到的?其实这就涉及到分类的界值了。我们可以通过计算获得每一个样本的阳性预测概率,这时再确定一个分类的标准,比如高于50%算阳性,而低于50%算阴性,这样就可以获得50%作为分类界值的TPR和FPR。同样的当我们把这个界值设定为0-1之间的不同数值时,我们就获得了不同的TPR和FPR。在ROC中有几个特殊的点:(1,0),(0,1),(0,0),(1,1)。在(1,0)点,表示TPR=0,FPR=1,也就是真阳性率为0%,假阳性率为100%(或者说真阴性率为0%),该点完美的避开了所有正确的结果。在(0,1)恰好相反,TPR=100%,TNR=100%,是最完美的模型,所有的预测结果跟实际一样。(0,0)点,TPR=FPR=0%,所有的结果都会被预测为阴性结果,而(1,1)点TPR=FPR=100%,所有的结果都会被预测为阳性结果。一个完美预测模型的TPR=100%,FPR=0%(或者说TNR=100%),其ROC曲线应该是与纵坐标轴重合垂直向上,然后在纵坐标=100%处水平向右。实际当中,ROC曲线越靠近左上角,实验或者模型区分二分类结果的能力就越强,ROC曲线最靠近左上角的的点假阳性和假阴性的总数最少,正确率最高。
本例数据来自R程序包pROC。

数据介绍可参见文献“A multiparameter panel method for outcome prediction following aneurysmal subarachnoid hemorrhage”[Intensive Care Med. 2010 Jan;36(1):107-15. ]。研究数据来自两个独立队列(一组28名和113名患者)的141名蛛网膜下腔出血(aSAH) 患者。

纳入标准是入院前最后 2 天内的 aSAH 临床病史,并且 CT 显示出血和动脉瘤的存在,年龄在18岁以上,入院后48小时内接受手术治疗。患者在 aSAH 发作后48小时内入院,入院后12小时内抽取静脉血样以测量脑损伤相关生物标志物(H-FABP、NDKA、UFD1 和 S100beta)和肌钙蛋白 I等指标,入院时进行WFNS分级量表评估,并在6个月时采用格拉斯哥结局评分(GOS)进行评估。H-FABP:心脏型脂肪酸结合蛋白;NDKA:Nucleoside diphosphate kinase A,核苷二磷酸激酶A;UFD1:Ubiquitin fusion degradation protein,泛素融合降解蛋白;S100β:中枢神经特异性蛋白,为脑损伤的生化标志物;WFNS:世界神经外科医师联盟;GOS:格拉斯哥结局评分,本例根据GOS预后评分生成一个二分类变量:1~3分为不良结局(死亡;植物生存;重度残疾),4~5分为尚好(轻度残疾;恢复良好)。
113 名患者的队列样品在送检时滞后了14个月,所以研究分两个队列进行分析。R程序包pROC中的数据包含了这113例aSAH患者的7个变量信息。
数据准备:从R中导出数据

data(aSAH,package="pROC")

write.csv(aSAH,file = "D:/Temp/aSAH.csv")

然后将数据导入到SPSS中即可。

【1】单变ROC曲线绘制绘制用入院时的WFNS评分来预测术后6个月的结局ROC曲线。

Analyze>>Classify>>ROC Curve…

结果如下:

很明显结果存在问题,ROC曲线在对角线右下侧,AUC=0.176。这种情况是我们把阳性结果搞反了。我们可以在绘制ROC曲线的对话框中将[状态变量的值]修改为0,或者在[选项]按钮中将检验方向修改为较小的检验结果表示更为阳性的检验。

ROC曲线绘制结果如下,AUC=0.824,与AUC=0.5相比具有统计学意义(P<0.001)。

我们还可以通过曲线灵敏度和特异度来寻找最佳界值,即寻找灵敏度和特异度之和最大的点。约登指数(Youden’s index)=敏感性+特异性-1,表示检验方法发现真正病人和非病人的能力,该指数值的取最大值处就是最佳的界值。注意在曲线的坐标点表格中显示的是灵敏度和(1-特异度),我们可以用灵敏度-(1-特异度)=灵敏度+特异性-1,即可以用表格中第二列减去第三列,差值最大的那一行对应的第一列的值就是最佳界值。本例当wfns=3.5时,0.833-0.366=0.467最大,wfns即最佳界值为3.5。

【2】多变量ROC曲线绘制

其实这个我们在二分类logistic回归中已经使用过。具体方法就是将结局变量作为因变量,考虑绘制ROC曲线的多个变量作为自变量建立二分类的logistic回归模型,并通过该模型获得预测概率。然后用结局变量和预测概率来绘制ROC曲线即可。

Analyze>>Regression>>Binary logistic…

具体操作如下:

Analyze>>Classify>>ROC Curve…

注意在这里的状态变量变成了1哦。

结果如下,AUC=0.872,P<0.001

【3】两条ROC曲线AUC间的比较:配对还是独立?

我们首先建立预测结局变量(outcome)的几条ROC曲线:①wfns;②s100b;③【2】中建立的ROC曲线;④通过logistic回归筛选变量的预测概率建立的ROC曲线。【2】中通过ENTER方法建立的logistic模型有很多变量是没有统计学意义的,通过Backward:LR可以获得只有wfns和ndka的简化模型,同【2】中一样保存预测概率,具体步骤略。

在绘制这4条ROC曲线时,需要首先将结局变量(outcome)的赋值改为Good=0,Poor=1,否则会导致ROC有的在对角线下方,有的在上方。

根据SPSS帮助文件,Use the Paired-sample design setting to request the paired-sample design for the test variable(s). The paired-sample design compares two ROC curves in a paired-sample scenario when multiple test values are measured on the same subjects that are associated with a state variable,当多个要检验的测量值均来自与状态变量相关的同一对象时,两条ROC曲线的比较应采用配对设置。

SPSS里面的ROC分析[ROC Analysis]过程可以实现比ROC曲线[ROC Curve]过程更多的功能,除了可以实现[ROC Curve]过程的各种功能外,还可以进行曲线的比较,绘制Precision-Recall曲线等。

Analyze>>Classify>>ROC Analysis…

将要检验的变量wfns、s100b、4变量模型预测值和2变量模型预测值放入检验变量框,状态变量选入结局变量outcome,状态变量值为1(赋值1为阳性,注意已将原值修改为Good=0,Poor=1),选中配对样本设计,在[显示]按钮中选中带对角线、标准误和置信区间。

结果如下,我们可以看到绘制的4条ROC曲线,曲线可以双击进行美化。

4条ROC的AUC信息如下:4条ROC曲线的AUC与AUC=0.5均存在统计学差异。但需要注意的是4条ROC的AUC的95%CI都有相互重叠的部分,提示4条曲线AUC之间统计学意义不明显。但此时四条曲线间应属于配对设计而不是独立设计,因此直接通过95CI%来判断应该不妥。

4条ROC曲线间的比较如下:wfns与s100b、4变量预测概率与s100b、2变量预测概率与s100b存在统计学差异。

如果你想看到的某个变量不同水平间ROC曲线之间的比较,这时候需要两独立样本的比较,比如在本例中我们想看下男女之间是s100b的ROC是否有差异,需要将gender选入分组变量,并进行组定义。

结果表明,男性和女性间的S100β的ROC曲线下面积不存在统计学意义(Z=0.508,P=0.612)。注意男女AUC的95%CI存在重叠,这跟统计学检验结果是一致的。

【4】Precision-Recall曲线

ROC曲线假阳性率(FPR)为横坐标、真阳性率(TPR)为纵坐标绘制的曲线,ROC曲线越向左上角(0,1)突出,诊断或者拟合效果越好。而PR曲线是召回率(Recall,真阳性,查全率)为横坐标、精准率(Precision,阳性预测值,查准率)为纵坐标绘制的曲线,PR曲线越向右上角(1,1)突出,诊断或者拟合效果越好。但阳性和阴性样本差距不大时,ROC和PR的趋势类似,但当阴性和阳性样本比例差别较大时PRC更能反映分类的真实性。当观察到的数据样本高度偏斜时,Precision-Recall 曲线往往会提供更多信息,并为类分布中具有较大偏斜的数据提供 ROC 曲线的替代方案。

Analyze>>Classify>>ROC Analysis…

部分结果如下,其中模型质量用条形图显示,数据是AUC 的置信区间下限的值,如S100β在条形图中的是0.63,是S100β的AUC的95%CI的下限0.631。

END

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多