我目前正在尝试用JAGS开发一个模型,但不幸的是我一直收到以下错误:
Error in jags.model("ref_model.txt", data = ref.data.jags, inits = inits3, : RUNTIME ERROR: Compilation error on line 26. Unknown variable mu.fine Either supply values for this variable with the data or define it on the left hand side of a relation.
当我运行以下代码时,就会发生这种情况:
# Function that generates the initial values for MCMC:
inits <- function()
{
list(beta0=rnorm(1),
beta1=rnorm(1),
beta2=rnorm(1),
beta3=rnorm(1),
beta4=rnorm(1),
beta5=rnorm(1),
beta6=rnorm(1))
}
inits3 <- list(inits(), inits(), inits())
# Parameters that will be monitored:
params <- c("beta0", # intercept
"beta1", "beta2", "beta3", # slopes
"beta4", "beta5", "beta6",
"pred.fine") # fine-grain predictions
# Model compilation:
jm <- jags.model("ref_model.txt",
data = ref.data.jags,
inits = inits3,
n.chains = 3,
n.adapt = 1000)下面是标题为"ref_model.txt“的文件中的内容,我在R中使用Rjags在R中运行它
# Model definition for JAGS:
cat("
model
{
# priors
beta0 ~ dnorm(0, 0.01)
beta1 ~ dnorm(0, 0.1)
beta2 ~ dnorm(0, 0.1)
beta3 ~ dnorm(0, 0.1)
beta4 ~ dnorm(0, 0.1)
beta5 ~ dnorm(0, 0.1)
beta6 ~ dnorm(0, 0.1)
# fitting the model to the fine-grain reference dataset
# (600 well surveyed cells)
for (j in 1:N.ref)
{
# Eq. 1 (see Methods):
log(lambda.fine[j]) <- beta0 +
beta1 * NPP.ref[j] +
beta2 * LC.ref[j] +
beta3 * PW.ref[j] +
beta4 * HFP.ref[j] +
beta5 * PS.ref[j] +
beta6 * T.ref[j]
# Eq. 2 (see Methods):
S.ref[j] ~ dpois(mu.fine[j])
}
# predicting in the complete fine-grain dataset
# (all 6238 fine-grain grid cells)
for (i in 1:N.fine)
{
log(pred.fine[i]) <- beta0 +
beta1 * NPP[i] +
beta2 * LC[i] +
beta3 * PW[i] +
beta4 * HFP[i] +
beta5 * PS[i] +
beta6 * T[i]
}
}
", file="ref_model.txt")我有点困惑为什么会发生这个错误,如果有人能建议我如何解决这个问题,我将不胜感激。
发布于 2018-11-30 22:19:29
之所以会出现此错误,是因为mu.fine只出现在方程式的右手边,而不是左边。另一方面,看起来S.ref依赖于mu.fine,但是您还没有告诉JAGS mu.fine是什么(它没有值)。假设lambda.fine是线性预测器,S.ref是你的因变量,你可以改变
S.ref[j] ~ dpois(mu.fine[j])
至
S.ref[j] ~ dpois(lambda.fine[j])
然后这个错误就不会发生了。
https://stackoverflow.com/questions/53545389
复制相似问题