Можно ли вставить строку без дискриминации на графике ROC, используя ggroc?
Я создал график ROC с несколькими кривыми ROC, используя ggroc на основе pROC. Как я могу вставить строку без дискриминации?
Я бы хотел, чтобы на моем графике не было линии от 0,0 до 1,1, чтобы я мог лучше визуально оценить свои ROC-кривые.
Я попытался использовать функцию plot () для моего объекта ggplot, и я попытался использовать + geom_abline() и функцию lines () без всякой удачи.
library(pROC)
#Creating curves and labeling)
ROC_curves <- ggroc(list(log=ROC_log, tree=ROC_tree, xgbt=ROC_xgbt), legacy.axes=TRUE)
ROC_curves2 <- ROC_curves + xlab("FPR") + ylab("TPR")
#but this part doesn't Work:
+ qplot(1,1) + geom_abline(intercept=0, slope=1)
Я также попытался сделать: plot(ROC_curves2, identity=TRUE)
Я бы хотел, чтобы в моем сюжете не было различий между 0,0 и 1,1.
При добавлении qplot(1,1) + geom_abline() я получаю "Ошибка: не знаю, как добавить o к графику". При использовании plot () график возвращается, но без линии.
2 ответа
ROC_curves
уже возвращает график ggplot. Добавление нового сюжета qplot
не возможно и не необходимо, просто добавьте geom_abline
непосредственно:
ROC_curves + xlab("FPR") + ylab("TPR") +
geom_abline(intercept = 0, slope = 1,
color = "darkgrey", linetype = "dashed")
Аблайн выходит за пределы кривой ROC. Чтобы избежать этого вы можете использовать geom_segment
вместо:
ROC_curves + xlab("FPR") + ylab("TPR") +
geom_segment(aes(x = 0, xend = 1, y = 0, yend = 1),
color="darkgrey", linetype="dashed")
Также обратите внимание, что если вы не используете legacy.axes=TRUE
вам нужно иметь intercept = 1
так что линия пересекает линию 0 в правом верхнем углу.
... + geom_segment(aes(x = 0, xend = 1, y = 0, yend = 1)) # legacy.axes = TRUE
... + geom_segment(aes(x = 1, xend = 0, y = 0, yend = 1)) # legacy.axes = FALSE
Решение @Calimo не сработало для меня, но я думаю, что это связано с размером моего набора данных, поэтому график не будет отображаться. Нашел проблему gitlab (https://github.com/tidyverse/ggplot2/issues/4190) о том, какannotate
намного быстрее, чемgeom_segment
. Я использую следующее:
+ annotate("segment",x = 1, xend = 0, y = 0, yend = 1, color="red", linetype="dashed")