专栏/Logistic构建预测模型(5):如何用R语言绘制精美的ROC曲线?(附全套代码)

Logistic构建预测模型(5):如何用R语言绘制精美的ROC曲线?(附全套代码)

2023年08月12日 00:10--浏览 · --点赞 · --评论
粉丝:248文章:180

Logistic构建临床预测模型系列主要以一篇基于logistic回归构建预测模型的文章为例,从整理数据到构建预测模型,再到内部验证模型,包括了整理数据、随机数据拆分、基线描述、差异性分析、绘制ROC曲线并计算AUC值、HL检验及绘制校准曲线、构建列线图模型并绘制DCA曲线,基本涵盖了Logistic构建预测模型的全过程,敬请期待!

本文属于Logistic构建临床预测模型系列文章第四篇,分别用R语言和风暴统计对构建Logistic预测模型过程中必不可少的Logistic单因素+多因素回归进行复现。系列文章详情请点击下方链接:

Logistic构建预测模型(1):复现SEER数据库文献解读

Logistic构建预测模型(2):如何用R语言整理数据?(附全套代码)

Logistic构建预测模型(3):如何用R语言拆分数据集并做均衡性检验?(附全套代码)

Logistic构建预测模型(4):如何用R语言做Logistic先单后多回归分析!(附全套代码)


本文主要以这篇基于logistic回归构建预测模型的文章为例,分别用R语言和风暴统计对预测模型验证过程中经常用到的ROC曲线绘制和AUC曲线下面积计算进行复现。


今日文章分为三部分
1.R语言复现
2.小白美化ROC曲线的方法


1.R语言复现

根据文章的纳排标准,从SEER数据库提取数据,并通过筛选、整理得到数据集total,将数据按照7:3拆分为训练集train和验证集test,并展开分析。本文重点复现文章中训练集ROC曲线的绘制。

1.1安装和加载R包,导入train数据集,共14个自变量,均为定性数据。经过单因素及多因素logistic回归,包括年龄、性别、种族、肿瘤大小、组织学、T分期、N分期、手术、放疗、化疗、骨转移、肝转移均纳入构建预测模型。

if(!require("pROC")) install.packages("pROC")
setwd("D:/R/lung cancer-seer-logistic")#设置工作空间
cancer<- read.csv("train.csv")#导入数据集
str(train)#查看数据

1.2添加新变量,计算训练集预测概率

train$Pred_int<-predict(overall.log,newdata = train, type = "response")

代码解读:
train_model1:是从glm继承的模型对象,即通过多因素Logistic回归构建的模型;
newdata:选定数据框;
type: 表示预测种类。默认是归一化的线性预测; responses是归一化的响应变量。因此对于一个二分类模型,默认是log-odds (logit归一化的概率),然而type="response"给出的是预测概率。"erms"返回一个矩阵提供在线性预测下模型公式中每一项的拟合值。

1.3计算AUC去线下面积

train_roc<-roc(train$All.cause.early.death,
               train$Pred_int,ci=T)#建立ROC关系
print(paste0("AUC (95%CI): ",sprintf("%0.3f",train_roc$ci)[2],
             " (",sprintf("%0.3f",train_roc$ci)[1]," - ",
             sprintf("%0.3f",train_roc$ci)[3],")"),quote=F)

代码解读:roc函数建立ROC关系,train$All.cause.early.death为所研究的结局,train$Pred_int为预测概率,ci=T表示输出置信区间。

AUC值

1.4绘制ROC曲线

plot(train_roc,
     print.auc=TRUE, #设置是否添加AUC值标签
     auc.polygon=T, #设置是否添加AUC值面积多边形
     grid=c(0.1, 0.2), #设置是否添加网格线
     grid.col=c("green","red"), ##设置网格线颜色
     col="red",#设置ROC曲线颜色
     max.auc.polygon=TRUE, #设置是否添加最大AUC值面积多边形
     legacy.axes=F, #x轴格式更改
     auc.polygon.col="skyblue", #设置AUC值面积多边形的填充色
     print.thres=T, #是否添加截点和95%CI,
     print.thres.col="black",#设置阈值的颜色
     main="ROC curve of train")#图的主标题

代码解读:本文所提供的ROC曲线绘制的代码参数较多,可以帮助诸位绘制比较精美的ROC曲线图,不妨一试。

ROC曲线

如上,以非小细胞肺癌脑转移全因早死为结局的ROC曲线就绘制完成啦!但是R语言的操作属实还是比较难的,下面为大家展示一下另一种十分快捷简单,并且也是以R语言为基础的绘制方法!

2.小白美化ROC曲线的方法

用它,小白也能画出ROC曲线,并且直接美化,不是吹的,看过就知道它有多好用!!

风暴统计

2.1电脑端打开风暴统计平台——“风暴智能统计”模块,点击“临床预测模型(最新)”,进入“临床预测模型:内部验证”页面。


临床预测模型:内部验证

2.2导入数据集total

导入数据集

2.3拆分数据集,设置随机数字并确定拆分比例

拆分数据集

2.4开展logistic回归分析

logistic回归

2.5结果直出

回归变量和多因素回归设置完成后,下方结果直接给出,如下图所示,快的让人震惊!!!

ROC曲线

ROC曲线显示设置不用再像R语言一样摆出一行行的代码,直接小白式操作也可以画出非常精美的ROC曲线,并且AUC直也不需要单独计算,这也太神了吧!


ROC曲线参数设置

结果也可以直接下载


结果下载

快来试试吧,绝对惊艳你!

投诉或建议