Я пытаюсь оценить вероятность обнаружения животных из n.sites за несколько периодов наблюдения, когда животные удаляются, а обнаружение меняется во времени и пространстве. Это работает, если я делаю что-то подобное для 5 периодов наблюдения:
for(i in 1:nsites){
mu[i,1] <- p[i,1]
mu[i,2] <- p[i,2]*(1-p[i,1])
mu[i,3] <- p[i,3]*(1-p[i,1])*(1-p[i,2])
mu[i,4] <- p[i,4]*(1-p[i,1])*(1-p[i,2])*(1-p[i,3])
mu[i,5] <- p[i,5]*(1-p[i,1])*(1-p[i,2])*(1-p[i,3])*(1-p[i,4])
}
Вероятность в момент времени 2 зависит от вероятности в момент времени 1, а вероятность в момент времени 3 зависит от вероятностей в моменты времени 1 и 2. Если бы я делал это только для 5 периодов времени, было бы несложно написать это вне. Но поскольку я получаю 10, 15, 20+ периодов времени, записывать их довольно запутанно. Я чувствую, что должен быть способ написать этот цикл без ввода каждого шага, но я просто не могу придумать, как это сделать. Может быть, дополнительная индексация или другой оператор управления или функция мощности. Если бы p[i] было одинаковым в каждом j-м наблюдении (т.е. p[i,1] = p[i,2] = p[i,3] и т. д.), то это было бы:
p[i]*(1-p[i])^5
Любые предложения будут ценны.
Это код языка BUGS. Я работаю в R и отправил код в JAGS через пакет rjags. ОШИБКИ, R или псевдокод подойдут для моих целей.
Вот код R, который имитирует проблему:
set.seed(123)
testp <- matrix(runif(108, 0.1, 0.5), 108, 5)
testmu <- matrix(NA, 108, 5)
for(i in 1:nsites){
testmu[i,1] <- testp[i,1]
testmu[i,2] <- testp[i,2]*(1-testp[i,1])
testmu[i,3] <- testp[i,3]*(1-testp[i,1])*(1-testp[i,2])
testmu[i,4] <- testp[i,4]*(1-testp[i,1])*(1-testp[i,2])*(1-testp[i,3])
testmu[i,5] <- testp[i,5]*(1-testp[i,1])*(1-testp[i,2])*(1-testp[i,3])*(1-testp[i,4])
}
Спасибо за любую помощь. Дэн