学术资讯 » 学界研圈

  • 首 页
  • 期刊选题
  • 期刊点评
  • 期刊大全
  • 学人博客
  • 编辑征稿
  • 投稿选刊
  • 万维群组
  • 学术会议
  • 万维读书
  • SCI/E期刊
  • SSCI期刊
  • AHCI期刊
  • R语言:ROC曲线怎么画?

    阅读: 2022/11/30 13:45:26

    利用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行

    5 建立曲线

    roc1 <- roc(aSAH$outcome,aSAH$s100b);roc1 # Build a ROC object and compute the AUC

    roc2 <- roc(aSAH$outcome, aSAH$ndka);roc2 # Create a few more curves for the next examples

    # smooth=TRUE 绘制光滑曲线,默认为F,可省略

    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”

    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)

    其余计算方法参考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-特异度

    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-特异度

    添加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 <- roc.test(roc1,roc2) # 检验两条曲线

    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值

    7.3 ggroc函数绘制多条曲线

    roc.list <- roc(outcome ~ wfns + s100b + ndka, data = aSAH)

    ggroc1 <- ggroc(roc.list,

    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包。

    End

    来源:刘老师医学统计

    转自:“斐然智达SCI学术服务”微信公众号

    如有侵权,请联系本站删除!


    浏览(1307)
    点赞(0)
    收藏(0)
  • 上一篇:【会议纪要】2023年3月会议第一波推荐

    下一篇:推荐SCI审稿人必知的几个要点

  • 首页

  • 文章

  • 期刊

  • 帮助

  • 我的

版权所有 Copyright@2023    备案号:豫ICP备2021036211号