Подтвердить что ты не робот

Регрессия с исправлением ошибок с использованием гетеросексуальности

Я хотел бы найти реализацию R, которая наиболее похожа на выход Stata для установки функции реверсирования наименьших квадратов с помощью стандартных ошибок с исправлением гетеросексуальности. В частности, я хотел бы, чтобы исправленные стандартные ошибки были в "резюме", и не нужно делать дополнительные вычисления для моего первоначального раунда тестирования гипотез. Я ищу решение, которое является "чистым", как то, что предоставляют Eviews и Stata.

Пока, используя пакет "lmtest", лучшее, что я могу придумать, это:

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

Это дает мне результат, который я хочу, но он, похоже, не использует "coeftest" для заявленной цели. Мне также пришлось бы использовать сводку с неправильными стандартными ошибками для считывания R ^ 2 и F stat и т.д. Я чувствую, что должно существовать однострочное решение этой проблемы, учитывая динамику R.

Спасибо

4b9b3361

Ответ 1

Я думаю, что вы на правильном пути с 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

Вы всегда можете приготовить простую функцию, чтобы объединить эти два для вас, если вы хотите однострочный...

В , которые поставляются с пакетом сэндвич скрепления 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

Ответ 2

Я нашел функцию R, которая делает именно то, что вы ищете. Это дает вам надежные стандартные ошибки, не требуя дополнительных вычислений. Вы запускаете summary() в объекте lm.object, и если вы установите параметр robust=T, он вернет вам повторяющиеся стандартные ошибки Stata-подобной гетероседастичности.

summary(lm.object, robust=T)

Вы можете найти функцию https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/