【问题标题】:JAGS Random Effects Model PredictionJAGS 随机效应模型预测
【发布时间】:2016-05-13 04:23:10
【问题描述】:

我正在尝试使用索引作为响应 (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
}
}"

【问题讨论】:

  • 具体来说,什么是“显着问题”?
  • 问题是:我可以使用这个 JAGS 模型预测 D47 值吗?我还没有找到任何关于基于 JAGS 随机截距模型的预测的信息。谢谢

标签: r regression bayesian glm-math jags


【解决方案1】:

当然,您可以使用随机截距进行预测,您只需将其指定为某种派生量即可。

尝试在模型中添加类似的内容。

for(i in 1:(n)){
D47_pred[i] <- dnorm(mu[i], tau_res)
}

然后跟踪 D47_pred 作为参数。

编辑:

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

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

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

此规范只是为您的模型生成正确数量的随机截距

【讨论】:

  • 非常感谢您的帮助和解释!这解决了我的问题。谢谢!
  • 亲爱的@M_Fidino,我之前已经包含了您对 alpha 的建议,但我遇到了一个错误: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],您的建议还有其他选择吗?谢谢!
  • 哦!我认为您需要做的是……您需要在数据列表中添加一个新常量,它表示向量Mat 中唯一组的数量。在这种情况下,我已将其标记为 M(例如 Mat 中的 4 个组,M = 4)for (j in 1:(M)){ alpha[j] ~ dnorm(mu_int, tau_int) } 发生错误是因为您在 Mat 向量中有重复的数字,并且您告诉它有效地改写自己,它不想这样做。此规范只是为您的模型生成正确数量的随机截距。
猜你喜欢
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 2020-08-19
  • 2019-02-09
  • 2016-04-09
  • 2013-05-20
  • 1970-01-01
相关资源
最近更新 更多