発見率モデル(繰り返し法)

ロバストデザインによる調査

生物の分布や個体数を調べ、対象生物のある地点における存在確率を推定する際、「いない」ことを証明するのはとても難しい問題です。なぜなら、生物調査で「本当はいる個体」を100%発見することは不可能だからです。この問題をそのままにすると存在確率を過小評価し、パラメーター推定に偏りをもたらすことが知られています。

この問題に対応するため、最近ではロバストデザインによる調査が一般的になってきています。ロバストデザインとは、同じ調査地点で複数回調査する調査デザインのことで、これにより発見率に起因する「在・不在」や「個体数」データのばらつきを統計的に補正することができます。基本的な原理としては、繰り返し調査の間は「真の在・不在」の状態は変化しないという仮定を置くことで、「同じ地点における調査回ごとの在・不在データのばらつきは発見率に由来する」というモデリングを行います。

SPONSOR LINK

BUGSによるモデリング(応答変数が在・不在)

調査回tにおける調査地点iでの在・不在をYti、真の在不在をzi(調査回tの間ではzは変化しないと仮定するので、tは省く)、発見率をpとしたとき、在・不在データが得られる確率は下記のように整理されます。

真の状態は在、データも在:zi*p
真の状態は在、データは不在:zi*(1-p)
真の状態は不在、データも不在:zi*p or zi*(1-p)

これらをモデル化するためには、まずは真の状態(zi)を記述し、次に真の状態ziに依存して観察値Ytiが得られるプロセスをモデル化します。

model{
#Likelihood
for(i in 1:Nsite){
 Y[i] ~ dbin(mu[i],T.survey)  #Y[i]はT.survey回調査したうち、在となった回数
 mu[i] <- p*z[i] #データが在となる確率は真の状態と発見率の積
 z[i] ~ dbern(psi) #真の存在確率psi
}
# Prior
p ~ dunif(0,1)
psi ~ dunif(0,1)

}

BUGSモデルでは、Ytiは発見回数として表されます(例えば、3回調査して2回見つかった場合はY=2)。前半の二項モデルの部分(Y[i] ~ dbin(mu[i],T.survey))では、発見率に応じて3回中何回が「在」となるそうかをモデル化しています。

真の在・不在の状態に影響する要因を調べたい場合は、下記のようにスクリプトを書き替えることで容易にパラメーター推定を行えます。

model{
#Likelihood
for(i in 1:Nsite){
 Y[i] ~ dbin(mu[i],T.survey)
 mu[i] <- p*z[i]

 z[i] ~ dbern(psi[i])
 logit(psi[i]) <- b[1] + b[2]*x[i]
}

# Prior
p ~ dunif(0,1)
for(i in 1:2){ b[i] ~ dnorm(0, 0.001) }

}

なお、実際にモデルを回す際には、zの初期値の与え方に注意しなければなりません。zがありえない値(例えばY=3なのにz=0となるなど)になるとBUGSはエラーコードを返してきます。そのため、zの初期値はz = rep(1, N.sample)などとしておくほうが無難です。

BUGSによるモデリング(応答変数が個体数)

応答変数が個体数などの離散値の場合でも、少しスクリプトを書き替えるだけで対応することが可能です。調査回tにおける調査地点iでの発見個体数をYti、真の在不在をNiとすると:

model{
#Likelihood
for(i in 1:Nsite){
 for(t in 1:Nsurvey){
  Y[t,i] ~ dbin(p, N[i])
 }
 N[i] ~ dpois(lambda) #真の個体数の平均値lambda
}

# Prior
p ~ dunif(0,1)
log(lambda) <- log.lambda
log.lambda ~ dnorm(0, 0.001)
}

なお、ここでの発見率pは、発見された個体数を真の個体数で除したもの(見つかった個体の割合)として解釈することができます。上と同様に、lambdaを線形予測子と関連付けることで、真の個体数に影響する要因を調べることができます。

発見率のばらつき

上記のモデルでは、場所によらず発見率は一定としていましたが、様々な理由で発見率が地点によってばらつくことが考えられます。そのような場合には、発見率をなんらかの確率分布に従うランダム変数とすることで、そのばらつきを考慮することが可能です。上記の在・不在モデルにおいて、発見率がランダムにばらつくと仮定したモデルは次のように書くことができます。

model{
#Likelihood
for(i in 1:Nsite){
 Y[i] ~ dbin(mu[i],T.survey)
 mu[i] <- p[i]*z[i]
 z[i] ~ dbern(psi)

 logit(p[i]) <- logit.mean.p + eps[i]
 eps[i] ~ dnorm(0, tau.p)
}
# Prior
logit(mean.p) <- logit.mean.p
mean.p ~ dunif(0,1)
psi ~ dunif(0,1)
tau.p ~ dgamma(0.001,0.001)

}

上のモデルではロジットスケールで正規分布を仮定した誤差を考えていますが、ベータ分布によるモデリングなども可能です。

SPONSOR LINK

Spread the love

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です