縦カウントデータの分析方法:GLMMでの時間的自己相関の説明


16

統計の達人とRプログラミングウィザードの皆さん、

私は、動物の捕獲物を環境条件とその日の関数としてモデリングすることに興味があります。別の研究の一環として、私は3年間で約160日間のキャプチャのカウントを持っています。これらの各日には、気温、降雨、風速、相対湿度などがあります。データは同じ5つのプロットから繰り返し収集されたため、プロットをランダム効果として使用します。

私の理解では、nlmeは残差の時間的自己相関を簡単に説明できますが、lme4(自己相関を処理できない?)のような非ガウスリンク関数を処理しません。現在、log(count)でRのnlmeパッケージを使用するとうまくいくと思います。だから今の私の解決策は次のようなものを実行することです:

m1 <- lme(lcount ~ AirT + I(AirT^2) + RainAmt24 + I(RainAmt24^2) + RHpct + windspeed + 
      sin(2*pi/360*DOY) + cos(2*pi/360*DOY), random = ~1|plot, correlation =
      corARMA(p = 1, q = 1, form = ~DOY|plot), data = Data)

ここで、DOYは年間通算日です。最終モデルにはより多くの相互作用があるかもしれませんが、これは私の一般的な考えです。また、分散構造を次のようなものでさらにモデル化することもできます。

weights = v1Pow

ポアソン混合モデル回帰または何かを処理するより良い方法があるかどうかはわかりませんか?KedemとFokianosによる「時系列分析の回帰モデル」の第4章で数学的な議論を見つけました。現時点では、特にアプリケーション(Rでコーディング)で私を少し超えていました。また、ZuurらでMCMCソリューションを見ました。(winBUGSまたはJAGを使用して)BUGS言語のMixed Effects Modelsブック(Chp 23)。それが私の最善の選択肢ですか?これを処理する簡単なMCMCパッケージがRにありますか?私はGAMMやGEEの手法にあまり詳しくありませんが、人々がより良い洞察を提供してくれると思ったら、これらの可能性を喜んで探ります。私の主な目的は、与えられた環境条件で動物の捕獲を予測するモデルを作成することです。第二に、私は動物がその活動の観点からどのような反応をするかを説明したいと思います。

(哲学的に)進むための最良の方法、Rでこれをコーディングする方法、またはBUGSでコーディングする方法についての考えをいただければ幸いです。私はRとBUGS(winBUGS)にはかなり慣れていませんが、学んでいます。これは、時間的自己相関に対処することを試みた最初の例でもあります。

ありがとう、ダン


1
私は一般にGEEの大ファンですが、クラスター(プロット)が5つしかないため、ここでは使用しないでください。漸近的にうまく機能するために、GEEは通常、より多くの(約40程度)クラスターを必要とします。
StatsStudent

Macの所有者として、WINBUGSよりもSTANの方が楽でした。
eric_kernfeld

回答:


3

応答を変換するログはオプションですが、理想的ではありません。GLMフレームワークが一般的に推奨されます。GLMに慣れていない場合は、混合モデルの拡張機能を見る前にそれらを確認することから始めてください。カウントデータには、ポアソンまたは負の二項分布の仮定が適している可能性があります。分散が過剰分散を示す平均(https://en.wikipedia.org/wiki/Overdispersion)よりも大きい場合、負の二項分布が示されます。パラメーター推定値の解釈は、2つに対して同等です。

Rにはいくつかのオプションがありますが、私の経験ではlme4が最もよく引用されています。

#glmer
library(lme4) 
glmer(count ~ AirT + I(AirT^2) + RainAmt24 + I(RainAmt24^2) + RHpct + windspeed + sin(2*pi/360*DOY) + cos(2*pi/360*DOY) + (1|plot), family=poisson, data = Data) 
# use glmer.nb with identical syntax but no family for negative binomial.

# glmmADMB with negative binomial
install.packages("glmmADMB", repos=c("http://glmmadmb.r-forge.r-project.org/repos", getOption("repos")),type="source") 
require(glmmADMB)
glmmadmb(count ~ AirT + I(AirT^2) + RainAmt24 + I(RainAmt24^2) + RHpct + windspeed + sin(2*pi/360*DOY) + cos(2*pi/360*DOY) + (1|plot), 
           family="nbinom", zeroInflation=FALSE, data=Data)

# glmmPQL, requires an estimate for theta which can be obtained from a 
# glm model in which the correlation structure is ignored.
library(MASS)
glmmPQL(count ~ AirT + I(AirT^2) + RainAmt24 + I(RainAmt24^2) + RHpct + windspeed + sin(2*pi/360*DOY) + cos(2*pi/360*DOY) , random = list(~1 | plot), data = Data,family = negative.binomial(theta = 4.22, link = log))

これらのリンクも役立ちます。

https://udrive.oit.umass.edu/xythoswfs/webui/_xy-11096203_1-t_yOxYgf1s http://www.cell.com/trends/ecology-evolution/pdf/S0169-5347(09)00019-6.pdf

どちらもlme4の作者であるBen Bolkerによるものです。

私は例をテストしていませんが、どこから始めればいいのかわかるはずです。実装を検証する場合は、データを提供してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.