Ich vergleiche die Leistung von zwei Modellen mit ROC-Kurven, und ich würde gerne die Regionen zwischen den beiden Kurven ausfüllen, um zu zeigen, wo das eine Modell das andere übertrifft. Ich habe versucht, geom_ribbon
zu verwenden, aber das Problem ist, dass beide Achsen für jede Kurve unterschiedlich sind.ggplot2: Abstand zwischen Linien mit verschiedenen Achsen
Hier ist ein reproduzierbares Beispiel:
##Simulate Data
set.seed(123456)
n <- 10000
q <- 0.8
#Simulate predictions
Real <- c(sample(c(0,1), n/2, replace = TRUE, prob = c(1-q,q)),
sample(c(0,1), n/2, replace = TRUE, prob = c(0.7,0.3)))
#Simulate Response
p <- c(rep(seq(0.4,0.9, length=100), 50),
rep(seq(0.2,0.6, length=100), 50))
p2 <- c(rep(seq(0.5,0.9, length=100), 50),
rep(seq(0.2,0.7, length=100), 50))
p <- data.frame(cbind(Real, p, p2))
#install and load package
#install.packages("pROC")
library(pROC)
#apply roc function
analysis <- roc(response=p$Real, predictor=p$p)
analysis2 <- roc(response=p$Real, predictor=p$p2)
#Plot ROC Curve
#install.packages("ggplot2")
library(ggplot2)
ggplot() +
geom_line(aes(x=1-analysis$specificities,y=analysis$sensitivities)) +
geom_line(aes(x=1-analysis2$specificities,y=analysis2$sensitivities), color = "red")
Wie kann ich in den Räumen zwischen diesen beiden Linien zu füllen?
Danke, das hat super funktioniert! Wenn Sie möchten, dass die Farbe abhängig davon, welches Modell besser ist, schattiert werden soll, setzen Sie 'fill = Model 1> Model 2' in' aes() '. –