2016-12-09 3 views
-2

Я создал таблицу сгруппированных пропорций. Каков самый простой способ включить погрешность в заданный доверительный интервал?prop.table коэффициента с погрешностью

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

SummarySE() должен работать, но моя переменная является фактором с тремя уровнями, а не числовое значение.

+0

Я думаю, что доверительные интервалы не имеют смысла в контексте частотных таблиц двоичных переменных. Вы можете рассмотреть вопрос о stats.stackexchange.com. Если вы спросите здесь, вы должны, вероятно, сделать воспроизводимый пример, включающий ссылки на пакеты (например, везде, откуда приходит Сводная информация). Некоторые рекомендации: http://stackoverflow.com/a/28481250/ – Frank

+0

Моя ошибка, должна была сказать три уровня. – 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 функция обрабатывает форматирование. Я не особенно люблю «х - у» для доверительных интервалов, но я обнаружил, что большинство людей понимают это лучше, чем, например, «(х, у)» ...

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) 
Смежные вопросы