LoslegenKostenlos starten

Ein Bayes'sches Modell des Zombie-IQ

Zombies sind dumm, und du und deine Kolleginnen und Kollegen am National Zombie Research Laboratory wollt wissen, wie dumm sie sind. Du hast das Normalverteilungsmodell aus dem letzten Video, nur dass die Temperaturdaten durch frische Zombie-IQs aus dem Labor ersetzt wurden. Uns interessiert, wie viel wir aus diesen Daten über den durchschnittlichen Zombie-IQ lernen können. Das Modell ist vollständig – bis auf die Berechnung der probability für jede Zahlenkombination der Parameter in pars.

Diese Übung ist Teil des Kurses

<Kurs>Grundlagen der Bayes'schen Datenanalyse in R</Kurs>
Kurs ansehen

Übungsanweisungen

  • Verwende den Satz von Bayes, um diese Wahrscheinlichkeiten zu berechnen, und weise sie pars$probability zu, um das Modell zu vervollständigen.

Hier ist der Satz von Bayes:

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

Dabei gilt:

  • \(\theta\) ist eine Parameterkombination,
  • \(D\) sind die Daten,
  • \(P(D|\theta)\) ist die Likelihood,
  • \(P(\theta)\) ist der Prior,
  • \(P(\theta|D)\) ist die Wahrscheinlichkeit verschiedener Parameterwerte gegeben die Daten. Das ist es, was wir wollen!

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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 bearbeiten und ausführen