殭屍 IQ 的貝氏模型
殭屍很笨,而你和你在「National Zombie Research Laboratory」的同事想研究他們到底有多笨。你手上有上一支影片建立的常態模型,只是把溫度資料換成剛從實驗室測得的一些殭屍 IQ。我們想知道的是:從這些資料中,我們能對殭屍 IQ 的母體平均數學到多少。模型已經完整,只差一步:你需要計算 pars 中每個參數組合的 probability。
本練習屬於課程
R 的 Bayesian 資料分析基礎
練習說明
- 使用貝氏定理計算這些機率,並指定給
pars$probability,讓模型完成。
以下是貝氏定理:
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$
其中:
- \(\theta\) 是一組參數組合,
- \(D\) 是資料,
- \(P(D|\theta)\) 是概似(likelihood),
- \(P(\theta)\) 是先驗(prior),
- \(P(\theta|D)\) 是在給定資料下,不同參數值的機率。這正是我們要的!
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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 <- ___