2

我使用基于 pROC 的 ggroc 创建了一个具有多个 ROC 曲线的 ROC 图。我怎样才能插入一条没有歧视的行?

我想在我的情节中有一条从 0,0 到 1,1 的无歧视线,这样我就可以更好地直观地评估我的 ROC 曲线。

我尝试在我的 ggplot 对象上使用 plot() 函数,并且尝试使用 + 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() 时会返回一个图,但仍然没有线。

4

1 回答 1

2

ROC_curves已经返回一个 ggplot 图。qplot不可能也没有必要向其中添加新图,只需geom_abline直接添加:

ROC_curves + xlab("FPR") + ylab("TPR") + 
    geom_abline(intercept = 0, slope = 1,
                color = "darkgrey", linetype = "dashed")

abline 超出了 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
于 2019-01-08T19:25:59.473 回答