10
votes

Régression logistique avec des erreurs standard clustées robustes dans R

une question de débutant: Est-ce que quelqu'un sait-il comment exécuter une régression logistique avec des erreurs standard en cluster dans R? Dans Stata, c'est juste Logit Y X1 X2 x3, VCE (Cluster Z) , mais malheureusement, je n'ai pas compris comment faire la même analyse dans R. Merci d'avance!


3 commentaires

La fonction VCOVHC () dans le package sandwich peut également être utile (pas sûr s'il s'applique aux estimations de la régression logistique)


Si vous migrez de STATA, vous pouvez trouver le package appelé PLM utile. En outre, il y a le package appelé pcse pour la mise en œuvre d'erreurs standard corrigées en manipulant la matrice de covariance de la variance après l'estimation


Merci beaucoup pour vos réponses, Ben et Hubert. Je vais également tester les paquets que vous avez suggéré et voir s'ils travaillent avec des estimations logistiques. Merci encore!


4 Réponses :


15
votes

Vous voudrez peut-être consulter le package RMS code> (stratégies de modélisation de régression). Donc, LRM code> est le modèle de régression logistique et si ajustement code> est le nom de votre sortie, vous auriez quelque chose comme ceci:

fit=lrm(disease ~ age + study + rcs(bmi,3), x=T, y=T, data=dataf)

fit

robcov(fit, cluster=dataf$id)

bootcov(fit,cluster=dataf$id)


2 commentaires

Merci beaucoup! Cela a travaillé des merveilles! Je vais lire de plus près le manuel de RMS et voir s'il existe un moyen de regrouper les coefficients par pays et par année. Encore une fois merci!


Cette réponse est déjà très bonne mais elle pourrait être améliorée si elle était complètement reproductible. Je ne sais pas où proviennent les variables, quelle est la sortie, et pourquoi RCS (BMI, 3) est nécessaire.



5
votes

J'ai frappé ma tête contre ce problème au cours des deux derniers jours; J'ai trouvé par magie ce qui semble être un nouveau paquet qui semble destiné à de grandes choses - par exemple, je suis également en cours d'exécution dans mon analyse certains modèles de Tobit robustes en grappes et ce paquet a également été construit. De ne pas mentionner la syntaxe est beaucoup plus propre que dans toutes les autres solutions que j'ai vues (nous parlons à proximité des niveaux de stata propre).

Donc pour votre exemple de jouet, je voudrais Exécuter: P>

library(Zelig)
logit<-zelig(Y~X1+X2+X3,data=data,model="logit",robust=T,cluster="Z")


6 commentaires

WOW, cela semble "travailler" de manière à ce que mon code R ne semble jamais. Cette nouvelle fonctionnalité est-elle? Sinon, pourquoi Zelig a-t-il été le moyen canonique de résoudre ce problème dans R?


Je ne sais pas, mais j'espère que ça deviendra tellement. Le projet semble certainement ambitieux! [GROUPE Google] ( groups.google.com/forum/ M / #! Forum / Zelig-Statistical-Logiciels ) ne semble pas si actif, alors non plus sûr de la rapidité de progression.


Malheureusement, je pense que la commande ne fonctionne pas dans la dernière version de zelig (sur cran). Je viens de gérer quelques modèles avec et sans l'argument cluster et les erreurs standard sont exactement les mêmes. Je crois que cela ressemble à cela depuis la version 4.0, la dernière fois que j'ai utilisé le colis.


Oui, en effet, ils ont laissé tomber cette fonctionnalité pour le moment. Vérifiez leur groupe Google (Aller à la section communautaire de leur site Web) - ils sont au milieu de la restructuration de l'ensemble du projet; L'un des développeurs a déclaré en réponse à un poste de mien qu'ils travaillent pour ramener des fonctionnalités de cluster / robustes


Environ trois ans plus tard, la fonctionnalité de cluster n'est pas de retour: Erreur dans glm.control (cluster = "groupe"): argument inutilisé (cluster = "groupe") .


Toute mise à jour indique que cela inclut maintenant la fonctionnalité de cluster?



4
votes

Il y a une commande GLM.Cluster dans le package R Miceadds qui semble donner les mêmes résultats pour la régression logistique que STATA effectue avec l'option VCE ( Cluster) . Voir la documentation ici .

Dans l'un des exemples de cette page, les commandes xxx

donnent les mêmes erreurs standard robustes telles que la commande stata xxx

par exemple une erreur standard de 0,004038 pour la variable hisei .


0 commentaires

3
votes

Une autre alternative serait d'utiliser le sandwich et lmtest comme suit. Supposons que z est une colonne avec les indicateurs de cluster de votre ensemble de données dat . Alors xxx

fera le travail.


0 commentaires