Aan de slagBegin gratis

Een Bayesiaans model van zombie-IQ

Zombies zijn dom, en jij en je collega's van het National Zombie Research Laboratory willen weten hoe dom precies. Je hebt het Normale model dat we in de vorige video hebben opgezet, maar dan met de temperatuurdata vervangen door verse zombie-IQ's uit het lab. We willen weten hoeveel we uit deze data kunnen leren over de gemiddelde zombie-IQ. Het model is compleet, behalve dat we nog de probability van elke parametercombinatie in pars moeten berekenen.

Deze oefening maakt deel uit van de cursus

Basisprincipes van Bayesiaanse data-analyse in R

Bekijk cursus

Oefeninstructies

  • Gebruik de stelling van Bayes om deze kansen te berekenen en wijs ze toe aan pars$probability om het model af te ronden.

Hier is de stelling van Bayes:

$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$

Waarbij

  • \(\theta\) een parametercombinatie is,
  • \(D\) de data is,
  • \(P(D|\theta)\) de likelihood is
  • \(P(\theta)\) de prior is
  • \(P(\theta|D)\) de kans is op verschillende parameterwaarden gegeven de data. Dit is wat we willen!

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# The IQ of a bunch of zombies
iq <- c(55, 44, 34, 18, 51, 40, 40, 49, 48, 46)
# Defining the parameter grid
pars <- expand.grid(mu = seq(0, 150, length.out = 100), 
                    sigma = seq(0.1, 50, length.out = 100))
# Defining and calculating the prior density for each parameter combination
pars$mu_prior <- dnorm(pars$mu, mean = 100, sd = 100)
pars$sigma_prior <- dunif(pars$sigma, min = 0.1, max = 50)
pars$prior <- pars$mu_prior * pars$sigma_prior
# Calculating the likelihood for each parameter combination
for(i in 1:nrow(pars)) {
  likelihoods <- dnorm(iq, pars$mu[i], pars$sigma[i])
  pars$likelihood[i] <- prod(likelihoods)
}
# Calculate the probability of each parameter combination
pars$probability <- ___
Code bewerken en uitvoeren