bolstad introduction to bayesian statistics 16.1
# 1. 파라미터 및 데이터 설정
alpha0 <- 7; beta0 <- 13
alpha1 <- 1; beta1 <- 1
n <- 200; y <- 10
# 2. 사후 확률 가중치 (계산된 수치 반영)
w0_post <- 0.1633
w1_post <- 0.8367
# 3. 분포 계산
pi_seq <- seq(0, 1, length.out = 1000)
post0 <- dbeta(pi_seq, 17, 203)
post1 <- dbeta(pi_seq, 11, 191)
g_post_mix <- w0_post * post0 + w1_post * post1
# 가능도 계산 및 정규화
likelihood <- dbinom(y, size = n, prob = pi_seq)
scaled_likelihood <- likelihood * (max(g_post_mix) / max(likelihood))
# 4. 여백 조정 (오른쪽에 범례를 위한 충분한 공간 확보)
# mar = c(bottom, left, top, right)
par(mar = c(5, 4, 4, 12) + 0.1)
# 5. 시각화
plot(pi_seq, g_post_mix, type = "l", lwd = 3, col = "green",
main = "Posterior Mixture vs. Likelihood",
xlab = expression(pi), ylab = "Density / Scaled Likelihood",
xlim = c(0, 0.25), ylim = c(0, max(g_post_mix, scaled_likelihood) * 2.1))
lines(pi_seq, scaled_likelihood, col = "black", lwd = 2)
lines(pi_seq, post0, lty = 2, col = "blue")
lines(pi_seq, post1, lty = 2, col = "red")
abline(v = 0.05, col = "orange", lty = 3)
# 6. 범례 위치 수정 (그래프 영역 우측 바깥쪽)
# 6. 범례 위치 및 스타일 최적화
legend(x = 0.13, y = 60, # y축 높이를 그래프 상단에 맞춰 고정
legend = c("혼합사후분포",
"가능도 (Scaled)\n n=200, y=10",
"사후분포1 (Beta 17, 203)\n(사전 Beta 7, 13에서 출발)",
"사후분포2 (Beta 11, 191)\n(사전 Beta 1, 1)에서 출발"),
col = c("green", "black", "blue", "red"),
lty = c(1, 1, 2, 2),
lwd = c(3, 2, 2, 2),
xpd = TRUE,
bty = "n", # 테두리 없음
cex = 1.0, # 폰트 크기를 1.0으로 조정하여 가독성 확보
y.intersp = 0.1, # 줄바꿈 문구를 위해 간격을 1.8로 확대
seg.len = 2.5) # 선 기호의 길이를 약간 늘려 시인성 개선
댓글 0