MUMIn pdredge ошибка с glmer
Я пытаюсь использовать версию dredge для параллельных вычислений (пакет 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)
Я не наблюдал эту проблему, используя функцию параллельного вычисления Dredge. Кажется, что блеск не распознается pdredge, но я не смог найти причину. Я новый пользователь как MUMIn, так и параллельных пакетов, так может ли быть, что я что-то упустил importnat в аргументах pdredge?
Большое спасибо, Хуан
0 ответов
Просто для полноты, как предлагается в комментариях, это отлично работает, если вы либо (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)