使用MuMIn包dredge函数报错:找不到glmmTMB函数
问题:glmmTMB模型执行dredge时出现函数找不到及结果为空的错误
对glmmTMB拟合的模型执行dredge操作时,每个模型子集均弹出警告:
In glmmTMB(... : could not find function "glmmTMB"
随后触发错误:
Error in .dredge.par(global.model = m, evaluate = T, rank = "AIC", m.lim = c(0, :
the result is empty
已加载并更新glmmTMB(版本1.1.7)和MuMIn(版本1.47.5)包,未找到同类问题解决方案。
所用代码
library(MuMIn) library(glmmTMB) library(parallel) # 创建并行集群 nCores <- detectCores() - 1 clusterType <- if(length(find.package("snow", quiet = TRUE))) "SOCK" else "PSOCK" clust <- try(makeCluster(getOption("cl.cores", nCores), type = clusterType)) # 拟合全局模型 m <- glmmTMB(Used ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x1*x2 + (1|group), data = data, family = binomial) options(na.action = "na.fail") dredged43 <- dredge(m, beta = "sd", evaluate = T, rank = "AIC", m.lim = c(0,9), trace = 2, cluster = clust) options(na.action = "na.omit")
可复现数据
set.seed(101) data <- data.frame(Used = factor(sample(0:1,size=200,replace=T)), x1=factor(sample(0:1,size=200,replace=T)),x2=rnorm(200),x3=rnorm(200), x4=rnorm(200),x5=rnorm(200),x6=rnorm(200),x7=rnorm(200), x8=rnorm(200), group=factor(rep(1:10,each=20)))
解决建议
- 为并行集群节点加载必要包:问题核心是并行子进程未加载
glmmTMB包,创建集群后需显式给每个节点加载包:clust <- try(makeCluster(getOption("cl.cores", nCores), type = clusterType)) if(!inherits(clust, "try-error")) { clusterEvalQ(clust, { library(glmmTMB) library(MuMIn) }) } - 验证集群创建状态:去掉
try语句,避免掩盖集群创建失败的错误,确保集群正常启动后再执行后续操作:clust <- makeCluster(getOption("cl.cores", nCores), type = clusterType) clusterEvalQ(clust, { library(glmmTMB) library(MuMIn) }) - 先关闭并行测试基础功能:如果并行模式仍有问题,先移除
cluster参数,用单线程运行dredge,确认模型本身可正常拟合:dredged43 <- dredge(m, beta = "sd", evaluate = T, rank = "AIC", m.lim = c(0,9), trace = 2) - 确认模型拟合正常:先单独运行全局模型,检查是否存在拟合错误:
summary(m) - 重新安装包确保兼容性:重新安装两个包,确保版本匹配且无损坏:
install.packages("glmmTMB") install.packages("MuMIn")
内容的提问来源于stack exchange,提问作者jolson
相关产品推荐
相关产品推荐

