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