打印具有多个标准误差的回归表

Print regression tables with multiple standard errors

我想在同一个回归中为每个系数(例如,稳健的和不稳健的)打印两种类型的标准误差 table。例如:

# Simulate some data    
dat <- data.frame(y=runif(100), matrix(rnorm(200), 100, 2))
fit <- lm(y ~ X1 + X2, data=dat)

# Compute robust SE
library(sandwich)
cov1        <- vcovHC(fit, type="HC")
robust.se  <- sqrt(diag(cov1))

# print regression table in latex
library(stargazer)
stargazer(fit)

如何在方括号中的每个系数下方添加稳健的 SE 作为附加行?

类似于:

    Model 1   

X1 0.012
   (0.14) 
   [0.21]

X2 0.72
   (0.64) 
   [0.88]

这是一个快速而肮脏的解决方案:

xtab <- stargazer(fit)
xtab2 <- stargazer(fit, se=robust.se)
n <- length(coef(fit))
sq <- seq(16, 16 + (n-1)*3, by=3)
xtab[sq] <- paste(xtab2[sq], " & & \\\n", sep="\n")

cat(xtab, sep="\n")

此过程基本上用稳健的标准错误(和另一个空行)替换了 stargazer 打印的空行。人们可能会进一步决定通过用方括号替换圆来预处理 xtab2(例如,使用 gsub

只是为了在 mrb 上建立(但无法对其发表评论):

xtab <- stargazer(fit)
xtab2 <- stargazer(fit, se=robust.se)
n <- length(coef(fit))
sq <- seq(16, 16 + (n-1)*3, by=3) #16 is the first line in which stargazer (usually) puts the first SE. From there every third line is a SE...

xtab2[sq2]<-gsub("\(","\[",xtab2[sq2]) #For replacing brackets
xtab2[sq2]<-gsub("\)","\]",xtab2[sq2]) 

xtab[sq] <- paste(xtab2[sq], " & & \\\n", sep="\n")

sink("Table.tex", append=FALSE, split=FALSE) #for getting your LaTex ready table
cat(xtab, sep="\n")
sink()

从这里开始,只需复制和粘贴即可。我希望这能让其他 R 初学者更容易实施。