首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GLMM中考虑时间相关性

在GLMM中考虑时间相关性
EN

Stack Overflow用户
提问于 2014-06-27 21:14:54
回答 1查看 3.3K关注 0票数 5

我正在尝试解释GLMM中的自相关。我的响应变量是布尔值,它表示在一组蜂巢的生命周期中存在和不存在en事件。我正在尝试用一组描述每个巢状态的数值变量来预测发生这种事件的概率。因此,我在一个带有嵌套的广义模型中使用了二项分布作为随机效应(使用glmer())。然而,事件是自相关的,所以我在残差中得到了一个相当可怕的模式。如果我在没有随机影响的误差中使用高斯分布,我会使用gls()的相关结构来估计一些相关参数,但这在这种情况下是行不通的。我一直在寻找在GLMM中包含这种自相关性的方法,但我似乎没有得到正确的结果。我发现可以使用ts()和diff()函数对数据集进行转换,以允许模型包含响应的先前值作为预测值。这适用于线性模型lm(),使得残差更好。

代码语言:javascript
复制
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()可以包含关联structures.That模型运行,但它不会改善残差中的模式。它们似乎仍然是自相关的。

代码语言:javascript
复制
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包,它应该允许回归函数处理时间序列。但同样,该函数不会使用转换生成的值运行。

代码语言:javascript
复制
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,但我找不到这样做的方法。如果能帮上忙我将不胜感激。

干杯!

EN

回答 1

Stack Overflow用户

发布于 2015-06-10 01:51:14

你能给我们举一个可重复使用的例子吗?原则上,“手动”延迟值不应该太难,例如:

代码语言:javascript
复制
basket.1 <- subset(basket,select=c(Nest,day,number_cells,
                             provitioning_cells,closed_cells,
                             reopened_cells,eclosed_cells,pollen))
n <- nrow(basket.1)
basket.2 <- transform(basket.1,pollen.lag1=c(pollen[2:n],NA),
                      pollen.lag2=c(pollen[3:n],rep(NA,2)))

library("lme4")
m.basket.glmm1 <- glmer(pollen~provitioning_cells+
                   reopened_cells+ closed_cells+
                    eclosed_cells+day+pollen.lag1+pollen.lag2+
                    (1|Nest),
                   family=binomial,data=basket.2)

根据您的数据集的大小,如果day是数字而不是一个因子,您可能希望使用(day|Nest)而不是(1|Nest) ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24452796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档