第 48 课

ROC 曲线的绘制

课程讲义导读 · 聚焦本课核心概念、分析流程与复现要点

说明:本页适合用于快速回顾本课重点、关键步骤与常用示例。

主讲老师第四十八课:ROC 曲线的绘制

对于 ROC 曲线(ROC.zip),相信大家必定不陌生吧?简单的介绍一下,ROC 的全称是ReceiverOperating Characteristic Curve,中文名字叫“受试者工作特征曲线”,其横坐标为假阳性率(FalsePositive Rate, FPR),纵坐标为真阳性率(True Positive Rate, TPR)。一般而言,ROC 曲线能够较好的反映出某事物对一个特定结局变量的预测能力与准确性。下面,我们一起来看下 ROC 曲线的多种绘制过程。

一、 基于 SPSS 软件绘制 ROC 曲线

首先,我们来看一下如何通过 SPSS 软件绘制 ROC 曲线

1. 将整理好的数据导入 SPSS 软件中,并将 Type 和 VCAN 变量设置为数值型变量。

在该数据集中,Type 为结局变量,其中 0 代表癌旁组织(Normal),1 代表肿瘤组织(Tumor)。

2. 选择“分析”-“ROC 曲线图”,进入参数设置界面:

3. 根据要求,将预测变量 VCAN 导入检验变量中,结局变量 Type 导入状态变量中,**并将状态变量的

值设置为 1**随后,在输出栏中勾选相应的内容,点击“确定”,进入结果界面

4. 在结果中,我们可以看到总的 positive 事件有 375 项,negative 事件有 32 项,即**存在 375 个肿

瘤组织,32 个癌旁组织。**对于 ROC 曲线,其曲线下面积为 0.853 (0.810-0.897),显示出该预测变量对癌和癌旁具有较好的区分效能。同时,右键“导出”即可将 ROC 曲线进行保存

二、 基于 R 软件绘制 ROC 曲线

在此,我们介绍两个 R 包进行 ROC 曲线的绘制。

1. ROC 曲线的绘制

1.1 R 包的安装与引用

在此,我们主要通过使用 R 的 ROCR 包,来进行 ROC 曲线的构建与绘制。

1.2 数据的载入

可以看到,在此数据集中,主要包括三个不同的观察变量,分别是病人信息(id),结局变量(Type),以及预测变量(VCAN 基因的表达值)

1.3 构建 ROC 预测模型

通过构建 ROC 模型,并计算曲线下面积可以看到,曲线下面积 AUC 值为 0.8535,表明该变量 VCAN 的表达能很好的区分肿瘤的癌和癌旁组织,这与前文中得到的 SPSS 中的结果是一致的。随后,根据上述的结果,我们对变量 AUC 进行了相应的赋值。

1.4 绘制 ROC 曲线

至此,一个完整的 ROC 曲线图就绘制完成了

2. timeROC 的绘制

有时候,在生存分析中,我们的预测结局变量往往包含生存时间(time)和生存状态(statue)两个值。此时,不管是 SPSS 软件和 GraphPad 软件,还是 ROCR 包,已经很难满足绘图的要求,R 的timeROC 包就出现了,以进行绘制时间依赖性 ROC 曲线。

2.1 R 包的安装与引用

安装完成后,加载 timeROC 包。

2.2 数据的整理与载入

与之前的不同,在该数据集中,除了病人信息(id)和预测变量(VCAN 的表达值)外,还具有两个结局变量,分别是 futime(时间)和 fustat(状态)。

2.3 构建 ROC 曲线函数

在分析中,通过 marginal 进行权重赋值,即 K-M 分析法,分析了在不同时间截点时,VCAN 对患者的生存预测能力。

结果显示了事件的数量(Cases)、存活数(Survivors),以及 VCAN 基因预测患者 1 年,3 年和 5 年生存情况的 AUC 值。

2.4 绘制 ROC 曲线

红、绿、蓝三条线分别代表了 VCAN 对患者 1 年,3 年以及 5 年生存预测情况的曲线。

2.5 计算曲线下面积(AUC)以及 95%的置信区间

接下来,分别获取 AUC 值及其对应的 95%可信区间。结果显示,其 1 年,3 年,以及 5年的曲线下面积值分别为 0.598,0.629,以及 0.799。

同时,通过 confint()函数,我们分别获得了相应曲线的 95%可信区间。

2.6 绘制 Time-Dependent AUC 曲线

通过 plotAUCcurve()函数,将不同时间点的 AUC 值及其 95%CI 绘制成图。

直观的反映出在不同时间中 VCAN 基因对患者预后的预测能力大小。在图中,随着时间的增加,其预测的准确性也逐渐上升。

3. ROC 曲线进阶版

3.1 R 包的安装与引用

首先,自然是 R 包的安装与引用过程,我们以 pROC 包为例,给大家讲解一下整个的绘制过程。

3.2 数据的整理与载入

可以发现,该数据集包含病人名称(ID),组织类型(Type),以及两个不同的基因表达水平(VCAN和 TP53)等变量内容同时,使用 str()函数,提示数据集中一共有 407 例样本,其中 32 例为正常样品,375例为肿瘤样品。

接着,我们来分析一下 VCAN 和 TP53 基因对区分患者正常和肿瘤的能力,并比较两者之间是否存在差异。

3.3 构建 ROC 预测模型

随后,利用 roc()函数,分别构建两个不同的预测模型结果显示,对于预测 375 例肿瘤组织和 32 例正常样品,VCAN 和 TP53 基因的 ROC 曲线下面积分别为

0.8535 和 0.7582,可以发现,两个包获得的结果,VCAN 预测能力,是一致的。

3.4 绘制 ROC 曲线

3.4.1 绘制 ROC 曲线及平滑拟合

首先,我们先通过 plot()函数,将 ROC 曲线的最简图形绘制出来。

柔美的线条总是更具优势,也符合大家的审美需求。通过 smooth()函数,对上图中的曲线进行简单的拟合,从而得到了一个新的 ROC 曲线

3.4.2 添加可信区间

基于 ci.sp()函数,通过 2000 次重复计算,对预测模型进行不断的拟合,最终得到 ROC曲线在不同取值时所对应的 95%可信区间。

3.4.3 添加 AUC,阈值等参数

在 VCAN 表达预测患者正常和肿瘤组织时,取其表达量为 5.835 时为最佳的截断值(cut-off value),其特异性为 0.938,灵敏性为 0.739

3.4.4 绘制两条曲线并比较 p 值

与之前介绍的内容一样,通过将 add 参数的值修改为 TRUE,即可将两个曲线显示在同一个图层中,其中红色和蓝色曲线分别代表 VCAN 和 TP53 两个基因。接着,通过 roc.test()函数对两个 ROC 曲线进行比较。

对两条曲线进行比较,结果显示,P = 0.00875 <0.05,即两条曲线之间存在显著性差异,说明 VCAN 的预测效能显著高于 TP53 基因

3.4.5.终极版本

除了讲解提到的添加,在 plot()函数中还有许多参数可供大家进行修改。

我们将前面的内容进行综合,并增加了一些其他相关图形美化的参数,得到了最终版本的 ROC 曲线。

好啦,ROC 的相关绘制方法就给大家介绍这么多了。

← 返回批次1总导航