首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Rjags抛出“未知变量mu.fine"?Rjags错误

为什么Rjags抛出“未知变量mu.fine"?Rjags错误
EN

Stack Overflow用户
提问于 2018-11-30 02:26:40
回答 1查看 183关注 0票数 0

我目前正在尝试用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.

当我运行以下代码时,就会发生这种情况:

代码语言:javascript
复制
# 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中运行它

代码语言:javascript
复制
# 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")

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

EN

回答 1

Stack Overflow用户

发布于 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])

然后这个错误就不会发生了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53545389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档