观星者:多次回归时效率低下

时间:2015-05-01 20:52:13

标签: r stargazer

我有两个非常简单的回归:

foo <- lm(log(y*30) ~ x, data=myDt[y > 0])
bar <- lm(log(y*30) ~ x + d1 + d2, 
          data=myDt[y > 0])

其中d1d2factor个变量,很多不同的值,而myDtdata.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')
          )

。几分钟后,我放弃了。 新尝试,一小时,仍在运行第二次尝试:在3小时30分钟后完成

=======================================================================
                                    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)

鉴于带有假人的线性模型运行得相当顺利,我原本预计包含模型而没有假人不会导致这样的问题。这有什么解决方法吗?

可重复的例子

好吧,我设法创建了一些仍然可以证明行为的虚假数据。从here下载为.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'))

1 个答案:

答案 0 :(得分:0)

我与作者有过接触。这在包中确实是一个问题。我预计在接下来的一个月左右会有一个修复。