在Stata和R中,Logit回归的不同鲁棒标准误差

16

我试图将Stata中的logit回归复制到R中。在Stata中,我使用"robust"选项来获得健壮的标准误差(异方差性一致的标准误差)。我能够复制出与Stata完全相同的系数,但是我无法通过"sanwich"包获得相同的健壮的标准误差。

我尝试了一些OLS线性回归例子;似乎R和Stata的sandwich估计器给我相同的OLS健壮标准误差。 有人知道Stata如何为非线性回归计算三明治估计量吗? 在我的情况下是logit回归?

谢谢!

代码已附:

library(sandwich)
library(lmtest)    
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")    
mydata$rank<-factor(mydata$rank)    
myfit<-glm(admit~gre+gpa+rank,data=mydata,family=binomial(link="logit"))    
summary(myfit)    
coeftest(myfit, vcov = sandwich)    
coeftest(myfit, vcov = vcovHC(myfit, "HC0"))    
coeftest(myfit, vcov = vcovHC(myfit))    
coeftest(myfit, vcov = vcovHC(myfit, "HC3"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC1"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC2"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC"))    
coeftest(myfit, vcov = vcovHC(myfit, "const"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC4"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC4m"))    
coeftest(myfit, vcov = vcovHC(myfit, "HC5"))    

Stata:

use http://www.ats.ucla.edu/stat/stata/dae/binary.dta, clear    
logit admit gre gpa i.rank, robust    

请参阅 http://www.stata.com/manuals13/p_robust.pdf 上的文档。 - Nick Cox
你可以包含 stata 的结果吗?我无法访问。但是看起来 "HC1" 应该对应于 stata 的 "robust" 选项。 - Jesse Anderson
1个回答

34

Stata默认的所谓“鲁棒”标准误差对应于同名包中的sandwich()函数计算的内容。唯一的区别是有限样本调整的处理方式。在sandwich(...)函数中,默认情况下根本不进行任何有限样本调整,即三明治除以观测量n的倒数。或者,可以使用sandwich(..., adjust = TRUE),它将三明治除以1 / (n-k),其中k是回归器的数量。而Stata则除以1/(n-1)。

当然,在渐近意义下,它们没有任何区别。除了一些特殊情况(例如OLS线性回归)之外,没有理由认为1 / (n-k)或1 / (n-1)在有限样本中起到“正确”的作用(例如无偏性)。至少就我所知。

因此,要获得与Stata相同的结果,您可以执行以下操作:

sandwich1 <- function(object, ...) sandwich(object) * nobs(object) / (nobs(object) - 1)
coeftest(myfit, vcov = sandwich1)

这会产生

z test of coefficients:

              Estimate Std. Error z value  Pr(>|z|)    
(Intercept) -3.9899791  1.1380890 -3.5059 0.0004551 ***
gre          0.0022644  0.0011027  2.0536 0.0400192 *  
gpa          0.8040375  0.3451359  2.3296 0.0198259 *  
rank2       -0.6754429  0.3144686 -2.1479 0.0317228 *  
rank3       -1.3402039  0.3445257 -3.8900 0.0001002 ***
rank4       -1.5514637  0.4160544 -3.7290 0.0001922 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

仅供记录:在二元响应情况下,“健壮”的标准误差对任何东西都不健壮。只要模型被正确指定,它们是一致的,可以使用它们,但它们不能防范模型中的任何错误规定。因为三明治标准误差工作的基本假设是模型方程(或更准确地说是相应的得分函数)被正确指定,而模型的其余部分可能被错误规定。然而,在二元回归中,由于模型方程只包括平均值(=概率),似然函数分别为平均值和1-平均值,因此没有误差规定的余地。这与线性或计数数据回归形成对比,其中可能存在异方差性、过度离散等问题。


在二元反应情况下,“鲁棒”标准误差对任何东西都不具有鲁棒性。这些“鲁棒”SE在线性概率模型情况下是否对任何事物具有鲁棒性?我的直觉是,由于LPM中的误差不能与任何回归器独立(它们是$X$的函数,如$\epsilon$为$1-X\beta$或$-X\beta$),异方差-鲁棒SE不会提供太多的保护,如果有的话... - landroni
1
在LPM中,您几乎肯定错误地指定了均值/期望函数,因为没有任何东西可以保证期望在[0,1]之间。因此,参数估计是不一致的,标准误差也无法增加任何鲁棒性。 - Achim Zeileis
这并不产生与STATA鲁棒标准误差相同的结果。 - robertspierre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接