R语言 ROC曲线

简介: ROC曲线(受试者工作特征, Receiver Operating Characteristic) 可以简单、直观得观察分析方法的临床准确性,并可用肉眼作出判断。
  • ROC曲线(受试者工作特征, Receiver Operating Characteristic) 可以简单、直观得观察分析方法的临床准确性,并可用肉眼作出判断。ROC以真阳性率(灵敏度FPR)为纵坐标,假阳性率(1-特异度TPR)为横坐标绘制的曲线,可准确反映某分析方法特异性和敏感性的关系,是试验准确性的综合代表。ROC曲线不固定分类界值,允许中间状态存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一更佳截断点作为诊断参考值。提供不同试验之间在共同标尺下的直观的比较,ROC曲线越凸越近左上角表明其诊断价值越大,利于不同指标间的比较。曲线下面积可评价诊断准确性。
  • 相关定义及计算公式(用混淆矩阵的形式将分类结果展示出来)


    img_11b13a4d5da146447cfb527ef65a8e18.jpe
setwd("E:\\Rwork")
library(ROCR)
data(ROCR.simple)
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels) 
#ROCR.simple$predictions为预测标签,ROCR.simple$labels为真实标签
perf <- performance(pred,"tpr","fpr")
auc <- performance(pred,'auc')
auc = unlist(slot(auc,"y.values"))
plot(perf,
     xlim=c(0,1), ylim=c(0,1),col='red', 
     main=paste("ROC curve (", "AUC = ",auc,")"),
     lwd = 2, cex.main=1.3, cex.lab=1.2, cex.axis=1.2, font=1.2)
abline(0,1)
img_275e294b32a85b32f6f1c09b25e40008.png
  • 使用pROC包 Affairs(婚外情数据)数据取于1969年,该数据包括9个变量,601个样本


    img_73ac4394190dadcabc4c0cd3dd35a68c.jpe
data(Affairs, package="AER")
summary(Affairs)

Affairs$ynaffair[Affairs$affairs > 0] <- 1
Affairs$ynaffair[Affairs$affairs == 0] <- 0
Affairs$ynaffair <- factor(Affairs$ynaffair,
                             levels=c(0,1),
                             labels=c("No","Yes"))
table(Affairs$ynaffair)
fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children +
                  religiousness + education + occupation +rating,
                data=Affairs, family=binomial())
summary(fit.full)

# 做一个logistic回归,生成概率预测值

pre <- predict(fit.full,type='response')
# 将预测概率prob和实际结果y放在一个数据框中
data <- data.frame(prob=pre,obs=Affairs$ynaffair)
# 按预测概率从低到高排序

library(pROC)
modelroc <- roc(Affairs$ynaffair,pre)
plot(modelroc, 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)
img_c0434e42e62148b81722fe83535bd1d4.png
  • ROC曲线下的面积(area under ROC curve)值在1.0和0.5之间。
  • 在AUC>0.5的情况下,AUC越接近于1,说明诊断效果越好。
  • AUC在 0.5~0.7时有较低准确性,AUC在0.7~0.9时有一定准确性,AUC在0.9以上时有较高准确性。
  • AUC=0.5时,说明诊断方法完全不起作用,无诊断价值。
  • AUC<0.5不符合真实情况,在实际中极少出现。

0.9 ~ 1.0 ( 优秀)
0.8 ~ 0.9 (良好)
0.7 ~ 0.8(一般)
0.6 ~ 0.7(很差)
0.5 ~ 0.6(无法区分)

目录
相关文章
|
6天前
R语言使用限制平均生存时间RMST比较两条生存曲线分析肝硬化患者
R语言使用限制平均生存时间RMST比较两条生存曲线分析肝硬化患者
19 0
|
6天前
|
Perl
R语言回测交易:根据历史信号/交易创建股票收益曲线
R语言回测交易:根据历史信号/交易创建股票收益曲线
|
6天前
|
机器学习/深度学习 数据可视化
R语言中生存分析模型的时间依赖性ROC曲线可视化
R语言中生存分析模型的时间依赖性ROC曲线可视化
16 0
|
6天前
R语言多项式线性模型:最大似然估计二次曲线
R语言多项式线性模型:最大似然估计二次曲线
|
6天前
|
数据可视化
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
|
7天前
|
数据挖掘
R语言绘制生存曲线估计|生存分析|如何R作生存曲线图
R语言绘制生存曲线估计|生存分析|如何R作生存曲线图
10 0
|
7天前
|
机器学习/深度学习
R语言ROC曲线下的面积-评估逻辑回归中的歧视
R语言ROC曲线下的面积-评估逻辑回归中的歧视
21 7
|
7天前
|
数据可视化
R语言画ROC曲线总结
R语言画ROC曲线总结
11 0
|
8月前
|
数据采集 数据可视化
R语言数据可视化-KM生存曲线
R语言数据可视化-KM生存曲线
160 0
|
11月前
|
数据可视化 数据挖掘 Python
跟着Nature Communications学作图:R语言箱线图和拟合曲线展示泛基因组中的基因家族数量
跟着Nature Communications学作图:R语言箱线图和拟合曲线展示泛基因组中的基因家族数量

热门文章

最新文章