我刚刚开始学习roc曲线。我正在尝试制作一个
ROC plot
,但曲线似乎比平常弯曲的方向错误 - 请参阅附件
你能帮助扭转曲线,使其向“通常”方向弯曲吗?
我的数据是
p <- structure(list(t = c(29354L, 7445L, 22309L, 29699L, 29711L, 14765L, 22257L,
29715L, 29772L, 13320L, 20905L, 12950L, 3400L, 14800L,7400L, 21890L, 19400L, 14800L, 14700L, 22200L, 1688L, 4500L, 8438L, 13500L, 14800L,
12580L, 12950L, 13320L, 11840L, 13320L, 14800L, 13690L, 11250L, 12210L, 13320L, 13320L, 14800L, 12580L,20720L, 11840L, 14800L, 7030L, 14800L,
14800L, 8325L, 11100L,10730L, 13690L, 12210L, 14800L), a = c(0L, 1L, 1L, 0L, 0L,
1L,0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,1L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L,0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L)), .Names = c("t","a"), class = "data.frame", row.names = c(NA, 50L))
我使用了以下
library(plotROC)
basicplot <- ggplot(p, aes(d = p$a, m = p$t)) + geom_roc() + theme_bw()
basicplot + style_roc()
奖励问题
我使用 Youden 来确定最佳截止点,即 13410。有什么想法如何引起对这一点的特别注意 - 例如通过突出显示红点?
您可以做两件事,交换您的
1
和 0
名称,或使用 geom_roc(increasing = FALSE)
。请参阅PlotROC
小插图。这是假设您的模型实际上是这样执行的,并且并不真正具有低灵敏度和高误报率,而您只是将其颠倒过来。
basicplot <- ggplot(p, aes(d = a, m = t)) + geom_roc(increasing = FALSE) + theme_bw()
basicplot + style_roc()
我发现提供的示例非常晦涩,所以这里有一个更通用的示例,对我来说更有意义:
library(plotROC)
roc1 <- roc(mtcars$am, mtcars$mpg)
roc2 <- roc(mtcars$am, mtcars$wt)
roc.test(roc1, roc2)
ggplot(mtcars) +
style_roc(guide = F) +
geom_abline(slope=1, intercept = 0, color="black") +
geom_roc(aes(d = am, m=mpg, color="MPG"), pointsize = 0, increasing=T, labels = F) +
geom_roc(aes(d = am, m=wt, color="WT"), pointsize = 0, increasing=F, labels = F) +
annotate(geom="text", x=.5, y=.3, hjust=0, label = paste0("MPG AUC: ", round(as.numeric(roc1$auc),3))) +
annotate(geom="text", x=.5, y=.2, hjust=0, label = paste0("WT AUC: ", round(as.numeric(roc2$auc),3))) +
labs(title = "ROC Curves") +
scale_color_manual(name = NULL, values =c("grey60","grey30")) +
theme(aspect.ratio = 1)