Le code suivant produit des graphiques à barres avec des barres d'erreur standard à l'aide de Hmisc, ddply et 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()
Cependant, l'implémentation de ce qui précède en utilisant des fonctions d'assistance telles que mean_sdl semble beaucoup mieux. Par exemple, le code suivant produit un tracé avec des barres d'erreur IC à 95%:
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_sdl, geom = "errorbar")
Ma question est de savoir comment utiliser l'implémentation stat_summary pour les barres d'erreur standard. Le problème est que pour calculer SE, vous avez besoin du nombre d'observations par condition et vous devez y accéder dans le multiplicateur de mean_sdl.
Comment accéder à ces informations dans ggplot? Existe-t-il une solution soignée et non hacky pour cela?
Eh bien, je ne peux pas vous dire comment obtenir un multiplicateur par groupe dans stat_summary
.
Cependant, il semble que votre objectif soit de tracer les moyennes et les barres d'erreur qui représentent une erreur standard à partir de la moyenne dans ggplot
sans résumer l'ensemble de données avant de tracer.
Il y a un mean_se
fonction dans ggplot2 que nous pouvons utiliser à la place de mean_cl_normal
de Hmisc. Le mean_se
la fonction a un multiplicateur de 1 par défaut, nous n'avons donc pas besoin de passer d'arguments supplémentaires si nous voulons des barres d'erreur standard.
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_se, geom = "errorbar")
Si vous souhaitez utiliser le mean_cl_normal
fonction de Hmisc
, vous devez changer le multiplicateur à 1 pour obtenir une erreur standard à partir de la moyenne. L'argument mult
est un argument pour mean_cl_normal
. Les arguments que vous devez transmettre à la fonction récapitulative que vous utilisez doivent être fournis sous forme de liste à fun.args
argument:
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))
Dans les versions pré-2.0 de ggplot2, l'argument pouvait être passé directement:
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", mult = 1)