tibble(x = seq(0, 1, by = 0.001),
y = dbeta(x, 108+92, 12+28)) |>
ggplot(aes(x, y))+
geom_line()
Рассмотрим простенькую задачу, которую мы видели раньше:
tibble(x = seq(0, 1, by = 0.001),
y = dbeta(x, 108+92, 12+28)) |>
ggplot(aes(x, y))+
geom_line()
Фреквентистский доверительный интервал (по-английски confidence interval) основан на правиле трех сигм нормального распределения:

z-score:
Доверительный интервал:
\[\bar{x} \pm z \times \frac{\sigma}{\sqrt{n}}\text{, где } z \text{ — это z-оценка } 1 - \frac{\alpha}{2} \text{ часть данных}\]
Распространение этой логики на биномиальные данные называется интервал Вальда:
\[\bar{x} = \theta; \sigma = \sqrt{\frac{\theta\times(1-\theta)}{n}}\]
Тогда интервал Вальда:
\[\theta \pm z\times\sqrt{\frac{\theta\times(1-\theta)} {n}}\]
Есть только одна проблема: работает он плохо. Его аналоги перечислены в других работ:
binom.test())binomlow_ci <- binom.test(x = 108+92, n = 108+92+12+28)$conf.int[1]
up_ci <- binom.test(x = 108+92, n = 108+92+12+28)$conf.int[2]
tibble(x = seq(0, 1, by = 0.001),
y = dbeta(x, 108+92, 12+28)) |>
ggplot(aes(x, y))+
geom_line()+
annotate(geom = "errorbar", y = 0, xmin = low_ci, xmax = up_ci, color = "red")+
labs(title = "Апостериорное распределение",
subtitle = "красным фреквентисткий 95% доверительный интервал",
x = "", y = "")
В базовом пакете функция binom.test() не позволяет выбирать тип доверительного интервала. ci.method = "Clopper-Pearson" возможна, если включить библиотеку mosaic.
Байесовский доверительный \((100-k)\)-% интервал (по-английски credible interval) — это интервал \([\frac{k}{2}, 1-\frac{k}{2}]\) от апостериорного распределения.
low_ci <- binom.test(x = 108+92, n = 108+92+12+28)$conf.int[1]
up_ci <- binom.test(x = 108+92, n = 108+92+12+28)$conf.int[2]
cred_int_l <- qbeta(0.025, 108+92, 12+28)
cred_int_h <- qbeta(0.975, 108+92, 12+28)
tibble(x = seq(0, 1, by = 0.001),
y = dbeta(x, 108+92, 12+28)) |>
ggplot(aes(x, y))+
geom_line()+
annotate(geom = "errorbar", y = 0, xmin = low_ci, xmax = up_ci, color = "red")+
annotate(geom = "errorbar", y = -1, xmin = cred_int_l, xmax = cred_int_h, color = "lightblue")+
labs(title = "Апостериорное распределение",
subtitle = "красным фреквентисткий 95% доверительный интервал\nсиним байесовский 95% доверительный интервал",
x = "", y = "")
