我试图解释 GLMM 中的自相关。我的响应变量是布尔值,它表示一组蜂巢的生命周期中是否存在 en 事件。我试图用一组描述每个巢的状态的数值变量来预测这种事件的概率。因此,我在具有嵌套作为随机效应的广义模型中使用了二项分布(使用 glmer())。然而,这些事件是自相关的,所以我的残差中有一个非常可怕的模式。如果我在没有随机效应的错误中使用高斯分布,我会使用带有 gls() 的相关结构来估计一些相关参数,但这在这种情况下不起作用。我一直在寻找将这种自相关包含在 GLMM 中的方法,但我似乎没有做对。我发现可以使用函数 ts() 和 diff() 转换数据集,以允许模型包含响应的先前值作为预测变量。这适用于线性模型 lm(),使残差更好。
basket.1<-subset(basket,select=c(Nest,day,number_cells,provitioning_cells,closed_cells,
reopened_cells,eclosed_cells,pollen))
basket.ts<-ts(as.matrix.data.frame(basket.1),start=1,frequency=9)
m.basket.ts1<-lm(pollen~provitioning_cells+reopened_cells+closed_cells
+eclosed_cells+day,data=diff(basket.ts,differences=2))`
但是, lmer() 和 glm() 都不接受这些函数的输出。问题似乎是转换使某些值为负数,而 glm() 不接受二项式模型的负值(这是有道理的)。我已经读到可以考虑自相关 glm(),这已经是一种改进,但我无法让它发挥作用。我还读到 glmmPQL() 可以包含相关结构。该模型运行,但它并没有改善我的残差模式。它们似乎仍然是自相关的。
m.basket.glmm1<-glmmPQL(pollen~provitioning_cells+reopened_cells+closed_cells
+eclosed_cells+day,random=~1|Nest,family=binomial,correlation=corAR1(form=~day),
data=basket)
我尝试了不同的相关结构,但它们似乎都不起作用。
最后,我尝试了 dyn 包,它应该允许回归函数处理时间序列。但是再一次,该函数不会使用转换产生的值运行。
m.bas.glm.dyn1<-dyn$glm(pollen~provitioning_cells+reopened_cells+closed_cells
+eclosed_cells+day,family=poisson,data = diff(basket.ts,differences=3))
总而言之,我需要运行具有时间相关性的 GLMM,但我找不到这样做的方法。我将非常感谢一些帮助。
干杯!!!