Ich verwende häufig Kernel-Dichtediagramme, um Verteilungen zu veranschaulichen. Diese sind einfach und schnell in R zu erstellen:
set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))
Welches gibt mir dieses schöne kleine PDF:
Ich möchte den Bereich unter dem PDF vom 75. bis zum 95. Perzentil schattieren. Es ist einfach, die Punkte mit der quantile
Funktion zu berechnen :
q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)
Aber wie schattiere ich den Bereich zwischen q75
und q95
?
Antworten:
Informationen zur
polygon()
Funktion finden Sie auf der Hilfeseite. Ich glaube, wir hatten auch hier ähnliche Fragen.Sie müssen den Index der Quantilwerte finden, um die tatsächlichen
(x,y)
Paare zu erhalten.Edit: Los geht's:
Ausgabe (von JDL hinzugefügt)
quelle
demo(graphics)
vor Tagesanbruch pünktlich waren, so dass man hin und wieder auf etwas stößt. Gleiche Idee für NBER-Regressionsschattierung usw.Eine andere Lösung:
Ergebnis:
quelle
Eine erweiterte Lösung:
Wenn Sie beide Schwänze schattieren möchten (Dirk-Code kopieren und einfügen) und bekannte x-Werte verwenden möchten:
Ergebnis:
quelle
Diese Frage braucht eine
lattice
Antwort. Hier ist eine sehr grundlegende, die einfach die von Dirk und anderen angewandte Methode anpasst:quelle
Hier ist eine weitere
ggplot2
Variante, die auf einer Funktion basiert, die die Kerneldichte bei den ursprünglichen Datenwerten approximiert:Die Verwendung der Originaldaten (anstatt einen neuen Datenrahmen mit den x- und y-Werten der Dichteschätzung zu erstellen) hat den Vorteil, dass auch in facettierten Diagrammen gearbeitet wird, bei denen die Quantilwerte von der Variablen abhängen, nach der die Daten gruppiert werden:
Code verwendet
Erstellt am 2018-07-13 vom reprex-Paket (v0.2.0).
quelle