在 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 = NULL
和 t = 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
可以正常工作
我尝试使用 -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 = NULL
和 t = 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
可以正常工作