计算大型数据集的多个固定效应

时间:2014-02-12 01:56:47

标签: r regression fixed effects ff

我正在尝试对包含超过4000000行的CSV数据集中的两个因子变量执行固定效果回归。这些变量可以分别假设大约140000和50000个不同的整数值。

我最初尝试在具有8 Gb内存的Linux机器上使用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将因子加载到内存中,如果存在很多因子值,后者将不会显着提高内存使用率。

是否有人知道在我所描述的数据集上执行上述回归的其他方法,而无需求助于具有更多内存的机器?

2 个答案:

答案 0 :(得分:2)

您应该尝试使用包lfe,它的设计正是为了这个目的:

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

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

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

答案 1 :(得分:1)

如果你要贬低变量(按类别),你可以得到固定效应的相同数学意义。所以,不是每个虚拟物找到一个常数,而是贬低它。并且贬低将非常快,因为它将被矢量化。

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