【发布时间】:2021-10-16 06:25:51
【问题描述】:
我有一个包含大约 200 万个人的数据集。数据集的简化版本包含三种类型的变量:(1)因变量(y),(2)协变量(x1,x2),(3)区域固定效应(reg,大约 200 万)。
(对于区域级别的第二次回归)我需要提取区域固定效应及其标准误。主要问题是我的电脑卡住了,显然是因为内存不足(我有 16GB,4 核 macbook pro),而目前我无法使用更强大的机器。
使用的策略:
-
简单的
lm(y ~ x1 + x2 + reg,data=DT)卡住了- 我已经尝试减少区域假人的数量(例如,在不同地区投放人员),当我有大约 500 个假人时,这很有效。尽管如此,这意味着要删除我一半的数据集。
-
使用 lm_robust:
-
lm_robust(y ~ x1 + x2, fixed_effects= ~ reg, se_type='stata',data = DT)有效,比较快,给出固定效应(fixed_effects)的系数,但不给出标准误差 -
lm_robust(y ~ x1 + x2 + reg, se_type='stata',data = DT)给了我固定效应系数和标准误差,但是当我使用超过 500 个区域时会卡住
-
使用 felm 或 feols
felm(y ~ x1 + x2 | reg, data=DT)feols(y ~ x1 + x2 | reg, data=DT)
两种方法都有效,速度非常快,但输出中没有 FE 系数和标准误差
我考虑过的一个策略是使用 felm/feols 并使用输出“residuals”(整个系统的残差,有假人)和“r.residuals”(没有假人的预测产生的残差)退出区域残差(即对于区域 i,hat(reg)_i = (y-hat(b1)*x1 - hat(b2)*x2 - hat(reg_i)) - (y-hat(b1)*x1 - hat( b2)*x2). 问题是我不会得到标准错误. 一种解决方案是使用引导来计算标准错误. 这应该可以工作(我还没有尝试过), 但是好像太复杂了。
【问题讨论】:
-
试试 biglm 包。
-
感谢您的建议。但我遇到了同样类型的问题。当有很多固定效果我的电脑无法处理时
标签: r regression large-data