5 votes

Erreurs standard robustes en grappe dans Stargazer

Quelqu'un sait-il comment obtenir stargazer pour afficher les SE groupés pour lm modèles ? (Et le test F correspondant ?) Si possible, j'aimerais suivre une approche similaire au calcul de SE robustes à l'hétéroscédasticité avec sandwich et les mettre dans stargazer dans le cas de http://jakeruss.com/cheatsheets/stargazer.html#robust-standard-errors-replicating-statas-robust-option .

J'utilise lm pour obtenir mes modèles de régression, et je fais un regroupement par entreprise (une variable de facteur que je n'inclus pas dans les modèles de régression). J'ai également un grand nombre de valeurs NA, ce qui me fait penser à ce qui suit multiwayvcov va être le meilleur paquet (voir le bas de la réponse de landroni ici - Erreurs standard doublement groupées pour les données de panel - et aussi https://sites.google.com/site/npgraham1/research/code ) ? Notez que je ne veux pas utiliser plm .

Edit : Je pense avoir trouvé une solution en utilisant la fonction multiwayvcov paquet...

library(lmtest) # load packages
library(multiwayvcov)

data(petersen) # load data
petersen$z <- petersen$y + 0.35  # create new variable

ols1 <- lm(y ~ x, data = petersen) # create models
ols2 <- lm(y ~ x + z, data = petersen)

cl.cov1 <- cluster.vcov(ols1, data$firmid) # cluster-robust SEs for ols1
cl.robust.se.1 <- sqrt(diag(cl.cov1))
cl.wald1 <- waldtest(ols1, vcov = cl.cov1)

cl.cov2 <- cluster.vcov(ols2, data$ticker) # cluster-robust SEs for ols2
cl.robust.se.2 <- sqrt(diag(cl.cov2))
cl.wald2 <- waldtest(ols2, vcov = cl.cov2)

stargazer(ols1, ols2, se=list(cl.robust.se.1, cl.robust.se.2), type = "text") # create table in stargazer

Le seul inconvénient de cette approche est que vous devez réintroduire manuellement les statistiques F à partir de la base de données de l'enquête. waldtest() pour chaque modèle.

10voto

Flavian Barton Points 116

L'utilisation des paquets lmtest et multiwayvcov entraîne beaucoup de surcharge inutile. La façon la plus simple de calculer les erreurs standard groupées dans R est la méthode modifiée suivante summary() fonction. Cette fonction vous permet d'ajouter un paramètre supplémentaire, appelé cluster, à la conventionnelle summary() fonction. Le post suivant décrit comment utiliser cette fonction pour calculer les erreurs standard groupées dans R :

https://economictheoryblog.com/2016/12/13/clustered-standard-errors-in-r/

Vous pouvez facilement utiliser la fonction summary pour obtenir des erreurs standard groupées et les ajouter à la sortie de stargazer. Sur la base de votre exemple, vous pourriez simplement utiliser le code suivant :

# estimate models
ols1 <- lm(y ~ x) 

# summary with cluster-robust SEs
summary(ols1, cluster="cluster_id") 

# create table in stargazer
stargazer(ols1, se=list(coef(summary(ols1,cluster = c("cluster_id")))[, 2]), type = "text")

3voto

Xing Zhang Points 105

Je recommande lfe qui est beaucoup plus puissant que le paquet lm paquet. Vous pouvez facilement spécifier le cluster dans le modèle de régression :

ols1 <- felm(y ~ x + z|0|0|firmid, data = petersen)
summary(ols1)

stargazer(OLS1, type="html")

Les erreurs standard groupées seront automatiquement produites. Et stargazer rapportera l'erreur standard clustered en conséquence.

Au fait (permettez-moi de faire plus de marketing), pour l'analyse micro-économétrique, felm est fortement recommandé. Vous pouvez facilement spécifier les effets fixes et la VI en utilisant felm . La grammaire est comme :

ols1 <- felm(y ~ x + z|FixedEffect1 + FixedEffect2 | IV | Cluster, data = Data)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X