Een conditionele shortcut
Mooi, je hebt nu wat Bayesiaanse berekeningen gedaan, zonder te simuleren! De plot die je hebt gemaakt zou lijken op de posterior verdeling die je in hoofdstuk 3 hebt berekend. Maar je ziet ook dat het behoorlijk veel code kostte. Kunnen we niets schrappen?
Ja hoor! Je kunt direct conditioneren op de data, je hoeft de gezamenlijke verdeling niet eerst te maken.
Deze oefening maakt deel uit van de cursus
Basisprincipes van Bayesiaanse data-analyse in R
Oefeninstructies
- Stel
n_visitorsdirect in op6; vervang gewoon deseq-instructie. - Nu kun je de regel verwijderen die conditioneert op de data, en de regel erna die
pars$probabilitynormaliseert. - Kijk nog eens goed naar de uiteindelijke code en overtuig jezelf ervan dat het resultaat van deze aangepaste code hetzelfde is als eerst. :)
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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")