JAGS随机效应模型预测

3
我正在尝试建立一个贝叶斯回归模型,将指数(D47)作为响应变量,温度(Temp)作为预测变量,并考虑离散变量(Material)的随机效应。我已经找到了关于非层次回归的非常好的信息,有些文章甚至包括这些模型的预测策略。尽管如此,在我的模型中预测D47值时遇到了一个显著的问题,主要是由于随机截距。
在JAGS回归的预测过程中,有没有处理随机截距的方法?
谢谢您的回答,
model1<-"model {
# Priors
mu_int~dnorm(0, 0.0001) # Mean hyperparameter for random intercepts
sigma_int~dunif(0, 100) # SD hyperparameter for random intercepts
tau_int <- 1/(sigma_int*sigma_int)
for (i in 1:n) {
alpha[i]~dnorm(mu_int, tau_int) # Random intercepts
}
beta~dnorm(0, 0.01) # Common slope
sigma_res~dunif(0, 100) # Residual standard deviation
tau_res <- 1/(sigma_res*sigma_res)
# Likelihood
for (i in 1:n) {
mu[i] <- alpha[Mat[i]]+beta*Temp[i] # Expectation
D47[i]~dnorm(mu[i], tau_res) # The actual (random) responses
}
}"

1
具体来说,“remarkable problem”是什么? - Robert Dodier
问题是:我能使用这个JAGS模型预测D47值吗?我没有找到关于基于随机截距模型的JAGS预测的任何信息。谢谢。 - CRP
1个回答

4
当然,您可以使用随机截距进行预测,您需要做的是将其指定为某种派生数量。请尝试向模型添加类似以下内容的内容。
for(i in 1:(n)){
D47_pred[i] <- dnorm(mu[i], tau_res)
}

然后将D47_pred作为参数进行跟踪。

编辑:

此外,您需要更改指定随机截距先验的方式。这将需要几个步骤(更新代码来自评论)。

您需要向数据列表中添加一个新常数,该常数表示向量Mat中唯一组的数量。在本例中,我将其标记为M(例如,Mat中有4个组,M = 4)

for (j in 1:(M)){ 
alpha[j] ~ dnorm(mu_int, tau_int) # Random intercepts
}

该规范仅为您的模型生成正确数量的随机截距


非常感谢您的帮助和解释!这解决了我的问题。谢谢! - CRP
亲爱的@M_Fidino,我已经采纳了您关于alpha prior的建议,但是我遇到了一个错误:Error in jags.model(file = textConnection(model1), data = dat, inits = list(init.rng1, : RUNTIME ERROR: Compilation error on line 7. Attempt to redefine node alpha[18],您有其他的建议吗?谢谢! - CRP
哦!我认为你需要做的是这个... 你需要向你的数据列表添加一个新的常量,它代表向量Mat中独特组的数量。在这种情况下我把它标记为 M(例如,Mat中有4组,M=4)。for(j in 1:(M)){ alpha[j] ~ dnorm(mu_int, tau_int) }发生错误的原因是您在Mat向量中重复了数字,而您告诉它有效地重写自己,它不想这样做。这个规范只是为您的模型生成了正确数量的随机截距。 - mfidino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接