我正在试图弄清楚如何估算数据中的变化点,并且这样做我想估计变换点之前的时段的随机效应,然后估计变更点之后的时段。但是,我不知道变换点何时应该是,所以我试图估计它。我遇到的问题是我在循环结构中使用变换点(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
}
}
答案 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.到目前为止,似乎变换年被估计为我的时间序列的中点 - 但这很可能只是一个模型问题,克服不是语法问题。再次感谢您的想法!