3

動物が取り除かれ、検出が時間と空間で変化する複数の観測期間にわたって 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

どんな提案でも大歓迎です。

これはバグ言語コードです。私は 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])
}

助けてくれてありがとう。ダン

4

3 に答える 3