我正在尝试使用并行计算版本的疏浚(package MUMIn)来选择完整的glmer模型:
modmer.pom.full<-glmer(cbind(TEST,CONTROL)~ G+MS+l+MS*l+G*MS+G*l+I(l^2) + (1|c)+(1|s)+(1|l)+offset(log(qTEST/qCONTROL)),family=binomial(link = "logit"),data=df.pom.mer, control=glmerControl(optimizer="bobyqa"))将R集群设置为并行运行后,
cl <- makeCluster(3)
registerDoParallel(cl)
clusterExport(cl,"df.pom.mer")我只是尝试使用pdredge函数,如下所示:
pdredge(modmer.pom.full,cluster=cl,rank = "AIC")但是没有评估,相反,我得到了所有子模型的以下输出:
Warning messages:
1: In eval(expr, envir, enclos) :
could not find function "glmer" (model 0 skipped)我没有通过使用非并行计算函数疏浚来观察这个问题。看来格利默没有被普雷奇认出来,但我找不到原因。我是MUMIn和并行包的新用户,所以我会不会在pdredge参数中遗漏了一些重要的东西?
非常感谢,胡安
发布于 2020-08-25 22:01:55
为了完整起见,正如注释中所建议的那样,如果您(1)指定了完全限定的名称(下面的lme4::lmer)或(2)使用clusterEvalQ(cluster, library(lme4))来确保包加载到工作人员上,这就很好了。
library(lme4)
library(parallel )
cluster = makeCluster(3, type = "SOCK") ## also need snow installed
set.seed(101)
dd <- data.frame(x1=rnorm(1000),x2=rnorm(1000),x3=rnorm(1000),f=rep(1:20,each=50))
dd$z <- simulate(~x1+x2+x3+(1|f), newdata=dd,
newparams=list(theta=1,beta=rep(1,4), sigma=1), family=gaussian)[[1]]
full_model = lme4::lmer(z ~ x1*x2*x3 + (1 | f), data = dd,
REML = FALSE, na.action = "na.fail")
clusterExport(cluster,"dd")
clusterEvalQ(cluster, library(lme4))
MuMIn::pdredge(full_model, cluster)https://stackoverflow.com/questions/30261473
复制相似问题