由于高度相关,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), ...)
我有一个大数据框,包括每年的蝙蝠丰度,我想在 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), ...)