Varying intercept model: 切片に線形予測子を加える

ランダム効果入りのベイズ推定モデルでは、グループ間の「ランダムなばらつき」を表現するモデルを作りましたが、そのグループ間のばらつきが何によって変わるのかを知りたい場合もあります。例えば、川にすむ魚の個体数をモデリングするとき、小さい空間スケールの個体数は隠れ場所の量によってよく説明できたとしても、河川ごとの平均的な個体数は河川単位で変化する他の要因、例えば降水量で決まるかもしれません(降水量が多い河川は氾濫が多いため、個体数は全体的に少ないなど)。

色の違いが川の違い;X軸は生息場所の量、Y軸は魚の密度。

このような問題には、ランダム効果に線形予測子を加えることで対処できます。下記スクリプトのハイライト箇所で、グループレベルの線形予測子がモデル化されています。なお、このグループレベルの説明変数だけで説明できないばらつきは、パラメーターsigma.Rで考慮されることになり、これによりランダムなグループ間のばらつきも表現されます。

model{
  ninfo <- 0.0001
  
  # Prior
  for(i in 1:2){ b[i] ~ dnorm(0, ninfo) }
  for(i in 1:2){ B[i] ~ dnorm(0, ninfo) }
  tau ~ dgamma(ninfo, ninfo); sigma <- sqrt(1/tau)
  tau.R ~ dgamma(ninfo, ninfo); sigma.R <- sqrt(1/tau.R)
  
  # Likelihood
  for(i in 1:N){
    y[i] ~ dnorm(mu[i], tau)
    mu[i] <- alpha[group[i]] + b[1]*x[i]
  }
  
  for(j in 1:Ng){
    alpha[j] ~ dnorm(mu.R[j], tau.R)
    mu.R[j] <- B[1] + B[2]*xg[j]
  } 
}

なお、注意点として、グループレベルの説明変数は、繰り返しの単位がグループIDと対応することになります。例えば、ここに10の河川から5地点ずつ集められたデータがあるとします(N=5*10=50)。グループレベルでは「河川」が繰り返しとのなるので、添え字jは1から10(Ng: Number of groups)の繰り返し構文となります。したがって、RからJAGSに渡すデータセットは二つのタイプに分かれます(y、x、groupは長さNのベクター、xgは長さNgのベクター)。

SPONSOR LINK

Spread the love

コメントを残す

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