CommencezCommencez gratuitement

Un modèle bayésien du QI des zombies

Les zombies sont stupides, et vous et vos collègues du Laboratoire national de recherche sur les zombies voulez savoir à quel point. Vous disposez du modèle Normal élaboré dans la dernière vidéo, mais avec les données de température remplacées par des QI de zombies fraîchement sortis du labo. Ce qui nous intéresse, c'est de déterminer ce que ces données nous apprennent sur la moyenne du QI des zombies. Le modèle est complet, sauf qu'il reste à calculer la probability de chaque combinaison de paramètres dans pars.

Cette activité fait partie du cours

Principes fondamentaux de l'analyse de données bayésienne en R

Voir le cours

Instructions de l’exercice

  • Utilisez le théorème de Bayes pour calculer ces probabilités et les attribuer à pars$probability afin de compléter le modèle.

Voici le théorème de Bayes :

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

  • \(\theta\) est une combinaison de paramètres,
  • \(D\) correspond aux données,
  • \(P(D|\theta)\) est la vraisemblance
  • \(P(\theta)\) est la loi a priori
  • \(P(\theta|D)\) est la probabilité des différentes valeurs de paramètres compte tenu des données. C'est ce que nous voulons obtenir !

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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 <- ___
Modifier et exécuter le code