运行glmmTMB模型提示'names'属性与向量长度不匹配如何解决
这个报错是你在glmmTMB中使用||简写独立随机效应结构时,参数数量和内部命名逻辑不匹配导致的,结合你的数据特征,可按以下步骤解决:
- 替换随机效应分隔符:如果允许随机截距和随机斜率之间存在相关性,把随机效应项中的双竖线
||替换为单竖线|即可,修改后代码如下:
full2=glmmTMB(feedp~reprosex+foodav+rainfall+temp+(1|scan) +(1+reprosex.pregnant+reprosex.earlylac+reprosex.latelac+reprosex.male|ID), data=t.data, family=beta_family(link="logit"), control=glmmTMBControl(optimizer=optim, optArgs=list(method="BFGS")))
- 手动拆分独立随机效应:如果确实需要随机截距和各个斜率的方差独立,不要用
||简写,手动拆分每一项随机效应即可,代码如下:
full2=glmmTMB(feedp~reprosex+foodav+rainfall+temp+(1|scan) +(1|ID) +(0+reprosex.pregnant|ID) +(0+reprosex.earlylac|ID) +(0+reprosex.latelac|ID) +(0+reprosex.male|ID), data=t.data, family=beta_family(link="logit"), control=glmmTMBControl(optimizer=optim, optArgs=list(method="BFGS")))
- 简化随机效应结构:你的ID分组只有3个水平,一次性拟合4个随机斜率会导致方差组分估计精度极低,甚至无法收敛,建议优先简化随机效应结构,比如先仅保留随机截距,再逐步添加有理论支撑的随机斜率,极简测试模型代码如下:
test_mod = glmmTMB(feedp~reprosex+foodav+rainfall+temp+(1|scan)+(1|ID), data=t.data, family=beta_family(link="logit"))
如果极简模型可以正常运行,即可确认是原模型随机效应结构过于复杂导致的报错,逐步添加变量排查即可。
内容的提问来源于stack exchange,提问作者dana kang
相关产品推荐
相关产品推荐

