如何使用Stargazer中的包括Cluster-Robust标准误差在内的多个线性回归模型创建一个输出

时间:2019-12-28 08:10:43

标签: r regression stargazer standard-error

我知道如何创建线性回归模型lm,以及如何使用summary函数来获取聚类标准误差并将其添加到stargazer输出中:

# estimate models
ols1 <- lm(y ~ x) 

# summary with cluster-robust SEs
summary(ols1, cluster="cluster_id") 

# create table in stargazer
stargazer(ols1, se=list(coef(summary(ols1,cluster = c("cluster_id")))[, 2]), type = "text")

如果我想创建一个具有多个回归模型和聚类标准误差的观星者输出,有人知道该代码的样子吗?

代码逻辑如下:

第一步:创建lm模型

ols1 <- lm(y ~ x) 
ols2 <- lm(y ~ x + z) 
ols3 <- lm(y ~ x + z + a) 
ols2 <- lm(y ~ x + z + a + b) 

2个步骤:包括标准错误

summary(ols1, cluster="cluster_id")
summary(ols2, cluster="cluster_id")
summary(ols3, cluster="cluster_id")
summary(ols4, cluster="cluster_id")

3个步骤:使用4种不同的模型创建一个输出

stargazer(ols1,ols2,ols3,ols4, type="html", dep.var.labels=c("ROA"), intercept.bottom = FALSE,
          out="OLS1")

我认为步骤1 步骤2 并不重要,但我不知道如何为步骤3 设置代码。 / p>

我不知道如何在步骤3 中实现以下代码:

# create table in stargazer
stargazer(ols1, se=list(coef(summary(ols1,cluster = c("cluster_id")))[, 2]), type = "text")

任何人都可以帮忙吗?

非常感谢您!!!

1 个答案:

答案 0 :(得分:0)

您已经看到选项se可以处理list。因此,只需将强大的SE保存在其他易于访问的位置,例如:

library("sandwich")
library("plm")
library("stargazer")

data("Produc", package = "plm")

# Regression    
model1 <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
             data = Produc, 
             index = c("state","year"),
             method="pooling")

model2 <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp),
              data = Produc, 
              index = c("state","year"),
              method="pooling")

# Adjust standard errors
cov1         <- vcovHC(model1, type = "HC1")
cov2         <- vcovHC(model2, type = "HC1")
robust_se1    <- sqrt(diag(cov1))
robust_se2    <- sqrt(diag(cov2))

# Stargazer output (with and without RSE)
stargazer(model1, model2, type = "text",
          se = list(robust_se1, robust_se2))

现在,您可以在stargazer中将任何具有强大SE的模型彼此相邻。