不完全なカウントデータから動物の個体数を推定する

Kanazawa.R #2

伊東宏樹

2024-11-23

動物の個体数推定

  • 対象の動物が何匹(頭・羽)いるのか ← 基本情報

  • カウント調査

  • しかし、動物はいても、必ず発見できるとは限らない

  • 不完全なカウントデータ

N-mixtureモデル

反復調査(j回)により、実際の個体数(Ni, iはサイト)と、発見確率(p)を推定

\[ N_i \sim \mathrm{Poisson}(\lambda) \]

\[ Y_{ij} \sim \mathrm{Binomial}(N_i, p) \]

  • Niは、反復調査のあいだ変わらないことを仮定
  • いないものを「発見」することや、ダブルカウントはないと仮定

North American Breeding Bird Survey (BBS)

  • 北米繁殖鳥調査

  • 1960年代から続く大規模調査

  • 北米一帯で4000以上の調査ルート

  • 各調査ルートに50箇所サイト

モリツグミ

1991年6月のBBSモリツグミデータ

  • unmarkedパッケージのbirdsデータに含まれるwoodthrushデータフレーム

  • 50サイトで11回の反復調査

   1 2 3 4 5 6 7 8 9 10 11
1  1 1 0 1 2 2 2 3 1  2  2
2  1 2 2 1 1 2 1 1 1  2  2
3  0 1 1 1 0 0 1 1 0  1  1
4  4 2 2 2 1 2 2 2 2  3  2
5  2 1 1 1 0 1 1 2 1  2  2
6  3 1 2 2 1 1 1 1 1  2  0
7  0 1 1 1 1 1 1 0 0  1  1
8  1 1 0 2 0 0 1 1 1  1  1
9  1 1 1 2 2 0 0 0 0  0  1
10 1 1 0 0 2 1 1 1 1  1  0
11 0 0 0 1 0 0 0 1 1  0  0
12 0 0 0 0 0 1 1 1 0  0  0
13 1 1 1 0 1 0 1 0 1  2  1
14 2 0 0 0 0 1 1 1 1  1  1
15 0 0 0 1 1 1 1 0 1  1  1
16 1 1 1 1 1 2 2 1 2  2  1
17 0 0 0 2 1 0 1 1 0  1  0
18 0 0 1 0 0 0 0 2 1  0  0
19 0 0 0 0 1 1 0 1 1  0  0
20 0 0 0 0 0 0 0 1 1  0  0
21 0 1 1 0 1 2 1 1 1  1  1
22 0 1 0 0 0 0 0 0 1  1  0
23 0 0 0 0 0 1 0 0 0  1  1
24 1 1 0 1 2 1 1 1 0  0  0
25 0 0 0 0 0 0 0 0 0  0  1
26 0 2 0 0 1 0 1 0 0  0  0
27 0 0 0 0 1 0 0 0 0  0  0
28 0 0 0 0 0 0 0 0 0  1  0
29 0 0 0 0 0 0 0 0 0  0  1
30 0 0 0 0 0 0 0 0 1  0  0
31 0 0 0 0 1 1 1 0 0  0  0
32 0 0 0 0 0 0 0 0 0  0  0
33 0 0 0 0 1 1 0 0 0  0  0
34 0 0 0 0 0 0 0 0 0  0  0
35 0 0 0 1 1 0 0 0 0  0  1
36 0 0 0 0 0 1 0 0 0  0  0
37 0 0 0 0 0 0 0 0 1  1  0
38 0 0 0 1 0 0 0 0 0  1  0
39 0 0 0 0 0 0 0 0 0  0  0
40 0 0 0 0 0 0 0 0 1  0  0
41 0 0 0 0 0 0 0 1 0  1  0
42 0 0 0 0 0 1 1 0 1  1  0
43 0 0 0 0 0 0 0 0 0  0  0
44 0 0 0 0 0 1 1 0 0  0  0
45 0 0 0 0 1 0 1 0 0  0  1
46 0 0 0 0 1 0 0 0 0  0  0
47 0 0 0 0 0 0 0 0 0  0  0
48 0 0 0 1 0 1 1 0 0  0  0
49 0 0 0 0 0 0 0 1 0  0  1
50 0 0 0 0 0 0 0 1 1  0  1

グラフにすると

Nimbleによるモデリング

  • マルコフ連鎖モンテカルロ (MCMC) 法によるベイズ推定

  • BUGS言語でモデルを記述

code <- nimbleCode({
  for (i in 1:N_site) {
    N[i] ~ dpois(exp(log_lambda))
    for (j in 1:N_obs) {
      Y[i, j] ~ dbinom(ilogit(logit_p), N[i])
    }
  }
  log_lambda ~ dnorm(0, 1e-2)
  logit_p ~ dnorm(0, 1e-2)
})

結果

参考文献