0

次の形式の混合モデルを適合させました。

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)               
4

0 に答える 0