Je voudrais trouver l'implémentation R qui ressemble le plus à la sortie Stata pour ajuster une fonction de régression des moindres carrés avec des erreurs standard corrigées hétéroskédastiques. Plus précisément, je voudrais que les erreurs standard corrigées soient dans le "résumé" et que je ne doive pas faire de calculs supplémentaires pour ma première série de tests d'hypothèse. Je recherche une solution aussi "propre" que ce que proposent Eviews et Stata.
Jusqu'à présent, en utilisant le package "lmtest", le mieux que je puisse trouver est:
model <- lm(...)
coeftest(model, vcov = hccm)
Cela me donne la sortie que je veux, mais il ne semble pas utiliser "coeftest" pour son objectif déclaré. Je devrais également utiliser le résumé avec les erreurs standard incorrectes pour lire les statistiques R ^ 2 et F, etc. Je pense qu'il devrait exister une solution "une ligne" à ce problème étant donné la dynamique de R.
Merci
Je pense que vous êtes sur la bonne voie avec coeftest
dans le package lmtest. Jetez un œil au package sandwich qui inclut cette fonctionnalité et est conçu pour fonctionner main dans la main avec le package lmtest que vous avez déjà trouvé.
> # 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
Pour obtenir le test F, regardez la fonction 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
Vous pouvez toujours cuisiner une fonction simple pour combiner ces deux pour vous si vous vouliez le one-liner ...
Il y a beaucoup d'exemples dans la vignette Calcul économétrique avec HC et HAC Covariance Matrix Estimators qui vient avec le paquet de sandwich de relier lmtest et sandwich pour faire ce que vous voulez.
Edit: Un one-liner pourrait être aussi simple que:
mySummary <- function(model, VCOV) {
print(coeftest(model, vcov. = VCOV))
print(waldtest(model, vcov = VCOV))
}
Que nous pouvons utiliser comme ceci (sur les exemples ci-dessus):
> 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
J'ai trouvé une fonction R qui fait exactement ce que vous recherchez. Il vous donne des erreurs standard robustes sans avoir à faire de calculs supplémentaires. Vous exécutez summary()
sur un lm.object et si vous définissez le paramètre robust=T
il vous renvoie des erreurs standard cohérentes d'hétéroscédasticité de type Stata.
summary(lm.object, robust=T)
Vous pouvez trouver la fonction sur https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/
Il existe maintenant une solution sur une seule ligne utilisant lm_robust
Du estimatr
package , que vous pouvez installer à partir de 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
Vous pouvez également obtenir une sortie bien rangée:
> 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
Les erreurs standard "stata"
Sont par défaut des erreurs standard "HC1", qui sont les erreurs standard rob
par défaut dans Stata. Vous pouvez également obtenir "classical", "HC0", "HC1", "HC2", "HC3"
Et diverses erreurs standard en cluster (y compris celles qui correspondent à Stata).