R jupyter笔记本中具有聚类标准错误的回归表?

时间:2019-08-16 23:26:15

标签: r regression

我在R中使用export_summs来制作回归表,但是当我使用coeftest来获取聚类标准错误时,该表不再报告N或{{1} }正确地放在这些列中。系数和标准误差看起来不错,只是缺少那些额外的统计信息。 (我在Stata中经常使用outreg2,这要简单得多。)

我尝试按照此处上一个示例(https://hughjonesd.github.io/huxtable/huxreg.pdf)的建议使用R^2,没有任何变化。

tidy_override()

发出警告并输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

在这种情况下,错误消息非常清楚:broom程序包没有用于glance对象的coeftest方法。这不是偶然的-coeftest对象的性质不允许broom计算模型摘要统计信息。它保留了有关原始模型的很少信息:

> str(reg1)
 'coeftest' num [1:2, 1:4] 0.0483 0.0153 0.0329 0.0341 1.4668 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:2] "(Intercept)" "x"
  ..$ : chr [1:4] "Estimate" "Std. Error" "t value" "Pr(>|t|)"
 - attr(*, "method")= chr "t test of coefficients"
 - attr(*, "df")= int 998

一种选择是使用lm_robust包中的estimatr函数。它返回具有glancetidy都可接受的可靠标准错误的对象:

 reg2 <- estimatr::lm_robust(y ~ x
            , data = datareg)
 export_summs(reg0, reg2,
    model.names = c("Basic", "Cluster SE"), number_format = NA )


──────────────────────────────────────────────────────────────────
                         Basic                  Cluster SE        
              ────────────────────────────────────────────────────
  (Intercept)      0.0482678107925753        0.0482678107925755   
                  (0.032842483472098)       (0.0329070612421128)  
  x                0.0152928320138191        0.015292832013819    
                  (0.0333488383365212)      (0.034094868727288)   
              ────────────────────────────────────────────────────
  N             1000                      1000                    
  R2               0.000210664993144995      0.000210665          
──────────────────────────────────────────────────────────────────
  *** p < 0.001; ** p < 0.01; * p < 0.05.                         

Column names: names, Basic, Cluster SE

答案 1 :(得分:0)

Huxtable作者在这里。这是使用tidy_override的方法:

library(generics)
library(huxtable)
library(jtools)
library(lmtest)
library(sandwich)

datareg <- NULL
datareg$y <- rnorm(1000)
datareg$x <- rnorm(1000)
datareg$cluster_var <- rnorm(1000)
datareg <- data.frame(datareg)

reg0 <- lm(y ~ x, data = datareg)

reg1 <- coeftest(reg0, vcovCL, cluster = datareg$cluster_var)

reg1 <- tidy_override(reg1, glance = list(nobs = 1000L, r.squared = 0.000), 
      extend = TRUE) # extend = TRUE is important
export_summs(reg0, reg1, model.names = c("Basic", "Cluster SE"))

哪个给:

────────────────────────────────────────────────────
                       Basic          Cluster SE    
                 ───────────────────────────────────
  (Intercept)              -0.01            -0.01   
                           (0.03)           (0.03)  
  x                        -0.05            -0.05   
                           (0.03)           (0.03)  
                 ───────────────────────────────────
  N                      1000             1000      
  R2                        0.00             0.00   
────────────────────────────────────────────────────
  *** p < 0.001; ** p < 0.01; * p < 0.05.           

Column names: names, Basic, Cluster SE

这非常棘手,感谢您的困难...结果,我改善了huxreg中的错误报告!