15

Stata から R へのロジット回帰を複製しようとしています。Stata では、オプション「ロバスト」を使用して、ロバストな標準誤差 (異分散一貫性のある標準誤差) を取得します。Stata からまったく同じ係数を複製できますが、パッケージ「サンドイッチ」では同じ堅牢な標準誤差を得ることができません。

OLS 線形回帰の例をいくつか試しました。R と Stata のサンドイッチ推定量は、OLS に対して同じ堅牢な標準誤差を与えてくれるようです。Stata が非線形回帰 (私の場合はロジット回帰) のサンドイッチ推定量を計算する方法を知っている人はいますか?

ありがとうございました!

付属のコード: in 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    
4

1 に答える 1

29

Stata のデフォルトのいわゆる「堅牢な」標準誤差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 - 平均であるため、誤指定の余地はありません。これは、不均一分散や過分散などの可能性がある線形またはカウント データ回帰とは対照的です。

于 2014-12-08T22:50:38.070 に答える