2017-05-03 19 views
0

比率のエラーバーを含め、文字ベクトルの異なる値に対応する異なるグループの観測の比率のプロットを作成しようとしています。R:エラーバーを含む文字変数の割合のグループ化された棒グラフ

私が持っているデータの最小限の作業例を以下に発見された:

# Observations belong to group 'a' or 'b' 
group <- c("a","a","b","b","b","a", "a") 

# Each observation can take on values of "low", "med", or "high" 
values <- c("low","low","low","high","med","high", "high") 

# My data is a single data frame 
dat <- data.frame(as.character(group), as.character(values)) 

我々は上記で見ることができるように:「」4回の総観測で構成されている

  • グループ:2 「低い」(50%)と「高い」(50%)という2つの観測値の観測。
  • グループ「b」は、値「低い」(33%)、値1の「med」の観察(33%)、値1の高い「33%」の観察の合計3つの観察からなる。 Iは、X軸はその可能な値のそれぞれ(低、のmed、高い)「値」ベクター中に見出され、Y軸は比例でプロットを作成しようとしている

それぞれ。 「グループ」ベクトルの可能な値のそれぞれについて、グループメンバーが報告した可能性のある値のそれぞれについて、異なるバーが提示される。エラーバーはイメージに含まれています。私は、エラーバーの割合を計算する方法と、ggplotの図の比率を計算する方法を理解するのが難しいです。

enter image description here

+0

' ggplot(DAT、AES(値))+ geom_bar(AES(=グループを埋める)、位置= "ごまかし")' – yeedle

+0

この[SO質問](http://stackoverflow.com/q/30967643/4752675)は答えを提供します。 – G5W

+0

SOの質問は、特定の形式のデータを既に持っている場合に答えを提供します。 Analysisparalysisは包括的な回答を提供しました。私のコメントに対する回答を受け取った後、答えとして確認します。 – user3614648

答えて

2

はここでそれについて移動する方法です。これらのグループのうちのいくつかには1つの観測しかないので、エラーバーは実際に大きなデータです。


library(dplyr) 
library(ggplot2) 

dat <- data_frame(group, values) %>% 
    count(group, values) %>% 
    group_by(group) %>% 
    mutate(percent = n/sum(n), 
      error = sqrt((percent * (1-percent))/n)) %>% 
    mutate(values = factor(values, levels = c("low", "med", "high"))) 

dat 

#> Source: local data frame [5 x 5] 
#> Groups: group [2] 
#> 
#> group values  n percent  error 
#> <chr> <fctr> <int>  <dbl>  <dbl> 
#> 1  a high  2 0.5000000 0.3535534 
#> 2  a low  2 0.5000000 0.3535534 
#> 3  b high  1 0.3333333 0.4714045 
#> 4  b low  1 0.3333333 0.4714045 
#> 5  b med  1 0.3333333 0.4714045 


ggplot(dat, aes(values, percent, fill = group)) + 
    geom_col(position = "dodge") + 
    geom_errorbar(aes(ymin = percent - error, ymax = percent + error), 
        position = position_dodge(0.9)) 

+1

ここでは、「mutate(id = row_number())」とは何ですか?私はそれがコードの残りでどこで使われるのか分かりません。また、1.96 * sqrt((パーセント*(1-percent))/ n))と0.5/nの連続性補正のエラーの一般的な数式をお勧めします。 – user3614648

+0

ああ、素晴らしい!私はもともと、それぞれの価値観がどのようなものなのかを把握する必要があると思っていましたが、そうしなかったのです。 row_number()で行を編集しました。もちろん、mutate()内のエラーバーについて好きなものを定義することができます。 –

+0

group_by(group)は、後続のエラー計算のnを各グループ内のnにします。それは望ましいですか?(n =すべてのグループの観測総数の代わりに)私はそれが望ましい信頼区間の種類に依存すると思う。 – dca

関連する問題