Regresja z Heteroskedastycznością skorygowane błędy Standardowe
Chciałbym znaleźć implementację R, która najbardziej przypomina wyjście Stata dla dopasowania funkcji regresji najmniejszych kwadratów z Heteroskedastycznymi poprawkami błędów standardowych. W szczególności chciałbym, aby skorygowane błędy standardowe były w "podsumowaniu" i nie musiały wykonywać dodatkowych obliczeń dla mojej początkowej rundy testowania hipotez. Szukam rozwiązania, które jest równie "czyste" jak to, co zapewniają Eviews i Stata.
Jak na razie używam pakietu "lmtest" najlepiej jak potrafię wymyśl to:
model <- lm(...)
coeftest(model, vcov = hccm)
Daje mi to wyjście, które chcę, ale wydaje się, że nie używa "coeftest" DO OKREŚLONEGO CELU. Musiałbym również użyć podsumowania z błędnymi błędami standardowymi, aby odczytać statystykę R^2 I F itp. Uważam, że powinno istnieć "jednoliniowe" rozwiązanie tego problemu, biorąc pod uwagę, jak dynamiczne jest R.
Thanks
3 answers
Myślę, że jesteś na dobrej drodze z coeftest
w pakiecie lmtest. Zapoznaj się z pakietem sandwich, który zawiera tę funkcjonalność i został zaprojektowany do współpracy z pakietem lmtest, który już znalazłeś.
> # 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
Aby uzyskać test F, spójrz na funkcję 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
Zawsze możesz przygotować prostą funkcję łączenia tych dwóch dla Ciebie, jeśli chcesz one-liner...
Jest wiele przykładów w obliczeń ekonometrycznych z Estymatory macierzy kowariancji HC i HAC winieta, która jest dostarczana z pakietem sandwich łączącym lmtest i sandwich, aby zrobić to, co chcesz.
Edit: jednolinijkowy może być tak prosty jak:
mySummary <- function(model, VCOV) {
print(coeftest(model, vcov. = VCOV))
print(waldtest(model, vcov = VCOV))
}
Które możemy użyć w ten sposób (na przykładach z góry):
> 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-27 22:06:26
Znalazłem funkcję R, która robi dokładnie to, czego szukasz. Zapewnia solidne błędy standardowe bez konieczności wykonywania dodatkowych obliczeń. Biegasz summary()
na lm.obiekt i jeśli ustawisz parametr robust=T
to zwróci ci stata-jak heteroscedasticity spójne błędy standardowe.
summary(lm.object, robust=T)
Możesz znaleźć funkcję na https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 18:12:43
Jest teraz rozwiązanie jednoliniowe z wykorzystaniem lm_robust
z estimatr
Pakiet , który można zainstalować z 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
Możesz również uzyskać tidy output:
> 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
Błędy standardowe "stata"
domyślnie są to błędy standardowe "HC1", które są domyślnymi błędami standardowymi rob
W Stata. Możesz również uzyskać "classical", "HC0", "HC1", "HC2", "HC3"
i różne klastrowe błędy standardowe (w tym te, które pasują do Stata).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 17:50:00