2016-12-09 5 views
-2

グループ化された割合テーブルを作成しました。特定の信頼区間に誤差範囲を含める最も簡単な方法は何ですか?誤差のある因子のprop.table

data.frame(prop.table(table(df$variable, df$group),2))

SummarySE()が動作するはずですが、私の変数は三つのレベルではなく、数値を持つ要因です。

+0

私は、信頼区間はバイナリ変数の頻度テーブルの文脈で意味をなさないと思う。 stats.stackexchange.comで質問することを検討するかもしれません。ここで尋ねるならば、おそらく、(サマリーSEが出てくるような)パッケージへの参照を含む再現可能な例を作るべきでしょう。いくつかのガイダンス:http://stackoverflow.com/a/28481250/ – Frank

+0

私の間違いは、3つのレベルを述べているはずです。 – Kasey

答えて

0

確かに信頼区間で何を意味するのかを明記する必要がありますが、比率の二項信頼区間が必要な場合、これは必ずしもきれいではなく動作します。出発点として、それを取り、あなたのニーズに適応:

ci.table <- function(tbl, margin = NULL) { 
    binom_ci <- function(x, n) { 
     paste(round(binom.test(x, n)$conf.int, 3), collapse = " - ") 
    } 
    sweep_ci <- function(xx, nn) { mapply(FUN = binom_ci, xx, nn) } 

    if (length(margin)) 
     result <- sweep(tbl, margin, margin.table(tt, margin), 
         "sweep_ci", check.margin = FALSE)  
    else 
     result <- sweep_ci(tbl, sum(tbl)) 

    dim(result) <- dim(tbl) 
    as.table(result) 
} 

binom_ci機能は、フォーマットを処理します。私が特に好きではない - 信頼区間のための "X Y" が、私はほとんどの人が、この例よりも良い "(x、y)を" 理解していることを発見した...

MWE:

ddff <- data.frame(
    A = sample(c("A", "B", "C"), 20, replace = TRUE), 
    B = sample(c("C", "D"), 20, replace = TRUE) 
) 
tt <- table(ddff$A, ddff$B) 
ci.table(tt) 
ci.table(tt, 1) 
ci.table(tt, 2)