2

我正在尝试对包含超过 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 加载到内存中的,如果存在许多因子值,后者不会显着提高内存使用率。

有没有人知道其他方法可以在我描述的数量级的数据集上执行上述回归,而不必求助于内存明显更多的机器?

4

2 回答 2

2

您应该尝试使用 lfe 包,它正是为此目的而设计的:

library(lfe)
...
out <- felm(y ~ 0|a+b, data=d)
fe <- getfe(out)

该方法的证明可以在这里找到:http ://www.sciencedirect.com/science/article/pii/S0167947313001266

这是一篇关于它的 R 期刊文章:http: //journal.r-project.org/archive/2013-2/gaure.pdf

于 2014-04-22T22:41:43.637 回答
0

如果您贬低变量(按类别),您可以获得固定效应的相同数学含义。因此,与其为每个假人找到一个常数,不如说是贬低它。贬低会非常快,因为它会被矢量化。

Edit1:有关数学证明,请参见 Green 2012 p.400-401。

于 2014-02-12T02:09:22.403 回答