【问题标题】:Error in MuMin pdredge() when using more than 30 predictor variables使用超过 30 个预测变量时 MuMin pdredge() 中的错误
【发布时间】:2019-11-30 09:25:04
【问题描述】:

我遇到了以下错误,该错误仅在我将具有超过 30 个预测变量的模型传递给 pdredge() 时发生:

sprintf(gettext(fmt, domain = domain), ...) 中的错误: 无效格式“%d”;对数字对象使用格式 %f、%e、%g 或 %a

我在通过 RStudio 运行 Microsoft R Open 的 Windows 机器上:

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 年知道这是 an issue,有整数位限制。但是,从this question 和它收到的 cmets 来看,我的印象是问题已经解决并且最大值发生了变化?

【问题讨论】:

    标签: r mumin


    【解决方案1】:

    the second question you reference 中实际上只有 16 个参数,但有些参数被多次调用以表示交互项(尽管,该 OP 是否真的希望它们表示交互,还是用于 I(parameter^2),尚不清楚;如果是后者,他们的代码将会失败,因为会有太多的唯一参数)。因此,即使该问题中有很多 (~41) 个术语,也只有 16 个唯一参数。

    据我所知,@Kamil Bartoń 尚未更新 dredge 以接受 30 多个独特的参数调用。

    【讨论】:

    • 我无法投票,但感谢您的解释!我绝对认为这是〜41个预测变量,我做错了什么
    【解决方案2】:

    dredge 中的 31 个术语限制非常严格。除非 R 实现对 64 位整数的本机支持,否则不会对其进行扩展。

    (另外,更新您的 MuMIn - 此“sprintf”错误已在一段时间前修复)

    【讨论】:

    • 感谢您的回答。我进行了一些挖掘,并正在考虑花时间复制这篇扩展 R packages with 64 bit integer support 的科学论文。基本上使用 docall64 制作编译包以在需要时支持 64 位整数。这对 MuMIn 可行还是我在追逐梦想?
    • @JonWells,我已经尝试使用int64 包,但它与 R 的本机数字不兼容,所以我放弃了这个想法。我想,用两个整数编码组合比在包中添加 C 代码更值得,但我不希望很快有时间玩它。
    • 感谢您的回复!该论文列出了一种“简单”的方法来创建现有包的 64 位 shell,该包基本上是空的,并且如果我理解正确,则依赖于使用 dotCall64 编译的普通包/函数在整数和双精度之间进行转换。我可能在技术上不够熟练,无法独自完成这项任务,但也许这学期我会花一些时间问另一个问题。目前,我刚刚通过其他方式消除了列以完成我的模型选择工作。谢谢你的大礼包!
    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2021-08-25
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多