我有两个非常简单的回归:
foo <- lm(log(y*30) ~ x, data=myDt[y > 0])
bar <- lm(log(y*30) ~ x + d1 + d2,
data=myDt[y > 0])
其中d1
,d2
是具有许多不同值的factor
变量并且是. 请注意,对应的线性模型比 轻得多。如果有的话,应该是需要时间的。myDt
data.table
foo
bar
bar
我可以毫无问题地运行
stargazer(bar, type='text',
omit=c('d1', 'd2'), omit.labels=c('d1', 'd2')
)
运行它可能需要 10 秒。foo
使用而不是运行它bar
甚至更快。但是,如果我同时运行它,我会卡住:
stargazer(foo, bar, type='text',
omit=c('d1', 'd2'), omit.labels=c('d1', 'd2')
)
. 几分钟后,我放弃了。新尝试,一小时,仍在运行。第二次尝试:3h30 分钟后完成:
=======================================================================
Dependent variable:
---------------------------------------------------
log(tentgelt * 30)
(1) (2)
-----------------------------------------------------------------------
x -0.00001*** 0.00001
(0.00000) (0.0001)
Constant 6.857*** 4.711***
(0.017) (1.130)
-----------------------------------------------------------------------
d1 No Yes
d2 No Yes
-----------------------------------------------------------------------
Observations 4,858 4,858
R2 0.002 0.672
Adjusted R2 0.002 0.137
Residual Std. Error 1.160 (df = 4856) 1.078 (df = 1847)
F Statistic 10.001*** (df = 1; 4856) 1.256*** (df = 3010; 1847)
考虑到带假人的线性模型运行得相当顺利,我曾期望包含不带假人的模型不会引起这样的问题。有什么解决方法吗?
可重现的例子
好吧,我设法创建了一些仍然可以证明行为的假数据。从这里下载为 .csv ,然后运行
myDt = as.data.table(read.csv('test.csv'))
myDt[, c('d1', 'd2'):=list(factor(d1),factor(d2))]
foo <- lm(log(y*30) ~ x, data=myDt[y > 0])
bar <- lm(log(y*30) ~ x + d1 + d2,
data=myDt[y > 0])
require(stargazer)
# this one should run quite quickly
stargazer(bar, type='text', omit=c('d1', 'd2'))
# this one takes forever.
stargazer(foo, bar, type='text', omit=c('d1', 'd2'))