31

次のコードは、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 内でこの情報にアクセスするにはどうすればよいですか? これにはきちんとした非ハッキーな解決策がありますか?

4

1 に答える 1

66

ええと、グループごとに乗数を に取得する方法はわかりませんstat_summary

ggplotただし、プロットする前にデータセットを要約せずに 、平均から1つの標準誤差を表す平均とエラーバーをプロットすることが目標のようです。

ggplot2には、Hmiscの代わりに使用できるmean_se関数があります。この関数の乗数はデフォルトで 1 であるため、標準エラー バーが必要な場合は、追加の引数を渡す必要はありません。mean_cl_normalmean_se

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

mean_cl_normalの関数を使用する場合はHmisc、乗数を 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) 
于 2013-10-10T14:47:13.437 に答える