1

我试图弄清楚如何估计我的数据中的变化点,为此我想估计变化点之前的时间段和变化点之后的时间段的随机效应。但是,我不知道更改点应该在什么时候,所以我试图估计它。我遇到的问题是我在循环结构中使用了更改点(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
 }
}
4

1 回答 1

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。到目前为止,似乎 changeyear 被估计为我的时间序列的中点 - 但这可能只是要克服的模型问题不是语法问题。再次感谢您的想法!

于 2014-05-09T15:10:36.117 回答