利用pROC包绘制ROC曲线
install.packages("pROC") # 下载 pROC 包
install.packages("ggplot2") # 下载 ggplot2 包
library(pROC) # 加载pROC包
library(ggplot2) # 调用ggplot2包以利用ggroc函数
data(aSAH) # 加载数据集
head(aSAH) # 查看数据集前6行
roc1 # Build a ROC object and compute the AUC
roc2 # Create a few more curves for the next examples
# smooth=TRUE 绘制光滑曲线,默认为F,可省略
auc(roc1);ci(roc1)
auc(roc2);ci(roc2)
roc.test(roc1,roc2,method = "delong") # 其他两种方法 “bootstrap”或“venkatraman”
plot(roc1,
print.auc=TRUE,print.auc.x=0.5,print.auc.y=0.5, # 图像上输出AUC值,坐标为(x,y)
auc.polygon=TRUE, auc.polygon.col="skyblue", # 设置ROC曲线下填充色
max.auc.polygon=TRUE, # 填充整个图像
partial.auc=c(1, 0.8), partial.auc.focus="sp", # sp改为se试试
grid=c(0.1, 0.2),grid.col=c("green", "red"), # 设置间距为0.1,0.2,线条颜色
print.thres=TRUE, # 图像上输出最佳截断值
reuse.auc=F)
plot(roc1, # roc1换为roc2,更改参数可绘制roc2曲线
print.auc=TRUE,print.auc.x=0.5,print.auc.y=0.5, # 图像上输出AUC值,坐标为(x,y)
auc.polygon=TRUE, auc.polygon.col="skyblue", # 设置ROC曲线下填充色
max.auc.polygon=TRUE, # 填充整个图像
grid=c(0.1,0.2), grid.col=c("green", "red"), # 设置间距为0.1,0.2,线条颜色
print.thres=TRUE, print.thres.cex=0.8, # 图像上输出最佳截断值,字体缩放0.8倍
legacy.axes=TRUE) # 使横轴从0到1,表示为1-特异度
plot(roc1,
print.auc=TRUE, print.auc.x=0.4, print.auc.y=0.5,
# 图像上输出AUC值,坐标为(x,y)
auc.polygon=TRUE, auc.polygon.col="#fff7f7", # 设置ROC曲线下填充色
max.auc.polygon=FALSE, # 填充整个图像
grid=c(0.5, 0.2), grid.col=c("black", "black"), # 设置间距为0.1,0.2,线条颜色
print.thres=TRUE, print.thres.cex=0.9, # 图像上输出最佳截断值,字体缩放倍数
smooth=F, # 绘制不平滑曲线
main="Comparison of two ROC curves", # 添加标题
col="#FF2E63", # 曲线颜色
legacy.axes=TRUE) # 使横轴从0到1,表示为1-特异度
添加roc2曲线
plot.roc(roc2,
add=T, # 增加曲线
col="#252A34", # 曲线颜色为红色
print.thres=TRUE, print.thres.cex=0.9, # 图像上输出最佳截断值,字体缩放倍数
print.auc=TRUE, print.auc.x=0.4,print.auc.y=0.4,
# 图像上输出AUC值,坐标为(x,y)
smooth = F) # 绘制不平滑曲线
比较两组曲线有无统计学差异
testobj # 检验两条曲线
text(0.8, 0.2, labels=paste("P value =", format.pval(testobj$p.value)), adj=c(0, .5)) # 在图上添加P值
legend(0.35,0.30, # 图例位置
bty = "n", # 图例样式,默认为 "o"
title="", # 引号内添加图例标题
legend=c("roc1","roc2"), # 添加分组
col=c("#FF2E63","#252A34"), # 颜色跟前面一致
lwd=2) # 线条粗细
添加图例和P值
roc.list ggroc1 legacy.axes = TRUE); ggroc1
ggroc1 + xlab("1-specificity") + ylab("Sensitivity") +
theme_minimal() + ggtitle("My ROC curve") +
geom_segment(aes(x = 0,xend = 1,y = 0,yend = 1),col = "darkgrey",linetype = "dashed")
ggplot2包绘制图形就是要好看很多,但是还没学全,先将就着看吧
pROC是目前功能比较全面的ROC曲线专业绘制函数,具体参数设置参考pROC包。
往期:
R语言统计与绘图: KM曲线绘制 R语言统计与绘图: KM生存曲线+risk table 代码+注释 R语言统计与绘图: 临床论文中基线特征表1怎么做? R语言统计与绘图:COX回归模型怎么建?