在 R 中使用 stargazer 在回归输出中包含 t 统计量

Including t statistics in regression output using stargazer in R

我尝试使用 -stargazer- 函数将三个回归纳入一个 table。我有以下代码:

library(Jmisc)
library(tidyverse)
library(sandwich)
library(lmtest)
library(multiwayvcov)
library(stargazer)

set.seed(123)
df <- data.frame(
  x1 = rnorm(10, mean=0, sd=1),
  x2 = rnorm(10, mean=0, sd=1),
  y = rnorm(10, mean=0, sd=1)
)

r1 <- lm(y ~ x1 + x2, df)
cov1 <- vcovHC(r1, type="HC1", cluster="clustervar")
robust.se1 <- sqrt(diag(cov1))
t1 <- coef(r1)/robust.se1

r2 <- lm(y ~ x1, df)
cov2 <- vcovHC(r2, type="HC1", cluster="clustervar")
robust.se2 <- sqrt(diag(cov2))
t2 <- coef(r2)/robust.se2

r3 <- lm(y ~ x2, df)
cov3 <- vcovHC(r3, type="HC1", cluster="clustervar")
robust.se3 <- sqrt(diag(cov3))
t3 <- coef(r3)/robust.se2

stargazer(r1, r2, r3, 
se = NULL, 
t = list(t1, t2, t3), 
align=TRUE, 
type="html", 
nobs=TRUE, 
out="StargazerTest.txt")

生成的 table 报告标准错误,而不是我创建的 t 统计量。这很可能是由于底部的 -stargazer- 功能。我已经查找了它的目录,但仍然不明白如何让它做我想做的事。

here 所述,您可以使用 report 指定您想要的值(自 stargazer 5.0 起)。在您的情况下,删除 se = NULLt = list(t1, t2, t3) 并输入:

report = ('c*t')

如:

stargazer(r1, r2, r3, 
          report = ('c*t'), 
          align=TRUE, 
          type="html", 
          nobs=TRUE, 
          out="StargazerTest.txt")

编辑: 因为你需要使用稳健标准误差,你应该使用函数coeftest(库lmtest)而不是计算稳健标准误差手动标准错误。以下是您的回归之一的示例:

library(Jmisc)
library(tidyverse)
library(sandwich)
library(lmtest)
library(multiwayvcov)
library(stargazer)

set.seed(123)
df <- data.frame(
  x1 = rnorm(10, mean=0, sd=1),
  x2 = rnorm(10, mean=0, sd=1),
  y = rnorm(10, mean=0, sd=1)
)

r1 <- lm(y ~ x1 + x2, df)
cov1 <- vcovHC(r1, type="HC1", cluster="clustervar")
robust.se1 <- sqrt(diag(cov1))
t1 <- coef(r1)/robust.se1

foo <- coeftest(r1, vcov = vcovHC(r1, type = "HC1"))

stargazer(foo,  
          report = ('c*t'), 
          align=TRUE, 
          type="html", 
          nobs=TRUE,
          out="StargazerTest.txt")

请注意 foo 给出与 t1 相同的 t 值,但还显示系数、se 等,这使得 stargazer 可以正常工作