Цикл 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 ответ

Спасибо за комментарии. То, что я нашел, что решает простейшую форму этой проблемы (насколько я могу судить) следующим образом:

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] - ожидаемое значение из моей модели. Функция шага работает как индикаторная функция, так что команда оценивает неотрицательное значение, а затем 1, иначе 0. До сих пор кажется, что год изменения оценивается как середина моего временного ряда - но это, вероятно, просто проблема модели, чтобы преодолеть не синтаксический. Еще раз спасибо за ваши мысли!

Другие вопросы по тегам