r2jags循环使用估计变量

时间:2014-05-06 15:44:59

标签: r for-loop bayesian r2jags

我正在试图弄清楚如何估算数据中的变化点,并且这样做我想估计变换点之前的时段的随机效应,然后估计变更点之后的时段。但是,我不知道变换点何时应该是,所以我试图估计它。我遇到的问题是我在循环结构中使用变换点(cp),并且我收到错误'无法评估计数器i的上部索引'。我猜我不能循环使用我想估计的变量?我想知道是否有人这样做和/或有关于如何做到这一点的建议。另一个潜在的问题是我没有在我的命令中使用计数器索引i,但是,当我尝试使用while循环时,我也遇到了循环不破坏的问题。提前感谢您的任何想法!

代码的子集:

    cp ~ dunif(3,51)

for(i in 1:(cp-1)){
  for(j in 1:nsite){
    b[j] ~ dnorm(0,tau.site)
 }
}

for(i in cp:nyear){
  for(j in 1:nsite){
    b1[j] ~ dnorm(0,tau.site1) # random site effects
 }
}

1 个答案:

答案 0 :(得分:1)

感谢您的评论。我所发现的,解决了这个问题的最简单形式(据我所知)如下:

model {
changeyear ~ dunif(1,N)

  for(j in 1:nsite){
b[j] ~ dnorm(0,tau.site)
b1[j] ~ dnorm(0, tau.site1)
}
}

# Note priors for tau.site and tau.site1 are not shown
for (i in 1:nyear){
  for(j in 1:nsite){
  y[i,j] <- b[j] * step(i-changeyear) + b1[j] * step(changeyear-i)
}}

其中y [i,j]是我模型的预期值。 step函数用作指示函数,这样命令的计算结果为非负值,然后是1,否则为0.到目前为止,似乎变换年被估计为我的时间序列的中点 - 但这很可能只是一个模型问题,克服不是语法问题。再次感谢您的想法!