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

glmmTMB调用predict()时如何仅保留Microchip随机效应排除olre

glmmTMB模型预测时排除指定随机效应的解决方法

报错原因说明

glmmTMB包的predict()方法的re.form参数设计和lme4包的glmer不同,目前不支持自定义传入部分随机效应公式,仅支持三个合法取值:

  • re.form = NULL(默认):纳入模型所有随机效应
  • re.form = NA / re.form = ~0:完全排除所有随机效应,仅输出固定效应部分的预测值

你触发的报错就是因为传入了自定义的随机效应公式:

Error in predict.glmmTMB(SelMod2, type = "response", re.form = ~(1 | Microchip)) :
re.form must equal NULL, NA, or ~0

仅纳入Microchip随机效应、排除olre的实现方法

优先推荐手动计算的方案,逻辑清晰可控,不会修改原模型参数:

步骤1:提取固定效应线性预测值

# 提取固定效应系数
fixef_coef <- fixef(Mod)$cond
# 提取当前数据的固定效应设计矩阵
X_mat <- model.matrix(Mod, data = mydata_select)
# 计算固定效应部分的线性预测值
fixed_linpred <- as.vector(X_mat %*% fixef_coef)

步骤2:匹配Microchip对应的随机截距

# 提取所有Microchip对应的随机效应值
ranef_mc <- ranef(Mod)$cond$Microchip[,1]
# 为每个观测匹配对应Microchip的随机效应
mydata_select$mc_eff <- ranef_mc[as.character(mydata_select$Microchip)]

步骤3:转换为响应尺度的预测值

# 调用模型对应分布的逆连接函数转换,适配所有连接函数场景
mydata_select$predictAll <- family(Mod)$linkinv(fixed_linpred + mydata_select$mc_eff)

如果你用的是nbinom1默认的对数连接,也可以直接写为:

mydata_select$predictAll <- exp(fixed_linpred + mydata_select$mc_eff)

内容的提问来源于stack exchange,提问作者Sofie Scheuer Didriksen Nagly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:36:03