使用stargazer()的lm()中的稳健标准错误



我读了很多关于将简单的稳健选项从STATA复制到R以使用稳健标准错误的痛苦。我复制了以下方法:StackExchange和经济理论博客。它们有效,但我面临的问题是,如果我想使用stargazer函数打印结果(这将打印Latex文件的.tex代码(。

以下是我的问题:

reg1 <-lm(rev~id + source + listed + country , data=data2_rev)
stargazer(reg1)

这将R输出打印为.tex代码(非鲁棒SE(。如果我想使用鲁棒SE,我可以使用三明治包,如下所示:

vcov <- vcovHC(reg1, "HC1")

如果我现在使用stargazer(vcov(,则只打印vcovHC函数的输出,而不打印回归输出本身。

使用包lmtest(),可以至少打印估计器,但不打印观测值、R2、adj.R2、残差、残差和F-统计量。

lmtest::coeftest(reg1, vcov. = sandwich::vcovHC(reg1, type = 'HC1'))

这会产生以下输出:

t test of coefficients:
Estimate Std. Error t value Pr(>|t|)   
(Intercept) -2.54923    6.85521 -0.3719 0.710611   
id           0.39634    0.12376  3.2026 0.001722 **
source       1.48164    4.20183  0.3526 0.724960   
country     -4.00398    4.00256 -1.0004 0.319041   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

如何添加或获得具有以下参数的输出?

Residual standard error: 17.43 on 127 degrees of freedom
Multiple R-squared:  0.09676,   Adjusted R-squared:  0.07543 
F-statistic: 4.535 on 3 and 127 DF,  p-value: 0.00469

有人面临同样的问题,可以帮助我吗?如何在lm函数中使用稳健的标准误差并应用stargazer函数?

您已经计算出了稳健的标准误差,有一种简单的方法可以将其包含在stargazer输出中:

library("sandwich")
library("plm")
library("stargazer")
data("Produc", package = "plm")
# Regression    
model <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
data = Produc, 
index = c("state","year"),
method="pooling")
# Adjust standard errors
cov1         <- vcovHC(model, type = "HC1")
robust_se    <- sqrt(diag(cov1))
# Stargazer output (with and without RSE)
stargazer(model, model, type = "text",
se = list(NULL, robust_se))

在此处找到解决方案:https://www.jakeruss.com/cheatsheets/stargazer/#robust-标准错误复制statas鲁棒选项

更新我不太喜欢F-Tests。人们正在讨论这些问题,例如。https://stats.stackexchange.com/questions/93787/f-test-formula-under-robust-standard-error

当你跟随http://www3.grips.ac.jp/~yamanota/讲师_备注_9_赫特斯基基性

"异方差稳健t统计量可以通过将OSL估计器除以其稳健标准误差(对于零零假设(来获得。然而,通常的F统计量是无效的。相反,我们需要使用异方差稳健Wald统计量。">

并在这里使用Wald统计?

这是一个使用coefftest的相当简单的解决方案:

reg1 <-lm(rev~id + source + listed + country , data=data2_rev)
cl_robust <- coeftest(reg1, vcov = vcovCL, type = "HC1", cluster = ~ 
country)
se_robust <- cl_robust[, 2]
stargazer(reg1, reg1, cl_robust, se = list(NULL, se_robust, NULL))

请注意,我只是在输出中包含cl_robust,以验证结果是否相同。

相关内容

  • 没有找到相关文章

最新更新