我想在同一个回归表中为每个系数打印两种类型的标准错误(例如,健壮而不是)。例如:
# 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]
答案 0 :(得分:1)
这是一个快速而肮脏的解决方案:
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
)
答案 1 :(得分:0)
只是为了建立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初学者更容易实现。