30

最小二乗回帰関数を不均一分散補正された標準誤差に適合させるためのStata出力に最もよく似たR実装を見つけたいと思います。具体的には、修正された標準誤差を「要約」に入れ、仮説検定の最初のラウンドで追加の計算を行う必要がないようにします。EviewsとStataが提供するものと同じくらい「クリーン」なソリューションを探しています。

これまでのところ、「lmtest」パッケージを使用して、私が思いつくことができる最高のものは次のとおりです。

model <- lm(...)
coeftest(model, vcov = hccm) 

これは私が望む出力を私に与えます、しかしそれはその述べられた目的のために「coeftest」を使用していないようです。また、R ^ 2やF統計などを読み取るために、誤った標準誤差を含む要約を使用する必要があります。Rがどれほど動的であるかを考えると、この問題に対する「1行」の解決策が存在するはずです。

ありがとう

4

3 に答える 3

39

私はあなたがcoeftestパッケージlmtestで正しい軌道に乗っていると思います。この機能を含み、すでに見つけたlmtestパッケージと連携して動作するように設計されたサンドイッチパッケージを見てください。

> # generate linear regression relationship
> # with Homoskedastic variances
> x <- sin(1:100)
> y <- 1 + x + rnorm(100)
> ## model fit and HC3 covariance
> fm <- lm(y ~ x)
> vcovHC(fm)
            (Intercept)           x
(Intercept) 0.010809366 0.001209603
x           0.001209603 0.018353076
> coeftest(fm, vcov. = vcovHC)

t test of coefficients:

            Estimate Std. Error t value  Pr(>|t|)    
(Intercept)  1.01973    0.10397  9.8081 3.159e-16 ***
x            0.93992    0.13547  6.9381 4.313e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

F検定を取得するには、関数を見てくださいwaldtest()

> waldtest(fm, vcov = vcovHC)
Wald test

Model 1: y ~ x
Model 2: y ~ 1
  Res.Df Df      F    Pr(>F)    
1     98                        
2     99 -1 48.137 4.313e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

ワンライナーが必要な場合は、いつでも簡単な関数を作成して、これら2つを組み合わせることができます...

HCおよびHAC共分散行列推定器ビネットを使用した計量経済学コンピューティングには、lmtestとサンドイッチをリンクして必要なことを実行するサンドイッチパッケージに付属する例がたくさんあります。

編集:ワンライナーは次のように単純である可能性があります:

mySummary <- function(model, VCOV) {
    print(coeftest(model, vcov. = VCOV))
    print(waldtest(model, vcov = VCOV))
}

これを次のように使用できます(上記の例で):

> mySummary(fm, vcovHC)

t test of coefficients:

            Estimate Std. Error t value  Pr(>|t|)    
(Intercept)  1.01973    0.10397  9.8081 3.159e-16 ***
x            0.93992    0.13547  6.9381 4.313e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Wald test

Model 1: y ~ x
Model 2: y ~ 1
  Res.Df Df      F    Pr(>F)    
1     98                        
2     99 -1 48.137 4.313e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
于 2010-12-08T09:27:10.627 に答える
10

私はあなたが探しているものを正確に実行するR関数を見つけました。追加の計算を行うことなく、堅牢な標準エラーを提供します。summary()lm.objectで実行し、パラメーターを設定すると、 robust=TStataのような異質性の一貫した標準エラーが返されます。

summary(lm.object, robust=T)

この関数はhttps://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/にあります。

于 2016-08-23T18:01:39.967 に答える
2

これで、CRANからインストールできるパッケージlm_robustからを使用した1行のソリューションがあります。estimatrinstall.packages(estimatr)

> library(estimatr)
> lmro <- lm_robust(mpg ~ hp, data = mtcars, se_type = "stata")
> summary(lmro)

Call:
lm_robust(formula = mpg ~ hp, data = mtcars, se_type = "stata")

Standard error type:  HC1 

Coefficients:
            Estimate Std. Error  Pr(>|t|) CI Lower CI Upper DF
(Intercept) 30.09886    2.07661 4.348e-15 25.85785 34.33987 30
hp          -0.06823    0.01356 2.132e-05 -0.09592 -0.04053 30

Multiple R-squared:  0.6024 ,   Adjusted R-squared:  0.5892 
F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07

また、きちんとした出力を得ることができます:

> tidy(lmro)
         term    estimate std.error      p.value    ci.lower
1 (Intercept) 30.09886054 2.0766149 4.347723e-15 25.85784704
2          hp -0.06822828 0.0135604 2.131785e-05 -0.09592231
     ci.upper df outcome
1 34.33987404 30     mpg
2 -0.04053425 30     mpg

"stata"標準エラーのデフォルトは「HC1」です。これは、 robStataのデフォルトの標準エラーです。"classical", "HC0", "HC1", "HC2", "HC3"また、さまざまなクラスター化された標準エラー(Stataに一致するものを含む)も取得できます。

于 2018-04-18T17:37:56.373 に答える