A Bayesian model of Zombie IQ
Zombies are stupid, and you and your colleagues at the National Zombie Research Laboratory are interested in how stupid they are. You have the Normal model we developed in the last video, but with the temperature data switched out with some zombie IQs fresh from the lab. What we're interested in is how much we can learn about the mean zombie IQ from this data. The model is complete, save for that we need to calculate the probability
of each parameter combination in pars
.
This exercise is part of the course
Fundamentals of Bayesian Data Analysis in R
Exercise instructions
- Use Bayes Theorem to calculate these probabilities and assign them to
pars$probability
to complete the model.
Here's Bayes theorem:
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$
Where
- \(\theta\) is a parameter combination,
- \(D\) is the data,
- \(P(D|\theta)\) is the likelihood
- \(P(\theta)\) is the prior
- \(P(\theta|D)\) is the probability of different parameter values given the data. This is what we want!
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
# 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 <- ___