r - 在 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)
提前致谢!
解决方案
如果您不想创建新数据框:
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", ...)))
推荐阅读
- python - 在 WSL2 下使用 selenium 时出现控制台错误
- html - Google 跟踪代码管理器 - 跟踪表单中的下拉问题
- android - 使用 Single.zip() 时成功的 API 调用返回空值
- mysql - 将一行中的每一列与数据库sql中的每一行进行比较
- cadence-workflow - 在实现 Uber Cadence 工作流程时,Java 客户端与 Go 客户端有哪些重大差异?
- css - Tailwind-CSS 在将 .hidden 应用于元素后不应用 flex/block
- java-8 - drools-6.5 是否向后兼容 drools-2.5?
- apache-spark - 之间语句不适用于 Hive Map 列 - Spark SQL
- kotlin - 如何将 Kotlin 的多平台依赖源附加到 IDEA?
- python - 使用 XlsxWriter 将 CSV 保存在 Excel 工作簿的不同工作表中