最小二乗回帰関数をヘテロスケダスティック修正標準エラーに適合させるためのStata出力に最もよく似たR実装を見つけたいと思います。具体的には、修正された標準誤差を「要約」に含め、仮説検定の最初のラウンドで追加の計算を行う必要がないようにしたいと思います。私はEviewsとStataが提供するのと同じくらい「クリーン」なソリューションを探しています。
これまでのところ、「lmtest」パッケージを使用して私が思いつくことができる最高のものは次のとおりです。
model <- lm(...)
coeftest(model, vcov = hccm)
これにより、必要な出力が得られますが、その目的のために「coeftest」を使用しているようには見えません。また、R ^ 2やF統計などを読み取るには、誤った標準エラーの要約を使用する必要があります。動的Rがどのように与えられるかを考えると、この問題には「1行」の解決策が存在するはずです。
ありがとう
Lmtestパッケージのcoeftest
は順調です。 sandwich package を見てください。これは、この機能を含み、すでに見つけた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
_
私はあなたが探しているものを正確に実行するR関数を見つけました。追加の計算を行わなくても、堅牢な標準誤差が得られます。 lm.objectでsummary()
を実行し、パラメーターrobust=T
を設定すると、Stataのような異分散性の一貫した標準エラーが返されます。
summary(lm.object, robust=T)
この関数は https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/ にあります。
estimatr
パッケージ の_lm_robust
_を使用した1行のソリューションがあり、CRAN install.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」標準エラーです。これはStataのデフォルトのrob
標準エラーです。 _"classical", "HC0", "HC1", "HC2", "HC3"
_およびさまざまなクラスター化された標準エラー(Stataに一致するものを含む)も取得できます。