R语言绘制ROC曲线并计算AUC的0.95CI值
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
这是我的第66篇原创文章,关于R语言和ROC曲线。
阅读完本文,你可以知道:
1 ROC曲线绘制
2 AUC的0.95CI值计算
美国格兰特教授认为:“帮助别人解决困难可以让人学习到更多的东西,你的经验和社会资本也随之积累,但这也不是一下子就能兑现的,他会在你不经意时给你带来惊喜。”
最近,我和一位医学朋友交流。他说,模型的结果:AUC值需要带上置信度区间。比方说,AUC的0.95CI值。含义表示,AUC的值落在某个区间里面的置信度是95%,这个区间就是我们所要计算的。
我是用R语言的ROCit包解决这个问题。
参考代码如下:
##########################
#问题定义:
#绘制带有置信度的ROC曲线
#########################
# R包
library(ROCit)
library(tidyverse)
library(caret)
# 数据导入
data <- read_csv('./data/pima-indians-diabetes.data.csv')
data %>% View
# 变量重命名
# pt: pregnant times
# pgc: plasma glucose concentration
# bp: blood pressure
# st: skin thickness
# insulin: insulin
# dpf: diabetes pedigree function
# age: age
# class: 1 if diabetes, 0 otherwise
colnames(data) <- c('pt', 'pgc', 'bp', 'st', 'insulin', 'dpf', 'age', 'class')
# 变量类型转换
data$class <- as.factor(data$class)
# 数据集划分
set.seed(1234)
train_index <- createDataPartition(y=data$class, p=0.6, list = FALSE)
train_data <- data[train_index, ]
test_data <- data[-train_index, ]
# 训练LR模型
logistic_model <- glm(class ~.,
data = train_data,
family = "binomial")
# 绘制训练集的ROC曲线
# 定义score和class
score <- logit(logistic_model$fitted.values)
class <- logistic_model$y
rocit_emp <- rocit(
score = score,
class = class,
method = 'emp'
)
summary(rocit_emp)
# 绘制ROC曲线
plot(rocit_emp, col = c(1,"gray50"),
legend = FALSE, YIndex = FALSE)
# AUC置信度区间估计,默认值是0.95CI
ciAUC(rocit_emp)
结果如下
1 rocit_emp的摘要分析
2 ROC曲线
3 AUC值的0.95CI结果
思考题:
1 请绘制模型在测试集上的ROC曲线,计算AUC值以及AUC值的0.95CI。
想要数据集和代码的朋友,请按着如下操作:
-
第一步,添加我的个人微信:luqin360,备注:实名-专业或者工作;
-
第二步:即可获取。
关于ROC绘制和计算AUC值的0.95CI,你有什么问题或者想法,请留言。或者添加我的微信luqin360,备注实名+专业or工作,深入交流。
我的视频号:王路情微信视频号,分享我对数据的认知,包括我创立的PDFMV框架,大数据A-Z轻知识,R语言轻知识,请关注。
PDFMV框架系列文章

请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!