首页 > 解决方案 > 在 R 中运行 GLMER 时如何忽略特定因子水平?

问题描述

我正在运行一个常见的 RSF 来评估 GPS 领鹿的土地覆盖类型使用情况。我有一个名为 Landcover_Type 的因子列,其中填充了数字 1-5,对应于特定的土地覆盖类型(即 2 = 木质、3 = 草本、4 = 水等)。如何在我的模型中排除水?

样本数据

下面的代码指定了用作参考的因子水平,模型运行良好。但是,我需要从考虑中去除水。

levels(pre_RSFpoints$Landcover_Type) 
pre_RSFpoints<-within(pre_RSFpoints, Landcover_Type <-relevel(Landcover_Type, ref = 2))

pre_model <- glmer(Used ~ Landcover_Type + (1|Id),family="binomial",data=pre_RSFpoints)
summary(pre_model)

提前致谢!

标签: rlogistic-regressionmixed-modelsfactors

解决方案


如果您不想创建新数据框:

pre_model_nowater <- subset(pre_model, Landcover_Type != "4"))

您可以使用以下subset=参数glmer

pre_model <- glmer(Used ~ Landcover_Type + (1|Id),   
    family="binomial", data=pre_RSFpoints,
    subset = (Landcover_Type != "4"))

顺便说一句,在使用以数字为水平的因子时,您应该非常小心。在重新调平之前,值之间的对应关系 ("1"="something"=1, "2"="woody"=2, "3"="herbaceous"=3) 是明智的,但之后它会被打乱(" 2" 将是第一级,"1" 是第二级),如果您通过整数代码引用因子,您可能会搞砸。如果可能的话,将字符串保留为标签会是更好的做法......

如果数据带有数字代码,最好的处理方法是在您读入数据后立即将它们转换回文本标签,使用transform()(base R)或mutate()(tidyverse),例如

pre_model <- transform(pre_model,
    Landcover_Type = factor(Landcover_Type, levels = 1:5,
              labels = c("something", "woody", "herbaceous", ...)))

此外,如果您正在进行栖息地偏好分析,您可能应该阅读此线程,它指的是这篇期刊文章


推荐阅读