我创建了一个分组比例表。在指定的置信区间内包含误差范围的最简单方法是什么?
data.frame(prop.table(table(df$variable, df$group),2))
SummarySE()应该有效,但我的变量是一个有三个级别的因子,而不是一个数值。
答案 0 :(得分: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)