R: построить несколько различных цветных ROC кривых с помощью ROCR


Следующий код был взят из ответа @adibender на "несколько кривых ROC в одном графике ROCR". Код частично от кого ?сюжет.спектакль.

library(ROCR)
data(ROCR.simple)
preds <- cbind(p1 = ROCR.simple$predictions, 
            p2 = abs(ROCR.simple$predictions + 
            rnorm(length(ROCR.simple$predictions), 0, 0.1)))

pred.mat <- prediction(preds, labels = matrix(ROCR.simple$labels, 
            nrow = length(ROCR.simple$labels), ncol = 2) )

perf.mat <- performance(pred.mat, "tpr", "fpr")
plot(perf.mat)

Я хочу проиллюстрировать несколько кривых ROC на одном графике, как в приведенном выше коде, используя R-пакет ROCR. Однако я бы хотел, чтобы кривые ROC были в разных цветах. Как применить различные цвета к различным кривым? Спасибо заранее.

2 2

2 ответа:

Попробуйте это (вы можете сделать это с помощью ROCR):

library(ROCR)
data(ROCR.simple)
preds <- cbind(p1 = ROCR.simple$predictions, 
               p2 = abs(ROCR.simple$predictions + 
                          rnorm(length(ROCR.simple$predictions), 0, 0.1)))
n <- 2 # you have n models
colors <- c('red', 'blue') # 2 colors
for (i in 1:n) {
   plot(performance(prediction(preds[,i],ROCR.simple$labels),"tpr","fpr"), 
                                           add=(i!=1),col=colors[i],lwd=2)
}

Введите описание изображения здесь

Функция plot для объектов ROCR, по-видимому, не предлагает эту опцию. Итак, вам придется разобрать объект и сделать это вручную.

Например, используя ggplot2,

library(ggplot2)
df <- data.frame(Curve=as.factor(rep(c(1,2), each=length(perf.mat@x.values[[1]]))), 
                 FalsePositive=c(perf.mat@x.values[[1]],perf.mat@x.values[[2]]),
                 TruePositive=c(perf.mat@y.values[[1]],perf.mat@y.values[[2]]))
plt <- ggplot(df, aes(x=FalsePositive, y=TruePositive, color=Curve)) + geom_line()
print(plt)