R lme4::allFit()中出错--没有适用于';isGLMM';

R lme4::allFit()中出错--没有适用于';isGLMM';,r,logistic-regression,lme4,R,Logistic Regression,Lme4,我在尝试使用一些内置并行化运行lme4::allFit()时遇到了一个令人困惑的错误。我拟合了一个初始模型m0,该模型使用一个更大的数据帧ckDF(n=265623行)对逻辑框架中的一系列分类和连续预测值的二元响应进行建模,并对年份进行随机截距 我感兴趣的是,根据我在网上找到的一些建议(例如@BenBolker),确定不同的优化器是否会产生不同的结果。我的数据相当大,通常运行大约需要20分钟,因此我希望使用allFit()的parallel和ncpus参数来加快运行速度。这是我的相关代码: re

我在尝试使用一些内置并行化运行
lme4::allFit()
时遇到了一个令人困惑的错误。我拟合了一个初始模型
m0
,该模型使用一个更大的数据帧
ckDF
(n=265623行)对逻辑框架中的一系列分类和连续预测值的二元响应进行建模,并对年份进行随机截距

我感兴趣的是,根据我在网上找到的一些建议(例如@BenBolker),确定不同的优化器是否会产生不同的结果。我的数据相当大,通常运行大约需要20分钟,因此我希望使用
allFit()
parallel
ncpus
参数来加快运行速度。这是我的相关代码:

require(lme4)
require(parallel)

m0 <- glmer(returned ~ 1 + barge + site + barge:site + 
            (run + rearType + basin)^2 + 
            (tdg + temp + holdingTime)^2 +
            (1|year), 
            data = ckDF, family = 'binomial',
            control = glmerControl(optimizer='bobyqa', 
                                   optCtrl = list(maxfun = 1e5)))
af1 <- allFit(m0, parallel = 'multicore', ncpus = detectCores())
require(lme4)
需要(并行)

m0感谢@user20650和@Ben Bolker在上面的评论中提供的提示——它起到了作用,我能够通过确保在我的函数调用中使用
parallel=“snow”
,使
allFit()
按预期运行。只需将编辑后的代码发布到此处,供其他认为此功能有用的人使用:

require(lme4); require(snow)

# Define initial model (switched to defaults here)
m0 <- glmer(returned ~ 1 + barge + site + barge:site + 
            (run + rearType + basin)^2 + 
            (tdg + temp + holdingTime)^2 +
            (1|year), 
            data = ckDF, family = 'binomial')

# Set up cluster for running allFit()
optCls <- makeCluster(detectCores()-1, type = "SOCK")
clusterEvalQ(optCls,library("lme4"))
clusterExport(optCls, "ckDF")

# Use allFit() to look at differences in optimizers
system.time(af1 <- allFit(m0, parallel = 'snow', 
                          ncpus = detectCores()-1, cl=optCls))
stopCluster(optCls)
require(lme4);需要(雪)
#定义初始模型(此处切换为默认值)

m0我想知道您是否需要在windows上使用
parallel=“snow”
?(注意到allFit说要先运行
clusterEvalQ(cl,library(“lme4”))
的帮助)我同意@user20650的建议。“多核”使用“McLappy”,这在Windows上通常不可用。我们是否应该在
allFit
帮助页面中添加更多文档?是的。我想看看OP是否有响应(我目前无法访问Windows系统进行测试…)感谢@user20650和@Ben Bolker——我在发布后又投入了一点,并意识到
snow
必须是我在Windows中用于任何并行处理的东西。我将在这里再次测试它,并让您知道这是否解决了问题(在我的机器上运行需要一段时间)。我认为,即使是在
allFit
文档中建议Windows用户使用“snow”的注释也会对像我这样的新手有所帮助。我想有一点让人困惑的是,文档中的
cl
参数是可选的,但根据注释,如果
parallel=“snow”
,则,实际上,您必须定义自己的集群,以便能够在预定义集群上运行
clusterEvalQ(cl,library(“lme4”)