Boyuna sayım verileri nasıl analiz edilir: GLMM'de zamansal otokorelasyon muhasebesi?


16

Merhaba istatistiksel gurular ve R programlama sihirbazları,

Hayvan yakalamalarını çevresel koşulların ve yılın gününün bir fonksiyonu olarak modellemekle ilgileniyorum. Başka bir çalışmanın parçası olarak, üç yıl içinde ~ 160 gün boyunca yakalama sayım var. Bu günlerin her birinde sıcaklık, yağış, rüzgar hızı, bağıl nem vb. Var. Veriler aynı 5 parselden tekrar tekrar toplandığından rastgele bir etki olarak arsa kullanıyorum.

Anladığım kadarıyla, nlme artıklarda geçici otokorelasyonu kolayca hesaplayabilir, ancak lme4 (otokorelasyonu işleyemeyen?) Gibi Gauss dışı bağlantı işlevlerini işlemez. Şu anda, günlükte (sayım) R'de nlme paketini kullanmanın işe yarayabileceğini düşünüyorum. Yani benim çözüm şu anda şöyle bir şey çalıştırmak olacaktır:

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)

burada DOY = Yılın Günü. Son modelde daha fazla etkileşim olabilir, ancak bu benim genel fikrim. Ayrıca, varyans yapısını benzer bir şeyle daha fazla modellemeye çalışabilirim

weights = v1Pow

Poisson karma model regresyonu veya başka bir şeyle daha iyi bir yol olup olmadığından emin değilim? Kedem ve Fokianos'un "Zaman Serisi Analizi için Regresyon Modelleri" Bölüm 4'te matematiksel bir tartışma buldum. Şu anda, özellikle uygulamada (R'de kodlama) biraz ötesindeydi. Ayrıca Zuur ve ark. BUGS dilinde Karışık Efekt Modelleri kitabı (Bölüm 23) (winBUGS veya JAG kullanarak). Bu benim en iyi seçeneğim mi? R'de bunun üstesinden gelebilecek kolay bir MCMC paketi var mı? GAMM veya GEE tekniklerine gerçekten aşina değilim, ancak insanlar daha iyi kavrayış sağlayacaklarını düşünürlerse bu olasılıkları araştırmaya istekli olacaklardı.Temel hedefim, çevre koşulları göz önüne alındığında hayvan yakalamalarını tahmin etmek için bir model oluşturmak. İkinci olarak, hayvanların aktiviteleri açısından neye yanıt verdiğini açıklamak istiyorum.

İlerlemenin en iyi yolu hakkındaki düşünceler (felsefi olarak), bunu R veya HATA'da nasıl kodlayacağınız takdir edilecektir. R ve BUGS (winBUGS) için oldukça yeniyim ama öğreniyorum. Bu aynı zamanda geçici otokorelasyonu ilk kez ele almaya çalıştım.

Teşekkürler, Dan


1
Genelde GEE'nin büyük bir hayranıyım, ancak burada sadece 5 kümeniz (arsalar) olduğu için kullanmaktan kaçınırım. Asemptolojik olarak iyi performans göstermek için GEE genellikle daha fazla sayıda (yaklaşık 40 kadar) küme gerektirir.
İstatistikler

Mac sahibi olarak, WINBUGS yerine STAN ile daha kolay zaman geçirdim.
eric_kernfeld

Yanıtlar:


3

Günlük, yanıtınızı dönüştürmek ideal olmasa da bir seçenektir. Genel olarak bir GLM çerçevesi tercih edilir. GLM'lere aşina değilseniz, karma model uzantılarına bakmadan önce bunları gözden geçirerek başlayın. Sayım verileri için Poisson veya Negatif Binom dağılım varsayımları muhtemelen uygun olacaktır. Varyans aşırı dağılmayı gösteren ortalamadan daha yüksekse Negatif Binom belirtilir ( https://en.wikipedia.org/wiki/Overdispersion ). Parametre tahminlerinin yorumlanması ikisi için eşdeğerdir.

R'de birkaç seçenek var, lme4 en yaygın olarak benim deneyimimde belirtiliyor.

#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))

Bu bağlantılar da yardımcı olabilir:

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

Her ikisi de lme4'ün yazarı Ben Bolker.

Örnekleri test etmedim ama size nereden başlayacağınız konusunda bir fikir vermeliler. Uygulamalarını doğrulamak istiyorsanız lütfen veri sağlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.