Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中创建模型时,使用模型规范公式会产生错误_R_Lme4_Mixed Models_Mumin - Fatal编程技术网

在R中创建模型时,使用模型规范公式会产生错误

在R中创建模型时,使用模型规范公式会产生错误,r,lme4,mixed-models,mumin,R,Lme4,Mixed Models,Mumin,我安装了以下形式的混合模型: global.mod <- lmer(log(y) ~ x1 + x2 + x3 + x4 + x5 + (1 + x1|a/b), REML = FALSE, data = lmerDat, na.action = 'na.fail', control = lmerControl(optimizer="bobyqa",o

我安装了以下形式的混合模型:

global.mod <- lmer(log(y) ~ 
                       x1 + x2 + x3 + x4 + x5 + (1 + x1|a/b),
                       REML = FALSE, data = lmerDat,
                       na.action = 'na.fail', control = lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e4)))
然后,我尝试以稍微不同的格式指定我的模型,如下所示:

 PredictorVariables <- names(lmerDat)[c(5:9)] # this is x1 till x5
 fixed.part <- paste("log(y) ~", paste(PredictorVariables, collapse=" + "))
 random.part <- paste('(1 + x1|a/b)')
 Formula <- formula(paste(fixed.part, random.part, sep = " + "))

 global.mod <- lmer(Formula, data = lmerDat, na.action = 'na.fail', control = 
 lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e4)), REML = FALSE)    

 require(parallel) || require(snow)

 clusterType <- if(length(find.package("snow", quiet = TRUE))) "SOCK" else "PSOCK"
 clust <- try(makeCluster(getOption("cl.cores", 4), type = clusterType))
 clusterEvalQ(clust, library(lme4))
 clusterExport(clust, "lmerDat")

 model.set <- pdredge(global.mod, clust, 
                      m.lim = c(2, NA), rank = AIC, extra = "adjR^2", trace = 2)
不幸的是,后者是我想要如何进行模型规范的,因为apriori我不知道
names(lmerDat)[c(5:9)]
中预测值的名称。谁能帮我理解这个错误以及如何解决它

编辑

我的回溯输出如下(请注意,这是我的原始数据,而不是上面的伪数据)


我不熟悉
snow()
,您能否创建公式向量作为字符向量,并使用
lappy()
像这样运行它
lappy(公式向量,函数(x)lmer(公式(x),数据=lmerDat,等等)
(我知道这在snow之外有效)。请注意,如果您在任何模型中遇到收敛或错误指定问题,它将停止。请在错误后添加可复制的代码或至少添加
traceback()
输出。好的。我已添加
traceback()
收到错误后的输出这只是错误消息格式的一个小故障。无论如何,尝试打印的错误
疏导
是由于模型中的术语数量过多。上限为32(没有简单的解决方法)。好的,非常感谢您的回答。
 PredictorVariables <- names(lmerDat)[c(5:9)] # this is x1 till x5
 fixed.part <- paste("log(y) ~", paste(PredictorVariables, collapse=" + "))
 random.part <- paste('(1 + x1|a/b)')
 Formula <- formula(paste(fixed.part, random.part, sep = " + "))

 global.mod <- lmer(Formula, data = lmerDat, na.action = 'na.fail', control = 
 lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e4)), REML = FALSE)    

 require(parallel) || require(snow)

 clusterType <- if(length(find.package("snow", quiet = TRUE))) "SOCK" else "PSOCK"
 clust <- try(makeCluster(getOption("cl.cores", 4), type = clusterType))
 clusterEvalQ(clust, library(lme4))
 clusterExport(clust, "lmerDat")

 model.set <- pdredge(global.mod, clust, 
                      m.lim = c(2, NA), rank = AIC, extra = "adjR^2", trace = 2)
 Error in sprintf(gettext(fmt, domain = domain), ...) : 
 invalid format '%d'; use format %f, %e, %g or %a for numeric objects
 7: sprintf(gettext(fmt, domain = domain), ...)     
 6: gettextf(Message, ..., domain = domain)    
 5: structure(list(message = as.character(message), call = call), 
   class = class)      
 4: simpleError(gettextf(Message, ..., domain = domain), Call)
 3: stop(simpleError(gettextf(Message, ..., domain = domain), Call))
 2: cry(, "number of non-fixed predictors [%d] exceeds the allowed maximum of %d (with %d variants)", 
   nov, novMax, nVariants)
 1: pdredge(global.mod, clust)