Con frecuencia utilizo gráficos de densidad de kernel para ilustrar distribuciones. Estos son fáciles y rápidos de crear en R así:
set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))
Lo que me da este pequeño y agradable PDF:
Me gustaría sombrear el área debajo del PDF desde el percentil 75 al 95. Es fácil calcular los puntos usando la quantile
función:
q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)
¿Pero cómo sombreo el área entre q75
y q95
?
Respuestas:
Con la
polygon()
función, vea su página de ayuda y creo que aquí también tuvimos preguntas similares.Necesita encontrar el índice de los valores de cuantiles para obtener los
(x,y)
pares reales .Editar: Aquí tienes:
Salida (agregada por JDL)
fuente
demo(graphics)
desde antes del amanecer a tiempo, por lo que uno se encuentra de vez en cuando. La misma idea de NBER regresión sombreado etc.Otra solución:
Resultado:
fuente
Una solución ampliada:
Si desea sombrear ambas colas (copiar y pegar el código de Dirk) y usar valores x conocidos:
Resultado:
fuente
Esta pregunta necesita una
lattice
respuesta. Aquí hay uno muy básico, simplemente adaptando el método empleado por Dirk y otros:fuente
Aquí hay otra
ggplot2
variante basada en una función que se aproxima a la densidad del kernel en los valores de datos originales:El uso de los datos originales (en lugar de producir un nuevo marco de datos con los valores xey de la estimación de densidad) tiene la ventaja de trabajar también en gráficos facetados donde los valores de cuantiles dependen de la variable por la que se agrupan los datos:
Código utilizado
Creado el 2018-07-13 por el paquete reprex (v0.2.0).
fuente