r - 在 R 中创建模型时,使用公式进行模型规范会产生错误
问题描述
我安装了以下形式的混合模型:
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)))
然后我用它predge
来创建下面的模型组合,效果很好。
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)
然后我尝试以稍微不同的格式指定我的模型,如下所示:
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
不幸的是,后者是我想要做模型规范的方式,因为先验我不知道预测变量的名称是什么names(lmerDat)[c(5:9)]
。谁能帮我理解错误以及如何解决它?
编辑
我的回溯输出如下(请注意,这是我的原始数据而不是上面的虚拟数据)。
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)
解决方案
推荐阅读
- r - R plotly变量值刻度距离到下图
- swift - 重置 FCM 令牌 Swift
- c# - 使用 NuGet 包管理器安装 Entity Framework 6 不会创建相关引用。(我认为)
- excel - 在 PasteSpecial vba 之后获得选择
- xcode - 如何使 Xcode 12.4 中的 Tab(⇥) 按钮工作?
- c# - 克隆存储库后,为 TypeScript 导入 MsBuildTargets 不起作用
- java - 加载期间的neo4j OGM StackOwerflow错误
- blazor - 选择性加载 Javascript
- vue.js - Vue - 当父级不传递道具时在子组件中管理自定义 v-model
- html - 导航标签中的链接或按钮角色