首页 文章

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

提问于
浏览
13

我试图复制从Stata到R的logit回归 . 在Stata中我使用选项“robust”来获得强大的标准误差(异方差性一致的标准误差) . 我能够从Stata中复制完全相同的系数,但是我无法使用“三明治”包具有相同的强大标准误差 .

我尝试了一些OLS线性回归的例子;看起来R和Stata的三明治估算器给了我同样强大的OLS标准误差 . 有没有人知道Stata如何计算非线性回归的三明治估计量,在我的例子中是logit回归?

谢谢!

附加代码:在R中:

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"))

塔塔:

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

1 回答

  • 25

    Stata中默认的所谓"robust"标准错误对应于同名包中的 sandwich() 计算 . 唯一的区别是有限样本调整是如何完成的 . 在 sandwich(...) 函数中,默认情况下根本不进行有限样本调整,即三明治除以1 / n,其中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 - 均值 . 这与线性或计数数据回归形成对比,其中可能存在异方差性,过度离散等 .

相关问题