Sto provando a disegnare un ECDF di alcuni dati con un "intervallo di confidenza" rappresentato tramite un'area ombreggiata utilizzando ggplot2. Ho difficoltà a combinare geom_ribbon()
con stat_ecdf()
per ottenere l'effetto che sto cercando.Come combinare stat_ecdf con geom_ribbon?
Considerate i seguenti dati esempio:
set.seed(1)
dat <- data.frame(variable = rlnorm(100) + 2)
dat <- transform(dat, lower = variable - 2, upper = variable + 2)
> head(dat)
variable lower upper
1 2.534484 0.5344838 4.534484
2 3.201587 1.2015872 5.201587
3 2.433602 0.4336018 4.433602
4 6.929713 4.9297132 8.929713
5 3.390284 1.3902836 5.390284
6 2.440225 0.4402254 4.440225
sono in grado di produrre un ECDF di variable
usando
library("ggplot2")
ggplot(dat, aes(x = variable)) +
geom_step(stat = "ecdf")
Tuttavia io sono in grado di utilizzare lower
e upper
come ymin
e ymax
estetica geom_ribbon()
per sovrapporre l'intervallo di confidenza alla trama come un altro livello. Ho provato:
ggplot(dat, aes(x = variable)) +
geom_ribbon(aes(ymin = lower, ymax = upper), stat = "ecdf") +
geom_step(stat = "ecdf")
ma questo solleva il seguente errore
Error: geom_ribbon requires the following missing aesthetics: ymin, ymax
Esiste un modo di convincere geom_ribbon()
a lavorare con stat_ecdf()
per produrre un intervallo di confidenza ombreggiata? Oppure, qualcuno può suggerire un mezzo alternativo per aggiungere un poligono ombreggiato definito da lower
e upper
come livello del grafico ECDF?
Grazie Joran. Potresti espandere la tua ultima frase? Non sono sicuro di seguirlo completamente, ma per quanto posso dire dalla tua risposta, non posso farlo tramite 'stat_ecdf' se' lower' e 'upper' esistono già? Il +/- 2 bit era solo un dato fittizio; le informazioni CI che ho sono il risultato della simulazione posteriore di una statistica derivata calcolata da un modello montato. –
@GavinSimpson Sì, penso che non sia possibile direttamente in ggplot (anche se sarebbe una bella funzionalità da aggiungere, credo). Tutto quello che intendevo con l'ultimo bit era che dovresti calcolare manualmente tutti i valori ECDF e poi tracciarli. – joran
Grazie, capisco cosa intendi, calcola direttamente la proporzione cumulativa. Lo darò a fare. +1 –