使用equatiomatic提取lmer模型公式报subscript out of bounds错如何解决
equatiomatic提取lmer模型公式subscript out of bounds报错解决方案
该报错是equatiomatic当前稳定版对「无固定效应截距+嵌套随机效应」的lmer模型适配存在缺陷导致的,设置+0移除固定效应截距、搭配(1|treatment/site)嵌套随机效应的写法,触发了包内部索引逻辑的越界bug。可通过以下方案解决:
- 方案1:升级到equatiomatic开发版,稳定版中大部分混合效应模型的适配bug已在开发版修复,安装代码如下:
remotes::install_github("datalorax/equatiomatic")
安装完成后重新运行原提取代码即可。
- 方案2:若升级开发版后仍报错,可临时调整模型写法适配包逻辑:构建模型时先保留固定效应截距(移除公式中的
+0),提取公式后手动删除输出里的截距项即可,调整后的模型固定效应系数与原模型完全对应,不会影响公式准确性,示例代码如下:
# 调整后模型写法 c1<-lmer(sqrt(co22)~t.air+t.soil+tdr+ph+TC+TN+wtd+Fe+(1|treatment/site), data=data) # 提取公式后手动删除β₀截距项即可匹配原无截距模型 extract_eq(c1,wrap = TRUE, ital_vars = FALSE)
- 方案3:若以上方案均不生效,可更换适配混合效应模型的公式导出工具,比如sjPlot包的
tab_model()函数,可直接导出包含随机效应项的完整公式,同时支持输出系数显著性等附加信息。
注意:若分组变量treatment或site存在水平数为1、分组缺失的情况,也会触发该索引错误,可先检查数据中两个分组变量的水平分布是否正常。
内容的提问来源于stack exchange,提问作者Claudia
相关产品推荐
相关产品推荐

