J'ai essayé de reproduire les résultats de l'option Stata robust
dans R. J'ai utilisé la rlm
commande du package MASS ainsi que la commande lmrob
du package "robustbase". Dans les deux cas, les résultats sont assez différents de l’option "robuste" de Stata. Quelqu'un peut-il suggérer quelque chose dans ce contexte?
Voici les résultats que j'ai obtenus lorsque j'ai exécuté l'option robuste dans Stata:
. reg yb7 buildsqb7 no_bed no_bath rain_harv swim_pl pr_terrace, robust
Linear regression Number of obs = 4451
F( 6, 4444) = 101.12
Prob > F = 0.0000
R-squared = 0.3682
Root MSE = .5721
------------------------------------------------------------------------------
| Robust
yb7 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
buildsqb7 | .0046285 .0026486 1.75 0.081 -.0005639 .009821
no_bed | .3633841 .0684804 5.31 0.000 .2291284 .4976398
no_bath | .0832654 .0706737 1.18 0.239 -.0552904 .2218211
rain_harv | .3337906 .0395113 8.45 0.000 .2563289 .4112524
swim_pl | .1627587 .0601765 2.70 0.007 .0447829 .2807346
pr_terrace | .0032754 .0178881 0.18 0.855 -.0317941 .0383449
_cons | 13.68136 .0827174 165.40 0.000 13.51919 13.84353
Et voici ce que j’ai obtenu dans R avec l’option lmrob:
> modelb7<-lmrob(yb7~Buildsqb7+No_Bed+Rain_Harv+Swim_Pl+Gym+Pr_Terrace, data<-bang7)
> summary(modelb7)
Call:
lmrob(formula = yb7 ~ Buildsqb7 + No_Bed + Rain_Harv + Swim_Pl + Gym + Pr_Terrace,
data = data <- bang7)
\--> method = "MM"
Residuals:
Min 1Q Median 3Q Max
-51.03802 -0.12240 0.02088 0.18199 8.96699
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.648261 0.055078 229.641 <2e-16 ***
Buildsqb7 0.060857 0.002050 29.693 <2e-16 ***
No_Bed 0.005629 0.019797 0.284 0.7762
Rain_Harv 0.230816 0.018290 12.620 <2e-16 ***
Swim_Pl 0.065199 0.028121 2.319 0.0205 *
Gym 0.023024 0.014655 1.571 0.1162
Pr_Terrace 0.015045 0.013951 1.078 0.2809
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Robust residual standard error: 0.1678
Multiple R-squared: 0.8062, Adjusted R-squared: 0.8059
r
stata
robust
robust-standard-error
utilisateur56579
la source
la source
lmrob
n'est pas la même chose quereg y x, robust
. Google "Erreurs-types R compatibles avec l'hétéroscédasticité". Vous obtiendrez des pages vous expliquant comment utiliser les bibliothèqueslmtest
etsandwich
.Réponses:
Charles y est presque dans sa réponse, mais l'
robust
option de laregress
commande (et d'autres commandes d'estimation de régression) dans Stata permet d'utiliser plusieurs types d'hétéroscédasticité et d'auto-corrélation de puissants estimateurs matriciels à variance-covariance robustes, de même que lacoeftest
fonction dulmtest
paquet son tour dépend des matrices de variance-covariance respectives produites par lavcovHC
fonction dans lasandwich
package.Cependant, les matrices de variance-covariance par défaut utilisées par les deux sont différentes:
1. La matrice de variance-covariance par défaut renvoyée
vcocHC
est ainsi nomméeHC3
pour les raisons décrites dans la page de manuel devcovHC
.2. L’
sandwich
option utilisée par Charles faitcoeftest
appel à laHC0
robuste matrice de variance-covariance.3. Pour reproduire le comportement par défaut de Stata consistant à utiliser l'
robust
option dans un appel à,regress
vous devez demandervcovHC
à utiliser laHC1
matrice de variance-covariance robuste.En savoir plus à ce sujet ici .
L'exemple suivant qui illustre tous les points évoqués ci-dessus est basé sur l'exemple ci- dessous .
La dernière ligne de code ci-dessus reproduit les résultats de Stata:
la source
J'ai trouvé une description sur le site Web suivant qui reproduit l'option «robuste» de Stata dans R.
https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r
En suivant les instructions, il vous suffit de charger une fonction dans votre session R, puis de définir le paramètre '' robuste '' de votre fonction de résumé sur TRUE.
la source
À partir d'avril 2018, je pense que vous voulez le
estimatr
paquet , qui fournit un remplacement presque instantané pourlm
. Plusieurs exemples tirés presque de la documentation:Le
car
package facilite ensuite la réalisation de tests d’hypothèses omnibus pour ces modèles:la source
Je modifierais la question. Vous confondez la régression robuste avec la commande robuste de Stata. Il ne semble y avoir aucun avantage à introduire cette confusion.
Je pense qu'il y a quelques approches. Je ne les ai pas tous regardés et je ne sais pas quel est le meilleur:
Le paquet sandwich:
Mais cela ne me donne pas les mêmes réponses que Stata pour une raison quelconque. Je n'ai jamais essayé de comprendre pourquoi - mais ci-dessus dans les commentaires, une réponse est suggérée - je n'utilise tout simplement pas ce paquet.
Le paquetage rms:
Je trouve cela un peu pénible, mais j'obtiens généralement de bonnes réponses avec quelques efforts. Et c'est le plus utile pour moi.
Vous pouvez le coder à partir de zéro
Voir cet article de blog ( http://thetarzan.wordpress.com/2011/05/28/heteroskedasticity-robust-and-clustered-standard-errard-errors-in-r/ ). Cela semble être l'option la plus douloureuse, mais remarquablement facile, et cette option fonctionne souvent mieux.
la source
robust
commande! (Il y a une commande de programmeur_robust
, non directement pertinente ici.) Pour obtenir des erreurs standard robustes (Huber-Eicker-White-sandwich), l'approche moderne de Stata consiste à spécifiervce(robust)
en option. L'ancienne approche pour spécifier unerobust
option fonctionne toujours. Plus généralement, la confusion causée par la différence entre une régression robuste (etc.) et des SE "robustes" est regrettable.