加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

R语言画ROC曲线图

(2017-06-27 21:33:00)
标签:

生物信息学

分类: 生物信息学

受试者工作特征曲线(ROC曲线,receiver operator characteristic curve),最初作为一种分析方法在二战时用于评价雷达性能(鉴别敌方,友方以及噪音),目前广泛应用于医学诊断、生物信息学、数据挖掘和机器学习等研究中。

ROC曲线可用于评价生物标记物(biomarker)的表现以及比较不同打分方法(scoring methods)。因此,ROC曲线是非常重要和常见的统计分析方法[1]

ROC曲线是以真阳性率TPR(True positive rate)(灵敏度)为纵坐标,假阳性率FPR(False positive rate)(特异度)为横坐标绘制的曲线。主要用来评价一个二值分类器(binary classifier)的优劣。

AUC(area under the curve)为曲线下面的面积,作为评估指标,AUC值越大,说明模型越好。

ROC分析原理:

ROC分析本质上属于机器学习中很常见的二元分类器。很多二元分类器会产生一个概率预测值,而不仅仅是0-1预测值。我们可以使用某个临界点(例如0.5),以划分哪些预测为1,哪些预测为0。得到二元预测值后,可以构建一个混淆矩阵来评价二元分类器的预测效果。所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive + False Positive。分类器的训练参数和临界点的选择是影响TPR和FPR的因素。

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

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


library(pROC)  #调用pROC包

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


#建立曲线

data(aSAH) 

rocobj1 <- roc(aSAH$outcome, aSAH$s100b)

rocobj2 <- roc(aSAH$outcome, aSAH$wfns)

rocobj3 <- roc(aSAH$outcome, aSAH$ndka)

#计算full AUC

auc(rocobj1)

auc(rocobj2)

auc(rocobj3)

#绘制曲线

plot(rocobj1)

#其他参数美化(自定义网络线颜色等等)

plot(rocobj1, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2), grid.col=c("green", "red"), max.auc.polygon=TRUE,

auc.polygon.col="skyblue", print.thres=TRUE)

# 计算partial AUC选择关注(sp或se)一定范围的数据

 

plot(rocobj1, print.auc=TRUE, auc.polygon=TRUE, partial.auc=c(1, 0.8), partial.auc.focus="sp", grid=c(0.1, 0.2), grid.col=c("green", "red"), max.auc.polygon=TRUE, auc.polygon.col="skyblue", print.thres=TRUE, reuse.auc=FALSE)

#比较两个曲线,pROC提供三种方法比较“delong”, “bootstrap”或“venkatraman”

roc.test(rocobj1, rocobj2, method="bootstrap")


#ggroc(功能仍在测试中)绘制Multiple curves

g3 <- ggroc(list(s100b=rocobj, wfns=rocobj2, ndka= rocobj3))

 

g3

 

当然可以自定义参数,绘出符合自己需要的图型。附上参考文献中发表的ROC图:

总之,pROC是目前功能最全面的ROC曲线专业绘制函数。此外,R中CRAN packages还有ROCR、verification、Bioconductor's roc可以绘制ROC曲线,感兴趣也可以进行尝试。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有