J'utilise fréquemment des graphiques de densité de noyau pour illustrer les distributions. Ceux-ci sont faciles et rapides à créer dans R comme ceci:
set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))
Ce qui me donne ce joli petit PDF:
Je voudrais ombrer la zone sous le PDF du 75e au 95e centile. Il est facile de calculer les points en utilisant la quantile
fonction:
q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)
Mais comment ombrer la zone entre q75
et q95
?
Réponses:
Avec la
polygon()
fonction, consultez sa page d'aide et je pense que nous avons eu des questions similaires ici aussi.Vous devez trouver l'index des valeurs de quantile pour obtenir les
(x,y)
paires réelles .Edit: Ici vous allez:
Sortie (ajoutée par JDL)
la source
demo(graphics)
depuis avant l'aube, donc on en croise de temps en temps. Même idée pour l'ombrage de régression NBER, etc.Une autre solution:
Résultat:
la source
Une solution étendue:
Si vous vouliez ombrer les deux queues (copier-coller du code de Dirk) et utiliser des valeurs x connues:
Résultat:
la source
Cette question a besoin d'une
lattice
réponse. En voici une très basique, en adaptant simplement la méthode employée par Dirk et d'autres:la source
Voici une autre
ggplot2
variante basée sur une fonction qui se rapproche de la densité du noyau aux valeurs de données d'origine:L'utilisation des données d'origine (plutôt que de produire une nouvelle base de données avec les valeurs x et y de l'estimation de densité) a l'avantage de travailler également dans des graphiques à facettes où les valeurs de quantile dépendent de la variable par laquelle les données sont regroupées:
Code utilisé
Créé le 13/07/2018 par le package reprex (v0.2.0).
la source