我试图估计当动物被移除并且检测时间和空间发生变化时,在多个观察期内从 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] 在每个 jth 观察中都相同(即 p[i,1] = p[i,2] = p[i,3] 等),它将是:
p[i]*(1-p[i])^5
任何建议将不胜感激。
这是 BUGS 语言代码。我在 R 中工作并通过 rjags 包将代码发送到 JAGS。BUGS、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])
}
谢谢你的帮助。担