Un modèle bayésien du QI des zombies
Les zombies sont stupides, et vous et vos collègues du National Zombie Research Laboratory voulez savoir à quel point. Vous disposez du modèle Normal développé dans la dernière vidéo, mais avec les données de température remplacées par des QI de zombies tout juste sortis du labo. Ce qui nous intéresse, c'est ce que ces données nous apprennent sur le QI moyen des zombies. Le modèle est complet, à ceci près qu'il nous reste à calculer la probability de chaque combinaison de paramètres dans pars.
Cet exercice fait partie du cours
<cours>Fondamentaux de l'analyse bayésienne des données en R</cours>Instructions de l’exercice
- Utilisez le théorème de Bayes pour calculer ces probabilités et les affecter à
pars$probabilityafin 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)}$$
Où
- \(\theta\) est une combinaison de paramètres,
- \(D\) représente les 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 du paramètre 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 <- ___