Ich versuche, eine ECDF einiger Daten mit einem "Konfidenzintervall" zu zeichnen, das durch einen schattierten Bereich dargestellt wird, indem ggplot2 verwendet wird. Ich habe Probleme, geom_ribbon()
mit stat_ecdf()
zu kombinieren, um den Effekt zu erzielen, nach dem ich bin.Wie kann stat_ecdf mit geom_ribbon kombiniert werden?
Betrachten Sie die folgenden Beispieldaten:
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
Ich bin in der Lage eine ECDF von variable
mit
library("ggplot2")
ggplot(dat, aes(x = variable)) +
geom_step(stat = "ecdf")
aber ich bin nicht in der Lage zu produzieren lower
und upper
wie die ymin
und ymax
Ästhetik zu verwenden, von geom_ribbon()
, um das Konfidenzintervall auf dem Diagramm als eine andere Ebene zu überlagern. Ich habe versucht:
ggplot(dat, aes(x = variable)) +
geom_ribbon(aes(ymin = lower, ymax = upper), stat = "ecdf") +
geom_step(stat = "ecdf")
aber stellt sich die folgende Fehler
Error: geom_ribbon requires the following missing aesthetics: ymin, ymax
Gibt es eine Möglichkeit geom_ribbon()
in Koax mit stat_ecdf()
Arbeits einen schattigen Konfidenzintervall zu produzieren? Oder kann jemand ein alternatives Mittel vorschlagen, um ein schattiertes Polygon hinzuzufügen, das durch lower
und upper
als eine Ebene für das ECDF-Diagramm definiert ist?
Danke Joran. Könnten Sie Ihren letzten Satz erweitern? Ich bin mir nicht sicher, ob ich dem vollständig folge, aber soweit ich das aus deiner Antwort ersehen kann, kann ich das nicht über 'stat_ecdf 'tun, wenn' low' und 'upper' bereits existieren? Das +/- 2-Bit war nur Dummy-Daten; Die CI-Information, die ich habe, ist das Ergebnis der nachträglichen Simulation einer abgeleiteten Statistik, die aus einem angepassten Modell berechnet wurde. –
@GavinSimpson Ja, ich denke, es ist nicht direkt in ggplot möglich (obwohl das wäre eine nette Funktion hinzuzufügen, denke ich). Alles, was ich mit dem letzten Bit meinte, war, dass Sie vielleicht alle ECDF-Werte manuell berechnen und dann plotten müssen. – joran
Danke, ich verstehe, was Sie meinen, berechnen Sie den kumulativen Anteil direkt. Ich werde das tun. +1 –