“变量名中不允许出现空槽”OpenBUGS、R2OpenBUGS

问题描述

我是 openbugs 的初学者,我通过 R2openbugs R 包使用它。我尝试设置状态空间模型来识别非常嘈杂的数据中的对数正态信号。经过多次试验和错误,我设法获得了此代码,但仍然收到以下错误消息:“变量名错误 pos 664 中不允许使用空槽”,我不明白。谁能知道代码有什么问题?

免责声明:

  • alt = 测量高度
  • true_alt = 我尝试评估的内容
  • nbird = 个体数量
  • nobs = 观察次数(这个数字对每只鸟都不一样)
  • nstate = '飞行状态',这是鸟类的行为方式(nstate = 3 因为有 3 种不同的行为)

我尝试确定每个状态的 true_alt 的对数正态分布。

    model <- function(){
  
  ## MODEL SPECIFICATION
  for(j in 1:nbird){
    for(i in 1:nobs[j]){
      alt[i,j] ~ dnorm(true_alt[i,j],tau.obs)
      log(true_alt[i,j]) <- log_true_alt[i,j]
      log_true_alt[i,j] ~ dnorm(mean.alt[i,tau[state[i,j]])
      mean.alt[i,j] <- alt1[state[i,j]] +  ind.re[j]
    }
  }
  
  for(i in 1:nstate){ tau[i] <- 1/(sig[i])  }
  
  # Random Effects:
  tau.re <- 1/sig.re
  for(j in 1:nbird) {  ind.re[j] ~ dnorm(0,tau.re)  }
  
  
  ## PRIORS
  for(i in 1:nstate) {
    alt1[i] ~ dnorm(0,0.01)
    sig[i] ~ dunif(0,200)
  }
  sig.re ~ dunif(0,200)
  state ~ dunif(1,3)

  ## POSTERIOR PREDICTIVE disTRIBUTIONS FOR EACH STATE
  for(s in 1:nstate){
  log_alt_pred[s] ~ dnorm(alt1[s],tau[s])
  log(alt_pred[s]) <- log_alt_pred[s]
  }

}

谢谢!!!

解决方法

这可能是因为在您的先验中您试图为“alt1[i]”设置分布,但在您的模型中您使用了“alt[i,j]”。