0

どこかで私は非常に単純な間違いを犯しています。誤字脱字のご指摘ありがとうございます…

信頼区間とグループ平均を重ね合わせたバイオリン プロットを作成したいと思います。このすばらしい新しいパッケージの例とよく似ています。

CI のない一般的なバイオリン プロットは正常に動作します。

p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +
  geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
  geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean, 
                fatten=2, width=.5)

私の問題は、信頼区間を組み込むことです。

まず、必要な要約統計を作成します。

errbar_lims <- group_by(diamonds, cut) %>% 
  summarize(mean=mean(price), se=sd(price)/sqrt(n()),             
  upper=mean+(2*se), lower=mean-(2*se))

次に、次のようにプロットに追加することを考えましたgeom_errorbar:

p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +
  geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
  geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean, 
                fatten=2, width=.5) +
  geom_errorbar(aes(x= ymax=errbar_lims$upper, ymin=errbar_lims$lower), 
                stat='identity', width=.25)

しかし、ggplot のエラーは、プロットしようとしている 5 つのグループではなく、単一のグループの美学にマッピングしていることを知らせ続けます。

おそらく私の間違いは、最初にマッピングを設定した方法ですか?


アップデート

最初に投稿した後にいくつかのコメントを確認した後、完全なスクリプトは次のようになります。

errbar_lims <- group_by(diamonds, cut) %>% 
  summarize(mean=mean(price), se=sd(price)/sqrt(n()), 
        upper=mean+(2*se), lower=mean-(2*se))

p <- ggplot(data=diamonds, aes(x=cut, y=price))
p + geom_violin(aes(x=cut, y=price)) +    
  geom_jitter(height = 0, width = 0.1, alpha = 0.05) +
  geom_crossbar(stat="summary", fun.y=mean, fun.ymax=mean, fun.ymin=mean, 
            fatten=2, width=.5) +
  geom_errorbar(aes(x = cut, ymin = lower, ymax = upper), errbar_lims, inherit = FALSE)

それでもエラーが続く:

Error in FUN(X[[i]], ...) : object 'price' not found
4

1 に答える 1

1

あなたも私を指摘してくれたgithubの素晴らしいコードに適用されました。

library(ggplot2)
View(ggplot2::diamonds)

ggstatsplot::ggbetweenstats(data = ggplot2::diamonds, x=cut, y=price, messages=FALSE)

于 2018-09-03T13:43:41.180 に答える