由于高度相关,R 不会在我的 glm 中包含重要的随机项 - 但我需要考虑它

R won't include an important random term within my glm due to high correlation - but I need to account for it

我有一个大数据框,包括每年的蝙蝠丰度,我想在 R 中模拟那些年的人口趋势。我需要另外包括年份作为随机效应,因为我的数据点不是'一年的蝙蝠数量并不独立,直接影响下一年的数量(如果一年有 10 只蝙蝠,下一年它们很可能还活着)。我有一个大数据集,但是使用 group_by() 函数创建了一个更简单的数据框,如下所示 - 数据框布局示例。在我更大的数据集中,我还有月份和日期。

year total individuals
2000 39
2001 84
etc. etc.

这是我希望与 lme4 一起使用的模型。

BLE_glm6 <- glm(total_indv ~ year + (year|year), data = BLE_total, family = poisson)

因为年份是预测变量,再次添加年份时 R 不喜欢它,因为它高度相关。所以我想知道,如果我不能将年份作为随机效应包含在模型中,我如何解释一年直接影响个人数量然后明年的个人?

有几种可能性。最明显的是将上一年的蝙蝠数量作为 offset:

来拟合泊松模型
## set up lagged variable
BLE_total <- transform(BLE_total, 
           total_indv_prev = c(NA, total_indv[-length(total_indv)])
## or use dplyr::lag() if you like tidyverse
glm(total_indv ~ year + offset(log(total_indv_prev)), data = BLE_total, 
   family = poisson)

这将适合模型

mu = total_indv_prev*exp(beta_0 + beta_1*year)
total_indv ~ Poisson(mu)

exp(beta_0 + beta_1*year) 将是当前年份和上一年之间的预测 比率 。 (有关泊松模型中 log-offset 的进一步说明,请参阅 here。)

如果你想将年份作为随机效应(抱歉,问题读得太快了),那么

library(lme4)
glmer(total_indv ~ offset(log(total_indv_prev)) + (1|year), ...)