使用超过 30 个预测变量时 MuMin pdredge() 出错
Error in MuMin pdredge() when using more than 30 predictor variables
我 运行 遇到以下错误,只有当我将具有超过 30 个预测变量的模型传递给 pdredge() 时才会发生:
Error in sprintf(gettext(fmt, domain = domain), ...) :
invalid format '%d'; use format %f, %e, %g or %a for numeric objects
我在 windows 机器上 运行通过 RStudio 打开 Microsoft R:
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
RStudio Version 1.0.153
MuMIn_1.43.6
可重现的例子:
library(MuMIn)
library(parallel)
#Random data: X1 as response, X2-X31 (30) predictors
var.30 <- data.frame(replicate(31,sample(0:100,75,rep=TRUE)))
#Random data: X1 as response, X2-X32 (31) predictors
var.31 <- data.frame(replicate(32,sample(0:100,75,rep=TRUE)))
#prepare cluster for pdredge
clust <- try(makeCluster(detectCores()-1))
#working model (30 or less predictors)
mod <- lm(X1 ~ ., data=var.30, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)
#Non-working model (31 or more predictors)
mod <- lm(X1 ~ ., data=var.31, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)
我在 2016 年知道这是 with integer bit restrictions. However, from this question 收到的评论,我的印象是问题已解决并且最大值发生了变化?
the second question you reference中实际上只有 16 个参数,但有些参数被多次调用以表示交互项(尽管,该 OP 是否真的希望它们表示交互,或者用于 I(parameter^2) , 不清楚;如果是后者,他们的代码就会失败,因为唯一参数太多了)。因此,尽管该问题中有很多 (~41) 个术语,但只有 16 个唯一参数。
据我所知,@Kamil Bartoń 尚未更新 dredge
以接受超过 30 个唯一参数调用。
dredge
中的 31 个术语限制几乎是最终的。除非 R 实现对 64 位整数的本机支持,否则不会对其进行扩展。
(另外,请更新您的 MuMIn - 此 'sprintf' 错误已在一段时间前修复)
我 运行 遇到以下错误,只有当我将具有超过 30 个预测变量的模型传递给 pdredge() 时才会发生:
Error in sprintf(gettext(fmt, domain = domain), ...) : invalid format '%d'; use format %f, %e, %g or %a for numeric objects
我在 windows 机器上 运行通过 RStudio 打开 Microsoft R:
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
RStudio Version 1.0.153
MuMIn_1.43.6
可重现的例子:
library(MuMIn)
library(parallel)
#Random data: X1 as response, X2-X31 (30) predictors
var.30 <- data.frame(replicate(31,sample(0:100,75,rep=TRUE)))
#Random data: X1 as response, X2-X32 (31) predictors
var.31 <- data.frame(replicate(32,sample(0:100,75,rep=TRUE)))
#prepare cluster for pdredge
clust <- try(makeCluster(detectCores()-1))
#working model (30 or less predictors)
mod <- lm(X1 ~ ., data=var.30, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)
#Non-working model (31 or more predictors)
mod <- lm(X1 ~ ., data=var.31, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)
我在 2016 年知道这是
the second question you reference中实际上只有 16 个参数,但有些参数被多次调用以表示交互项(尽管,该 OP 是否真的希望它们表示交互,或者用于 I(parameter^2) , 不清楚;如果是后者,他们的代码就会失败,因为唯一参数太多了)。因此,尽管该问题中有很多 (~41) 个术语,但只有 16 个唯一参数。
据我所知,@Kamil Bartoń 尚未更新 dredge
以接受超过 30 个唯一参数调用。
dredge
中的 31 个术语限制几乎是最终的。除非 R 实现对 64 位整数的本机支持,否则不会对其进行扩展。
(另外,请更新您的 MuMIn - 此 'sprintf' 错误已在一段时间前修复)