Я хочу получить доверительные интервалы для пропорций в моем стакане. Есть ли способ сделать это?
library(tidyverse)
library(Hmisc)
library(broom)
df <- tibble(id = c(1, 2, 3, 4, 5, 6),
count = c(4, 1, 22, 4545, 33, 23),
n = c(22, 65, 34, 6323, 35, 45))
Что выглядит так:
# A tibble: 6 x 3
id count n
<dbl> <dbl> <dbl>
1 1 4 22
2 2 1 65
3 3 22 34
4 4 4545 6323
5 5 33 35
6 6 23 45
Используя binconf
из Hmisc
и tidy
из broom
, решение может быть из любой упаковки:
Интервалы для первого ряда:
tidy(binconf(4, 22))
# A tibble: 1 x 4
.rownames PointEst Lower Upper
<chr> <dbl> <dbl> <dbl>
1 "" 0.182 0.0731 0.385
Я пытался использовать map
в purrr
, но получаю ошибки:
map(df, tidy(binconf(count, n)))
Ошибка в x [i]: объект типа 'замыкание' не может быть подмножеством
Я мог бы просто рассчитать их, используя dplyr
, но я получаю значения ниже нуля (например, строка 2) или выше единицы (например, строка 5), что мне не нужно. например,
df %>%
mutate(prop = count / n) %>%
mutate(se = (sqrt(prop * (1-prop)/n))) %>%
mutate(lower = prop - (se*1.96)) %>%
mutate(upper = prop + (se*1.96))
# A tibble: 6 x 7
id count n prop se lower upper
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 22 0.182 0.0822 0.0206 0.343
2 2 1 65 0.0154 0.0153 -0.0145 0.0453
3 3 22 34 0.647 0.0820 0.486 0.808
4 4 4545 6323 0.719 0.00565 0.708 0.730
5 5 33 35 0.943 0.0392 0.866 1.02
6 6 23 45 0.511 0.0745 0.365 0.657
Есть ли хороший способ сделать это? Я взглянул на функцию confint_tidy()
, но не смог заставить ее работать. Есть идеи?