# Prior: Beta(7, 3) → prior belief ~70% compliance
# Data: 14/20 compliant
# Posterior: Beta(7+14, 3+6) = Beta(21, 9)
theta <- seq(0, 1, 0.001)
prior <- dbeta(theta, 7, 3)
likelihood_prop <- dbeta(theta, 15, 7) # normalized for display
posterior <- dbeta(theta, 21, 9)
tibble(theta, prior, likelihood_prop, posterior) |>
tidyr::pivot_longer(-theta) |>
ggplot(aes(theta, value, color=name, linewidth=name)) +
geom_line() +
scale_color_manual(values=c("prior"="#94a3b8","likelihood_prop"="#f59e0b","posterior"="#2563eb")) +
scale_linewidth_manual(values=c("prior"=0.8,"likelihood_prop"=0.8,"posterior"=1.4)) +
labs(title="Beta-Binomial conjugate update",
x="Compliance rate θ", y="Density", color=NULL, linewidth=NULL) + theme_di()