r语言 - 为什么 Rjags 会扔"Unknown variable mu.fine"?Rjags 错误



我目前正试图在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")

我有点困惑为什么会发生错误,如果有人能建议我如何解决这个问题,我将不胜感激

之所以出现此错误,是因为mu.fine只出现在方程的右侧,而不是左侧。换句话说,看起来S.ref依赖于mu.fine,但您没有告诉JAGSmu.fine是什么(没有值(。假设lambda.fine是线性预测器,S.ref是因变量,则可以更改

S.ref[j] ~ dpois(mu.fine[j])

S.ref[j] ~ dpois(lambda.fine[j])

则该错误将不会发生。

相关内容

最新更新