次のコードは、Hmisc、ddply、および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()
ただし、mean_sdlなどのヘルパー関数を使用して上記を実装する方がはるかに優れているようです。たとえば、次のコードは95%CIエラーバーを含むプロットを生成します。
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_sdl, geom = "errorbar")
私の質問は、標準エラーバーにstat_summary実装を使用する方法です。問題は、SEを計算するには条件ごとの観測数が必要であり、これにmean_sdlの乗数でアクセスする必要があることです。
Ggplot内でこの情報にアクセスするにはどうすればよいですか?これのためのきちんとした非ハッキングソリューションはありますか?
さて、グループごとにstat_summary
に乗数を取得する方法を説明することはできません。
ただし、目標は、プロット前にデータセットを要約せずに、ggplot
の平均から1つの標準誤差を表す平均と誤差範囲をプロットすることです。
ggplot2にはmean_se
関数があり、これはHmiscのmean_cl_normal
の代わりに使用できます。 mean_se
関数のデフォルトの乗数は1であるため、標準のエラーバーが必要な場合は、追加の引数を渡す必要はありません。
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_se, geom = "errorbar")
Hmisc
のmean_cl_normal
関数を使用する場合は、乗数を1に変更して、平均から1つの標準エラーを取得する必要があります。 mult
引数は、mean_cl_normal
の引数です。使用している集計関数に渡す必要がある引数は、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))
ggplot2の2.0以前のバージョンでは、引数を直接渡すことができました。
ggplot(mtcars, aes(cyl, qsec)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", mult = 1)