Как анализировать данные продольного счета: учет временной автокорреляции в GLMM?


16

Здравствуйте, статистические гуру и мастера программирования R,

Я заинтересован в моделировании захвата животных в зависимости от условий окружающей среды и дня года. Как часть другого исследования, у меня есть подсчеты по ~ 160 дней за три года. В каждый из этих дней у меня есть температура, количество осадков, скорость ветра, относительная влажность и т. Д. Поскольку данные неоднократно собирались с одних и тех же 5 графиков, я использую график как случайный эффект.

Насколько я понимаю, nlme может легко учитывать временную автокорреляцию в невязках, но не обрабатывает функции негауссовой связи, такие как lme4 (которая не может обрабатывать автокорреляцию?). В настоящее время я думаю, что это может работать с использованием пакета nlme в 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)

где DOY = день года. В окончательной модели может быть больше взаимодействий, но это моя общая идея. Я также мог бы потенциально попытаться смоделировать структуру дисперсии с чем-то вроде

weights = v1Pow

Я не уверен, есть ли лучший способ сделать с регрессией смешанной модели Пуассона или что-нибудь? Я только что нашел математическое обсуждение в главе 4 «Модели регрессии для анализа временных рядов» Кедема и Фокианоса. На данный момент это было немного за пределами меня, особенно в приложении (кодирование в R). Я также видел решение MCMC в Zuur et al. Книга «Модели смешанных эффектов» (гл. 23) на языке BUGS (с использованием winBUGS или JAG). Это мой лучший вариант? Есть ли в R простой пакет MCMC, который бы справился с этим? Я не очень знаком с методами GAMM или GEE, но был бы готов изучить эти возможности, если бы люди думали, что они дадут лучшее понимание.Моя главная цель - создать модель для прогнозирования отлова животных с учетом условий окружающей среды. Во-вторых, я хотел бы объяснить, на что реагируют животные с точки зрения их активности.

Мы будем благодарны за любые мысли о том, как лучше (философски) действовать, как закодировать это в R или в BUGS. Я довольно плохо знаком с R и BUGS (winBUGS), но учусь. Это также первый раз, когда я пытался решить проблему временной автокорреляции.

Спасибо Дэн


1
Я большой поклонник GEE, но я бы не стал использовать его здесь, поскольку у вас есть только 5 кластеров (участков). Для асимптотической эффективности GEE обычно требуется большее (около 40 или около того) число кластеров.
StatsStudent

Как владелец Mac, мне было легче работать со STAN, чем с WINBUGS.
eric_kernfeld

Ответы:


3

Регистрация трансформации вашего ответа - вариант, хотя и не идеальный. Структура GLM обычно является предпочтительной. Если вы не знакомы с GLM, начните с их просмотра, прежде чем рассматривать смешанные расширения моделей. Для данных подсчета, вероятно, подойдут предположения о пуассоновском или отрицательном биномиальном распределении. Отрицательный биномиальный показатель указывается, если дисперсия выше среднего значения, указывающего на чрезмерную дисперсию ( https://en.wikipedia.org/wiki/Overdispersion ). Интерпретация оценок параметров эквивалентна для двух.

В 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.

Я не проверял примеры, но они должны дать вам представление о том, с чего начать. Пожалуйста, предоставьте данные, если вы хотите проверить их выполнение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.