20 votos

R: valores de geom_densidad en el eje Y

¿Por qué geom_density me muestra valores superiores a 1 en el gráfico de densidad? ¿Cómo se puede cambiar a una fracción?

enter image description here

Y mi código utilizado para generar la trama

ggplot(data = input2, aes(x = r.close)) +
  geom_density(aes(y = ..density.., fill = `Próba`), alpha = 0.3, stat = "density", position = "identity") +

  xlab("y") + ylab("density") +
  theme_bw() +
  theme(plot.title=element_text(size = rel(1.6), face = "bold"),
        legend.position = "bottom",
        legend.background = element_rect(colour = "gray"),
        legend.key = element_rect(fill = "gray90"),
        axis.title = element_text(face = "bold", size = 13))

3 votos

geom_density(aes(y=..scaled..))

23voto

Dr.Kameleon Puntos 188

O bien, puede utilizar simplemente el cálculo ..scaled.. valor stat_density proporciona:

library(ggplot2)

set.seed(1)
vals1 <- rbeta(1000, 0.5, 0.1)
vals2 <- rbeta(1000, 0.25, 0.3)

gg <- ggplot(data.frame(x=c(vals1, vals2),
                        grp=c(rep("a", 1000), rep("b", 1000))))
gg <- gg + geom_density(aes(x=x, y=..scaled.., fill=grp), alpha=1/2)
gg <- gg + theme_bw()
gg

enter image description here

0 votos

¿El área total bajo la curva no sigue siendo superior a 1?

10voto

LDelgado Puntos 66

Parece que geom_density() muestra los valores adecuados. El área bajo toda esa curva debe ser 1.

Para obtener una estimación de la probabilidad de ciertos valores, tendría que integrar sobre un intervalo en su eje "y", y que nunca debe ser mayor que 1.

1 votos

Entonces, ¿qué es lo que se muestra actualmente como eje Y y cómo mostrar la probabilidad?

3 votos

Su eje y está adecuadamente etiquetado - está mostrando una curva de densidad de probabilidad aproximada para estos datos. Una curva de densidad puede tomar valores puntuales mayores que uno, pero debe ser no negativa en todas partes y la integral de toda la curva debe ser igual a uno. Consulte el artículo de Wikipedia sobre funciones de densidad de probabilidad . Si necesita que el eje y sea menor que uno, pruebe con un histograma con geom_hist() .

1 votos

@DavidKent Usando un histograma (el geom correcto se llama geom_histogram() BTW) no ayudará. Un histograma sigue siendo una estimación de la densidad, y puede tener y -valores superiores a 1.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X