Inférence de régression robuste et estimateurs sandwich

10

Pouvez-vous me donner un exemple de l'utilisation d'estimateurs sandwich pour effectuer une inférence de régression robuste?

Je peux voir l'exemple dans ?sandwich, mais je ne comprends pas très bien comment on peut passer de lm(a ~ b, data)( -codé) à une estimation et à une valeur p résultant d'un modèle de régression utilisant la matrice variance-covariance renvoyée par la fonction sandwich.

Remi.b
la source
avez-vous parcouru les exemples de la vignette associée ?
user603
(1) Link fonctionne pour moi. (2) Est-ce une question de codage r? Comment obtenir le Huber-White SE après avoir monté un modèle. Ou autre chose?
charles
@charles 1) En effet ça marche! Je ne sais pas ce qui s'est passé avant. Oui, c'est une question de codage R. 2) Je ne sais pas ce que sont l'erreur standard Huber-White et je ne sais pas comment les calculer en ce moment. Merci de votre aide!
Remi.b
Vous obtenez les valeurs de p et les erreurs standard de la même manière que d'habitude, en substituant l'estimation sandwich de la matrice de variance-covariance à celle des moindres carrés.
Scortchi - Réintégrer Monica
@Scortchi Ok. Et une fois que j'ai ces estimations (OLS ou estimations sandwich), que puis-je en faire?
Remi.b

Réponses:

9

Je pense qu'il y a quelques approches. Je ne les ai pas tous regardés et je ne sais pas lequel est le meilleur:

  1. Le sandwichpaquet:

    library(sandwich)    
    coeftest(model, vcov=sandwich)
    

Mais cela ne me donne pas les mêmes réponses que je reçois de Stata pour une raison quelconque. Je n'ai jamais essayé de comprendre pourquoi, je n'utilise simplement pas ce paquet.

  1. L' rmsensemble: je trouve cela un peu pénible à travailler, mais j'obtiens généralement de bonnes réponses avec un certain effort. Et c'est le plus utile pour moi.

    model = ols(a~b, x=TRUE)    
    robcov(model)
    
  2. Vous pouvez le coder à partir de zéro (voir cet article de blog ). Cela semble être l'option la plus douloureuse, mais remarquablement facile et cette option fonctionne souvent le mieux.

Une explication simple / rapide est que Huber-White ou Robust SE sont dérivés des données plutôt que du modèle, et sont donc robustes à de nombreuses hypothèses de modèle. Mais comme toujours, une recherche rapide sur Google exposera cela en détails atroces si vous êtes intéressé.

Charles
la source
Vous devriez vraiment voir cette réponse ici: stats.stackexchange.com/a/117066/12053
chandler
2
Il aime la façon dont cette réponse suppose implicitement qu'il y a quelque chose de mal avec R, car vous obtenez des résultats différents de Stata. Pour les personnes qui savent comment fonctionnent les estimateurs sandwich, la différence est évidente et facile à corriger. Pour les personnes qui ne savent pas, veuillez simplement lire la vignette (guide)
livrée
10

On peut utiliser une fonction récapitulative alternative pour effectuer une régression robuste.

lm.object <- lm(a~b+c)
summary(lm.object, robust=TRUE)

Pour obtenir des erreurs standard robustes, définissez le paramètre '' robuste '' dans votre fonction de résumé sur TRUE.

L'entrée de blog suivante fournit la fonction et une description détaillée de la fonction: https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

Daniel Kah
la source