조건부 지름길
훌륭해요. 이제 시뮬레이션 없이도 베이지안 계산을 해 보셨네요! 방금 만든 플롯은 3장에서 계산했던 사후분포와 비슷해야 합니다. 그런데 코드를 꽤 많이 작성했죠. 줄일 수 있는 부분이 있을까요?
있습니다! 데이터를 바로 조건화하면 됩니다. 굳이 먼저 결합분포를 만들 필요가 없어요.
이 연습은 강의의 일부입니다
R로 배우는 Bayesian 데이터 분석 기초
연습 안내
seq구문을6으로 바로 바꿔서n_visitors를 직접6으로 설정하세요.- 이제 데이터에 조건을 거는 줄과, 그 다음 줄의
pars$probability를 정규화하는 줄을 삭제하세요. - 마지막 코드를 한 번 더 살펴보고, 수정된 코드의 결과가 이전과 동일함을 스스로 확인해 보세요. :)
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Simplify the code below by directly conditioning on the data
n_ads_shown <- 100
proportion_clicks <- seq(0, 1, by = 0.01)
n_visitors <- seq(0, 100, by = 1)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors,
size = n_ads_shown, prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
pars <- pars[pars$n_visitors == 6, ]
pars$probability <- pars$probability / sum(pars$probability)
plot(pars$proportion_clicks, pars$probability, type = "h")