roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?

利用pROC包绘制ROC曲线

1 写在前面

  • 需要的包为"pROC"、"ggplot2"。如果没有,请安装。
  • 使用自带的aSAH数据库,数据库:This dataset summarizes several clinical and one laboratory variable of 113 patients with an aneurysmal subarachnoid hemorrhage.
  • pROC包中的缩写:
    • ROC: receiver operating characteristic
    • AUC: area under the ROC curve
    • pAUC: partial AUC
    • CI: confidence interval
    • SP: specificity
    • SE: sensitivity

2 安装拓展包

install.packages("pROC")     # 下载 pROC 包
install.packages("ggplot2") # 下载 ggplot2 包

3 调用拓展包

library(pROC)      # 加载pROC包
library(ggplot2) # 调用ggplot2包以利用ggroc函数

4 导入数据

data(aSAH)   # 加载数据集
head(aSAH) # 查看数据集前6行
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第1张图片

5 建立曲线

roc1 # Build a ROC object and compute the AUC
roc2 # Create a few more curves for the next examples
# smooth=TRUE 绘制光滑曲线,默认为F,可省略
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第2张图片

6 统计分析

6.1 分别计算roc1、roc2的AUROC和95%CI

auc(roc1);ci(roc1)
auc(roc2);ci(roc2)

6.2 比较两条ROC曲线是否有差异

roc.test(roc1,roc2,method = "delong") # 其他两种方法 “bootstrap”或“venkatraman”
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第3张图片

6.3 计算partial AUC

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)
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第4张图片

其余计算方法参考pROC包

7 绘制图形

7.1  plot函数绘制单条ROC曲线

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-特异度
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第5张图片

7.2  plot函数绘制多条曲线

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-特异度
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第6张图片

添加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) # 绘制不平滑曲线
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第7张图片

比较两组曲线有无统计学差异

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曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第8张图片

7.3 ggroc函数绘制多条曲线

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")
roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第9张图片

ggplot2包绘制图形就是要好看很多,但是还没学全,先将就着看吧

pROC是目前功能比较全面的ROC曲线专业绘制函数,具体参数设置参考pROC包。

End

roc曲线怎么绘制_R语言与统计:ROC曲线怎么画?_第10张图片

往期:

R语言统计与绘图: KM曲线绘制 R语言统计与绘图: KM生存曲线+risk table 代码+注释 R语言统计与绘图: 临床论文中基线特征表1怎么做? R语言统计与绘图:COX回归模型怎么建?

你可能感兴趣的:(roc曲线怎么绘制,r语言,fread函数参数怎么选择,r语言,plot,r语言ggplot画两条曲线,取得贝塞尔曲线x坐标的y值,比较两条曲线相似度)