我正在尝试对包含超过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将因子加载到内存中,如果存在很多因子值,后者将不会显着提高内存使用率。
是否有人知道在我所描述的数据集上执行上述回归的其他方法,而无需求助于具有更多内存的机器?
答案 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。