varias leyendas grafico graficas grafica error dispersion con barras r ggplot2 plyr

grafico - leyendas en r



Barras de error estándar utilizando stat_summary (1)

El siguiente código produce gráficos de barras con barras de error estándar que utilizan Hmisc, ddply y ggplot:

means_se <- ddply(mtcars,.(cyl), function(df) smean.sdl(df$qsec,mult=sqrt(length(df$qsec))^-1)) colnames(means_se) <- c("cyl","mean","lower","upper") ggplot(means_se,aes(cyl,mean,ymax=upper,ymin=lower,group=1)) + geom_bar(stat="identity") + geom_errorbar()

Sin embargo, la implementación de las funciones de ayuda anteriores, como mean_sdl, parece mucho mejor. Por ejemplo, el siguiente código produce un gráfico con barras de error de IC del 95%:

ggplot(mtcars, aes(cyl, qsec)) + stat_summary(fun.y = mean, geom = "bar") + stat_summary(fun.data = mean_sdl, geom = "errorbar")

Mi pregunta es cómo usar la implementación stat_summary para las barras de error estándar. El problema es que para calcular la SE se necesita el número de observaciones por condición y esto se debe acceder en el multiplicador de mean_sdl.

¿Cómo accedo a esta información dentro de ggplot? ¿Hay una solución no hacky para esto?


Bueno, no puedo decirle cómo obtener un multiplicador por grupo en stat_summary .

Sin embargo, parece que su objetivo es trazar los medios y las barras de error que representan un error estándar de la media en ggplot sin resumir el conjunto de datos antes de trazar.

Hay una función mean_se en ggplot2 que podemos usar en lugar de mean_cl_normal de Hmisc . La función mean_se tiene un multiplicador de 1 como predeterminado, por lo que no necesitamos pasar ningún argumento adicional si queremos barras de error estándar.

ggplot(mtcars, aes(cyl, qsec)) + stat_summary(fun.y = mean, geom = "bar") + stat_summary(fun.data = mean_se, geom = "errorbar")

Si desea utilizar la función mean_cl_normal de Hmisc , debe cambiar el multiplicador a 1 para obtener un error estándar de la media. El argumento mult es un argumento para mean_cl_normal . Los argumentos que necesita pasar a la función de resumen que está utilizando deben proporcionarse como una lista para el argumento fun.args :

ggplot(mtcars, aes(cyl, qsec)) + stat_summary(fun.y = mean, geom = "bar") + stat_summary(fun.data = mean_cl_normal, geom = "errorbar", fun.args = list(mult = 1))

En las versiones pre-2.0 de ggplot2 , el argumento podría pasarse directamente:

ggplot(mtcars, aes(cyl, qsec)) + stat_summary(fun.y = mean, geom = "bar") + stat_summary(fun.data = mean_cl_normal, geom = "errorbar", mult = 1)