【发布时间】:2018-04-24 14:19:30
【问题描述】:
我正在尝试对包含约 34,000 个观察值的面板数据集运行合并 OLS 回归。在 R 中调用 lm() 时,此过程需要很长时间并最终消耗超过 30GB 的内存(因此,在估计回归时它会超出 RAM)。事实上,我不得不强行退出程序,因为我的电脑几乎崩溃了。
当我在 Stata 中(在同一个数据集上)运行完全相同的回归时,这个过程大约需要 1 秒。我不知道这里发生了什么,我做错了吗?
R 代码:
pooled1=lm(ret ~ l_ret + l_btm + l_roe, data=panel)
状态码:
reg ret l_ret l_btm l_roe, r
【问题讨论】:
-
尝试在 R 中重现您的问题。
lm(a ~ b + c, data = data.frame(a = rnorm(34000, 5, 2), b = rnorm(34000, 7, 2), c = c(rep(1, 17000), rep(2, 17000))))在我的计算机上花费不到一秒钟的时间。您是否设法生成导致类似问题的示例数据集? -
亲爱的@Mikko,感谢您的回答。确实,您的复制品在 R 中对我来说效果很好。因此,显然肯定还有其他事情发生。然而,查看 R 和 Stata 的数据浏览器,加载的数据集(面板)显示相同......(我已经用这些截图更新了帖子)。
-
请粘贴
str()和summary()你的data.frame结果。 -
将
l_ret转换为数字并重试 -
啊当然。有趣的是,Stata 是如何自动执行此操作的。谢谢@missuse 和 Mikko!我会用解决方案更新帖子。
标签: r memory time-series regression stata