gpt4 book ai didi

R mlogit 包 : use LAPACK instead of LINPACK

转载 作者:行者123 更新时间:2023-12-04 12:40:21 31 4
gpt4 key购买 nike

我正在使用一个非常大的数据集(1.016 亿个单位备选方案)估计一个相当简单的 McFadden 选择模型。我可以使用 asclogit 在 Stata 中很好地估计这个模型命令,但是当我尝试使用 mlogit 时R中的包,我收到以下错误:

region1 <- mlogit(chosen ~ mean_log.wage + mean_log.rent + bornNear + Dim.1 + regionFE | 0,
shape= "long", chid.var = "chid", alt.var = "alternatives", data = ready)

Error in qr.default(na.omit(X)) : too large a matrix for LINPACK
Calls: mlogit ... model.matrix -> model.matrix.mFormula -> qr -> qr.default

如果我看 source codeqr.R很明显,我的设计矩阵中的元素数量相对于 LINPACK 来说太大了。限制为 2,147,483,647。但是, LAPACK 没有这样的限制。 (至少我可以说)。

来自 qr.R :

qr.default <- function(x, tol = 1e-07, LAPACK = FALSE, ...)
{
x <- as.matrix(x)
if(is.complex(x))
return(structure(.Internal(La_qr_cmplx(x)), class = "qr"))
## otherwise :
if(LAPACK)
return(structure(.Internal(La_qr(x)), useLAPACK = TRUE, class = "qr"))
## else "Linpack" case:
p <- as.integer(ncol(x))
if(is.na(p)) stop("invalid ncol(x)")
n <- as.integer(nrow(x))
if(is.na(n)) stop("invalid nrow(x)")
if(1.0 * n * p > 2147483647) stop("too large a matrix for LINPACK")
...
qr()似乎在 mFormula 中被调用 mlogit的方法, 当 model.matrix正在创建,可能同时 checking NAs .但是不知道有没有办法通过 LAPACK = TRUEmlogit ,或者是否有办法跳过 NA 检查。

我希望 @YvesCroissant会看到这个。

正如我提到的,我可以在Stata中很好地估计这个模型,所以这不是资源问题。然而,我的 Stata 许可证不可移植,这就是我想使用 R 的原因。

最佳答案

感谢 Julius 的评论和 this post在 R 中的命名空间上,我找到了答案。我在库语句之后添加了以下代码:

source("mymFormula.R")
tmpfun <- get("model.matrix.mFormula", envir = asNamespace("mlogit"))
environment(mymFormula) <- environment(tmpfun)
attributes(mymFormula) <- attributes(tmpfun) # don't know if this is really needed
assignInNamespace("model.matrix.mFormula", mymFormula, ns="mlogit")
mymFormula.R是一个 R 脚本,我在其中复制/粘贴了 mlogit:::model.matrix.mFormula 的内容并添加 mymFormula <-之前 function在文件顶部调用。

我查看了 mlogit:::model.matrix.mFormula的内容通过输入 trace(mlogit:::model.matrix.mFormula, edit=TRUE)在 RStudio 中。 (感谢 this answer 关于如何做到这一点的帮助。)

关于R mlogit 包 : use LAPACK instead of LINPACK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586369/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com