进阶版ROC曲线来了!教你优雅地给ROC“添油加醋”!你一定会爱上!(附代码)
大家好,我是阿琛。在上一期的内容中,从SPSS和R软件出发,我给大家介绍了ROC曲线的简单绘制方法(临床生信SCI加分必备!ROC可视化教程看这篇就够了!你一定要试试!)。今天我们一起来看看如何将得到的ROC曲线进行美化,以及更进一步衍生。
下面,我们一起来看下ROC曲线各种进阶版本的绘制方法。
R包的安装与引用
#install.packages('pROC')library(pROC)数据的整理与载入
rt <- read.table('exp.txt', header=T,sep=' ', check.names=F, row.names=1)head(rt) #查看数据集前6行内容

str(rt) #查看变量相关信息
构建ROC预测模型
ROC1 <- roc(rt$Type, rt$VCAN,levels = c('Normal', 'Tumor'))ROC2 <- roc(rt$Type, rt$TP53,levels = c('Normal', 'Tumor'))ROC1 #查看模型的预测效能ROC2 #查看模型的预测效能


绘制ROC曲线
#绘制ROC曲线plot(ROC1, col = 'red', #设置曲线颜色 legacy.axes = TRUE, #使x轴变为1-Specificity xlab = '1-Specificity')
#拟合平滑的ROC曲线plot(smooth(ROC1, method='density'), #使用smooth()函数进行平滑拟合add = FALSE, #不添加到上一个图层col = 'red', #设置曲线颜色legacy.axes = TRUE, #使x轴变为1-Specificityxlab = '1-Specificity')

plot(ROC1)ROC3 <- ci.sp(ROC1, sensitivities = seq(0, 1, 0.01), #评估CI的敏感性 boot.n = 2000) #重复计算次数,默认为2000次plot(ROC3, add = FALSE, #不添加到上一个图层 type = 'shape', #置信区间的类型 col = 'red')
plot(ROC1,add = FALSE, #不添加至上一图层col = 'red', #设置曲线颜色legacy.axes = TRUE, #使x轴变为1-Specificityxlab = '1-Specificity',print.auc =TRUE,print.auc.x = 0.5, #输出auc值的x轴位置print.auc.y = 0.5, #输出auc值的y轴位置print.thres = TRUE)

#绘制2条ROC曲线plot(ROC1, col = 'red', #设置曲线颜色 legacy.axes = TRUE, #使x轴变为1-Specificity xlab = '1-Specificity')plot(ROC2, add = TRUE, #添加至上一图层 col = 'blue', #设置曲线颜色 legacy.axes = TRUE, #使x轴变为1-Specificity xlab = '1-Specificity')legend(0.2, 0.2, lwd = 2, legend = c('VCAN', 'TP53'), col = c('red', 'blue'))
#比较并添加p值test <- roc.test(ROC1, ROC2) #对两条ROC曲线进行比较text(0.6, 0.2, #设置坐标轴位置adj = c(0, 0.5),labels = paste0('P value =', format.pval(test$p.value))) #添加p值


终极版本
plot(ROC1, add = FALSE, #不添加至上一图层 col = 'red', #设置曲线颜色 legacy.axes = TRUE, #使x轴变为1-Specificity xlab = '1-Specificity', main = 'ROC Curve for VCAN', #添加标题 print.auc =TRUE, auc.polygon = TRUE, #将auc曲线下面积转换为多边形 auc.polygon.col = '#fff7f7', #设置多边形的填充色 grid = c(0.5, 0.2), #设置两轴网格线的间隔为0.5,0.2 grid.col = c('black', 'black'), #设置两轴网格线的颜色 print.thres = TRUE)legend(0.25, 0.2, #设置位置的x轴和y轴坐标 lwd = 2, legend = 'VCAN', col = 'red') #颜色与ROC曲线的颜色一致

赞 (0)
