15

私の仕事は、さまざまな環境変数が年間人口変動にどのように影響するかを評価することです。このために、時系列カウントのポアソン自己回帰モデルを適合させる必要があります。

ここに画像の説明を入力

ここで、N i,jは年にサイトで観測された個人の数、はi年にサイトでの環境変数です。これらは入力データで、残りはパラメーターです。は年にサイトで予想される個人の数であり、ランダムです毎年の効果。jx_{i,j}ij\mu_{i,j}ij\gamma_{j}

そのようなモデルを R に適合させることは可能ですか? 計算に時間がかかるため、ベイジアンフレームワークにフィッティングすることは避けたいです(そのようなモデルを5000処理する必要があります)GLMのモデルを変換しようとしましたが、ランダム効果(ガンマ)を追加する必要がありましたより長く可能です。

4

3 に答える 3

1

INLA パッケージhttp://www.r-inla.orgをご覧ください。

これはベイジアンですが、モデルの速度を頻度論的モデル (glm、glmm) と比較できるようにする、統合されたネストされたラプラス近似を使用します。

L = 40 の Ricardo Oliveros-Ramos から開始しmuます。最初にデータセットを準備します。env

dataset <- data.frame(
  count = rpois(length(mu), lambda = mu),
  year = rep(seq_len(T), L),
  site = rep(seq_len(L), each = T),
  env = as.vector(env)
)
library(reshape2)
n <- as.matrix(dcast(year ~ site, data = dataset, value.var = "count")[, -1])
dataset$year2 <- dataset$year

モデルを実行する

library(INLA)
system.time(
  model <- inla(
    count ~ 
      env +
      f(year, model = "ar1", replicate = site) + 
      f(year2, model = "iid"), 
    data = dataset,
    family = "poisson"
  )
)
   user  system elapsed 
   0.18    0.14    3.77

Ricardo のソリューションと速度を比較する

system.time(test <- fitModel(obs=n, env=env, T=T, L=L))
   user  system elapsed 
  11.06    0.00   11.06 

速度を頻度論的 glmm と比較します (自己相関なし)

library(lme4)
system.time(
  m <- glmer(
    count ~ env + (1|site) + (1|year), 
    data = dataset, 
    family = poisson
  )
)
   user  system elapsed 
   0.44    0.00    0.44 

自己相関のない inla の速度

system.time(
  model <- inla(
    count ~ 
      env +
      f(site, model = "iid") + 
      f(year, model = "iid"), 
    data = dataset,
    family = "poisson"
  )
)
   user  system elapsed 
   0.19    0.11    2.09
于 2014-03-24T00:02:36.577 に答える