ÎncepețiÎncepe gratuit

Un model bayesian al IQ-ului zombilor

Zombii nu sunt tocmai cunoscuți pentru inteligența lor, iar tu și colegii tăi de la Laboratorul Național de Cercetare a Zombilor vreți să aflați cât de puțin inteligenți sunt, de fapt. Ai la dispoziție modelul Normal dezvoltat în videoclipul anterior, însă în locul datelor despre temperatură se află acum câteva valori de IQ ale zombilor, proaspăt colectate din laborator. Ne interesează ce putem afla despre media IQ-ului zombilor pe baza acestor date. Modelul este complet, cu excepția faptului că trebuie să calculăm probability pentru fiecare combinație de parametri din pars.

Acest exercițiu face parte din cursul

Fundamentals of Bayesian Data Analysis in R

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește teorema lui Bayes pentru a calcula aceste probabilități și atribuie-le lui pars$probability, completând astfel modelul.

Iată teorema lui Bayes:

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

Unde

  • \(\theta\) este o combinație de parametri,
  • \(D\) reprezintă datele,
  • \(P(D|\theta)\) este verosimilitatea (likelihood)
  • \(P(\theta)\) este distribuția a priori (prior)
  • \(P(\theta|D)\) este probabilitatea diferitelor valori ale parametrilor, dată de date. Aceasta este ceea ce urmărim!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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 <- ___
Editează și rulează codul