(这个问题与我的上一个问题有点相关,但这个问题是关于主题比较之间的,而这个问题是专门关于对群体进行推断的意思。)
使用分层贝叶斯模型分析数据时,您有时不想对个体受试者进行推断,而是在群体水平上进行推断(例如,对于 10 岁的女孩,最可信的测试分数是 100,95% 的可信区间为 [75, 125])。在使用 MCMC 框架(例如 JAGS/BUGS)构建这样的模型时,我看到了两种获取组级别平均值的方法。要么我可以使用先验的平均值(下。)采样分布的平均值,或者对于 MCMC 算法的每次迭代,我可以计算所有主题平均值的平均值(这是下图中所有的平均值)。如果我想对组进行推断意味着我应该使用这两种选择中的哪一种?
作为测试,看看使用这两种不同的替代方案时会发生什么,我用模拟数据运行了一个模型。
这是一个层次模型的Kruschke 样式图我们估计了许多主题的.

这是 JAGS 和 R 代码,用于指定上述模型并模拟 50 个受试者的数据,其中每个受试者获得一个随机正态分布的平均值,其中和。然后 JAGS 模型运行 5000 次迭代,每次迭代都会保存先验的平均值和计算出的受试者平均值。group_mumean_mu <- mean(mu[])
library(rjags)
model_string <- "model {
for(i in 1:length(y)) {
y[i] ~ dnorm( mu[subject[i]], precision[subject[i]])
}
mean_mu <- mean(mu[])
for(subject_i in 1:n_subject) {
mu[subject_i] ~ dnorm(group_mu, group_precision)
precision[subject_i] <- 1/pow(sigma[subject_i], 2)
sigma[subject_i] ~ dunif(0, 10)
}
group_mu ~ dunif(-10, 10)
group_precision <- 1/pow(group_sd, 2)
group_sd ~ dunif(0, 10)
}"
# Creating fake data
n <- 10
n_subject <- 50
subject_mean <- rnorm(n_subject, mean=0, sd=1)
y <- rnorm(n * n_subject, mean=rep(subject_mean, each=n), sd=1)
subject <- rep(1:n_subject, each=n)
# Running the model with JAGS
jags_model <- jags.model(textConnection(model_string),
data=list(y=y, subject=subject, n_subject=n_subject),
n.chains= 3, n.adapt= 1000)
update(jags_model, 1000)
jags_samples <- jags.samples(jags_model,
variable.names=c("group_mu", "mean_mu"),
n.iter=5000)
查看 和 的分位数和箱mean_mu线图group_mu表明它们都以真实组均值为中心,但它们的分布差异很大,95% 的可信区间比 宽group_mu得多mean_mu。
quantile(jags_samples$mean_mu, c(0.025, 0.5, 0.975))
## 2.5% 50% 97.5%
## -0.10804263 -0.00741235 0.09216414
quantile(jags_samples$group_mu, c(0.025, 0.5, 0.975))
## 2.5% 50% 97.5%
## -0.262734656 -0.008996673 0.248624938
boxplot(jags_samples, outline=F, horizontal=T)

因此,如果我想对组进行推断意味着我应该使用哪个分布,group_mu或者mean_mu?对我来说,这并不清楚,任何解释为什么一个比另一个更受欢迎的解释都非常感谢!