僵尸 IQ 的贝叶斯模型
僵尸很蠢,您和同事所在的 National Zombie Research Laboratory 想研究它们到底有多蠢。您手头有我们在上一个视频中建立的 Normal 模型,不过把温度数据换成了刚从实验室测得的一些僵尸 IQ。我们关心的是:从这些数据中,关于僵尸 IQ 的均值,我们能学到多少信息。模型已经就绪,只差一步:需要计算 pars 中每个参数组合的 probability。
本练习是课程的一部分
R 中的贝叶斯数据分析基础
练习说明
- 请使用贝叶斯定理计算这些概率,并将结果赋给
pars$probability,以完成模型。
贝叶斯定理为:
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$
其中:
- \(\theta\) 表示一个参数组合,
- \(D\) 表示数据,
- \(P(D|\theta)\) 为似然,
- \(P(\theta)\) 为先验,
- \(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 <- ___