Zacznij terazZacznij za darmo

Bayesowski model IQ zombie

Zombie są głupie – a ty i twoi koledzy z Narodowego Laboratorium Badań nad Zombie chcecie dowiedzieć się, jak bardzo głupie. Masz do dyspozycji model normalny opracowany w poprzednim filmie, z tą różnicą, że dane o temperaturze zastąpiono świeżymi wynikami IQ zombie prosto z laboratorium. Interesuje nas, ile możemy się dowiedzieć o średnim IQ zombie na podstawie tych danych. Model jest gotowy – pozostało jedynie obliczyć probability dla każdej kombinacji parametrów w pars.

To ćwiczenie jest częścią kursu

Podstawy bayesowskiej analizy danych w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj twierdzenia Bayesa, aby obliczyć te prawdopodobieństwa i przypisz je do pars$probability, uzupełniając w ten sposób model.

Oto twierdzenie Bayesa:

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

Gdzie

  • \(\theta\) to kombinacja parametrów,
  • \(D\) to dane,
  • \(P(D|\theta)\) to wiarygodność (likelihood),
  • \(P(\theta)\) to prior,
  • \(P(\theta|D)\) to prawdopodobieństwo różnych wartości parametrów przy danych wartościach danych. To właśnie chcemy uzyskać!

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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 <- ___
Edytuj i uruchom kod