You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中构建广义线性混合模型(GLMM)遇错求助

GLMM构建错误的解决方法

1. lme4包的错误修正

你用lmer()报错是因为这个函数只处理线性混合模型(高斯分布),二项式响应的广义线性混合模型要改用lme4包里的glmer()函数。

修正后的代码:

library(lme4)
# 务必指定data参数传入你的数据集
Detections_glmm <- glmer(Detection ~ Camera + (1|Day), 
                         family = binomial, 
                         data = data1)
  • (1|Day)表示把Day设为随机截距因子,符合你的需求
  • family=binomial对应二项式响应变量,可省略引号,写法更规范
  • 必须通过data参数指定数据集,否则函数无法读取变量

2. glmm包的对象过大问题处理

glmm包生成超大对象的核心原因是你设置了m=10^4(蒙特卡洛抽样次数),这个数值对于小数据集来说完全过剩,会导致模型对象包含大量抽样结果。

调整建议:

  • 大幅降低m的取值,比如设为m=1000甚至更小
  • 随机项~0+Day是无截距的随机效应,若你需要的是随机截距,应改为~1|Day(和glmer逻辑一致),除非你明确需要无截距结构

调整后的代码示例:

library(glmm)
set.seed(1234)
Detections <- glmm(Detection ~ 0 + Camera, 
                   random = list(~1 | Day), 
                   varcomps.names = c("Day"), 
                   data = data1, 
                   family.glmm = bernoulli.glmm, 
                   m = 1000, 
                   debug = FALSE) # 关闭debug模式减少冗余输出

新手实用建议

  • 优先选择lme4包的glmer(),语法更直观,社区资源更丰富,后续模型诊断、可视化工具也更完善
  • 后续加入多个解释变量时,直接在公式中追加即可,示例:
# 包含所有固定因子的完整模型
full_model <- glmer(Detection ~ Camera + Temperature + Distance + Light + Size + (1|Day),
                    family = binomial,
                    data = data1)

内容的提问来源于stack exchange,提问作者saimensis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:57:32