Kom igångKom igång gratis

En bayesiansk modell av zombie-IQ

Zombier är korkade, och du och dina kollegor på National Zombie Research Laboratory är nyfikna på hur korkade de egentligen är. Du har den normalfördelningsmodell vi tog fram i förra videon, men nu med zombie-IQ-värden direkt från labbet i stället för temperaturdata. Det vi vill ta reda på är vad vi kan lära oss om den genomsnittliga zombie-IQ:n utifrån dessa data. Modellen är klar – det som återstår är att beräkna probability för varje parameterkombination i pars.

Den här övningen är en del av kursen

Grunderna i bayesiansk dataanalys i R

Visa kurs

Övningsinstruktioner

  • Använd Bayes teorem för att beräkna dessa sannolikheter och tilldela dem till pars$probability för att färdigställa modellen.

Här är Bayes teorem:

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

Där

  • \(\theta\) är en parameterkombination,
  • \(D\) är data,
  • \(P(D|\theta)\) är sannolikhetsfunktionen (likelihood)
  • \(P(\theta)\) är priorn
  • \(P(\theta|D)\) är sannolikheten för olika parametervärden givet data. Det är detta vi vill ha!

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 <- ___
Redigera och kör kod