EmpezarEmpieza gratis

Un modelo bayesiano del CI zombi

Los zombis son poco inteligentes, y tú y tus colegas del National Zombie Research Laboratory queréis saber cuán poco. Dispones del modelo Normal que desarrollamos en el último vídeo, pero sustituyendo los datos de temperatura por CI de zombis recién salidos del laboratorio. Nos interesa saber cuánto podemos aprender sobre la media del CI zombi a partir de estos datos. El modelo está completo salvo porque necesitamos calcular la probability de cada combinación de parámetros en pars.

Este ejercicio forma parte del curso

Fundamentos del Análisis de Datos Bayesiano en R

Ver curso

Instrucciones del ejercicio

  • Usa el teorema de Bayes para calcular estas probabilidades y asígnalas a pars$probability para completar el modelo.

Aquí tienes el teorema de Bayes:

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

Donde

  • \(\theta\) es una combinación de parámetros,
  • \(D\) son los datos,
  • \(P(D|\theta)\) es la verosimilitud,
  • \(P(\theta)\) es la previa,
  • \(P(\theta|D)\) es la probabilidad de distintos valores del parámetro dados los datos. ¡Esto es lo que queremos!

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# 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 <- ___
Editar y ejecutar código