【发布时间】:2014-03-10 03:19:22
【问题描述】:
我正在尝试对包含超过 4000000 行的 CSV 数据集中的两个因子变量执行固定效应回归。这些变量可以分别假设大约 140000 和 50000 个不同的整数值。
我最初尝试在具有 8 Gb 内存的 Linux 机器上使用 R 的 biglm 和 ff 包执行回归,如下所示;但是,这似乎需要太多内存,因为 R 抱怨必须分配一个大小大于我机器上最大值的向量。
library(biglm)
library(ff)
d <- read.csv.ffdf(file='data.csv', header=TRUE)
model = y~factor(a)+factor(b)-1
out <- biglm(model, data=d)
网上的一些研究表明,由于因子是由ff加载到内存中的,如果存在许多因子值,后者不会显着提高内存使用率。
有没有人知道其他方法可以在我描述的数量级的数据集上执行上述回归,而不必求助于内存明显更多的机器?
【问题讨论】:
-
如果有的话,我会尝试从 R 中删除所有其他数据集/对象(同时关闭所有其他项目)。您可以通过使用 rm() 并在 gc() 之后将清除数据释放回内存来做到这一点。
-
我确实确保上述脚本是在 R 会话中运行的唯一代码。无论如何,我发现在具有更多 (32 Gb) 内存的机器上运行脚本可以防止最初的内存投诉,但会迅速导致机器开始使用交换内存并变慢。
-
您目前使用过biglm。我认为您想将 bigglm 与高斯链接一起使用。您应该使用 ffbase 包中的 bigglm.ffdf。 require(ffbase) 和 methods(bigglm) 让你到达那里。您也不需要指定因子(a),a已经是一个因子。
-
a.as.factor 和 b.as.factor 有多少层?
-
140000 和 50000,分别。
标签: r regression fixed effects ff