pROC包绘制ROC曲线和计算AUC值0.95CI
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
这是我的第67篇原创文章,关于R语言和pROC包绘制ROC曲线。
阅读完本文,你可以知道:
1 ROC曲线绘制
2 AUC的0.95CI值计算
“每个人都需要帮助,若是能够帮助别人,会是一件快乐的事情”
我最近在做一篇论文,模型的性能评价采用了ROC曲线和AUC值。一位医学朋友推荐我采用pROC包绘制ROC曲线。
我利用pROC包绘制ROC曲线和计算AUC值的0.95CI。
一 参考代码
##################
#利用pROC包绘制ROC曲线
##################
library(tidyverse)
library(caret)
library(randomForest)
library(pROC)
# 数据导入
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
# BMI:BMI
# dpf: diabetes pedigree function
# age: age
# class: 1 if diabetes, 0 otherwise
colnames(data) <- c('pt', 'pgc', 'bp', 'st', 'insulin', 'BMI','dpf', 'age', 'class')
data %>% View
# 变量类型转换
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")
# 训练随机森林模型
RF_model <- randomForest(class ~ .,
data = train_data)
# 训练集模型的ROC曲线对比分析
par(pty="s")
roc_LR <- roc(train_data$class, logistic_model$fitted.values,
plot = TRUE,
legacy.axes=TRUE,
percent = TRUE,
col = "#377eb8",
lwd = 4,
xlab="False Positive Percentage",
ylab="True Positive Percentage",
main="ROC Chart on Train",
print.auc=TRUE)
roc_RF <- plot.roc(train_data$class, RF_model$votes[,2],
percent=TRUE,
col="#4daf4a",
lwd=4,
print.auc=TRUE,
add=TRUE,
print.auc.y=45)
legend('bottomright',
legend = c('Logistic Regression', 'Random Forest'),
col=c("#377eb8", "#4daf4a"),
lwd = 4)
# 获得AUC的0.95CI
ci.auc(roc_LR)
ci.auc(roc_RF)
二 代码结果
2.1 ROC曲线
2.2 AUC的0.95CI值
三 思考题
1 如何绘制测试集的ROC曲线?
想要数据集和代码的朋友,请按着如下操作:
-
第一步,添加我的个人微信:luqin360,备注:实名-专业或者工作;
-
第二步:即可获取。
关于pROC包绘制ROC和计算AUC值的0.95CI,你有什么问题或者想法,请留言。或者添加我的微信luqin360,备注实名+专业or工作,深入交流。
我的视频号:王路情微信视频号,分享我对数据的认知,包括我创立的PDFMV框架,大数据A-Z轻知识,R语言轻知识,请关注。
PDFMV框架系列文章

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