R entspricht der Clusteroption bei Verwendung einer negativen Binomialregression


10

Ich versuche, die Arbeit eines Kollegen zu replizieren, und verschiebe die Analyse von Stata nach R. Die von ihr verwendeten Modelle rufen die Option "Cluster" innerhalb der Funktion nbreg auf, um die Standardfehler zu gruppieren.

Unter http://repec.org/usug2007/crse.pdf finden Sie eine ziemlich vollständige Beschreibung des Was und Warum dieser Option

Meine Frage ist, wie man dieselbe Option für eine negative binomiale Regression innerhalb von R aufruft.

Das primäre Modell in unserem Artikel ist in Stata wie folgt angegeben

 xi: nbreg cntpd09 logpop08 pcbnkthft07 pccrunion07 urbanpop pov00 pov002 edu4yr ///
 black04 hispanic04 respop i.pdpolicy i.maxloan rollover i.region if isser4 != 1,   
 cluster(state)

und ich habe dies durch ersetzt

pday<-glm.nb(cntpd09~logpop08+pcbnkthft07+pccrunion07+urbanpop+pov00+pov002+edu4yr+
black04+hispanic04+respop+as.factor(pdpolicy)+as.factor(maxloan)+rollover+
as.factor(region),data=data[which(data$isser4 != 1),])

Dem fehlt offensichtlich das gruppierte Fehlerstück.

Ist es möglich, eine exakte Replikation durchzuführen? Wenn das so ist, wie? Wenn nicht, welche vernünftigen Alternativen gibt es?

Vielen Dank

[Bearbeiten] Wie in den Kommentaren erwähnt, hoffte ich auf eine Lösung, die mich nicht in den Bereich der Mehrebenenmodelle führte. Während mein Training mir erlaubt zu sehen, dass diese Dinge zusammenhängen sollten, ist es eher ein Sprung, als dass ich es alleine gerne mache. Als solches grub ich weiter und fand diesen Link: http://landroni.wordpress.com/2012/06/02/fama-macbeth-and-cluster-robust-by-firm-and-time-standard-errors-in- r /

das deutet auf einen ziemlich einfachen Code hin, um das zu tun, was ich will:

library(lmtest)
pday<-glm.nb(cntpd09~logpop08+pcbnkthft07+pccrunion07+urbanpop+pov00+pov002+edu4yr+
 black04+hispanic04+respop+as.factor(pdpolicy)+as.factor(maxloan)+rollover+
 as.factor(region),data=data[which(data$isser4 != 1),])
summary(pday)

coeftest(pday, vcov=function(x) vcovHC(x, cluster="state", type="HC1"))

Dies repliziert jedoch nicht die Ergebnisse der Analyse in Stata, wahrscheinlich weil es für OLS und nicht für negative Binomialzahlen ausgelegt ist. Also geht die Suche weiter. Alle Hinweise, wo ich falsch liege, wären sehr dankbar


3
Hier finden Sie möglicherweise nützliche Notizen von Ben Bolker .
Mark

Und siehe auch diese frühere Frage
fmark

Zu Ihrer Information hier eine Definition der robusten Clustered-Standardfehler von Stata. Die Implementierung scheint nicht so schwierig zu sein. IMO sind Sie möglicherweise mit Bootstrap- oder Jackknifed-Standardfehlern besser dran (siehe die Hilfe zu vce ). Ich kann jedoch keine R-Pakete vorschlagen. Viel Glück bei der Suche nach einem Ersatz!
Andy W

Danke @fmark - sehr nützliche Kommentare, viel besser als meine "Antwort" und ich habe sie entsprechend aktualisiert.
Peter Ellis

Dank an alle. Ich denke, die kurze Antwort auf meine Frage lautet, dass es keinen einfachen Ersatz gibt (z. B. eine vorgefertigte Funktion, die die Cluster-Option genau ersetzt). Natürlich kann jemand mit mehr Erfahrung den Weg durch Ben Bolkers Notizen sehen, aber es führt mich auf neues Gebiet, wo ich nicht sicher sein konnte, ob ich die Formelaussagen richtig verstanden habe. Ich bin mir nicht sicher, wie ich "Danke" sagen soll, ohne eine Antwort zu akzeptieren, aber Sie haben meinen Dank und die Mängel sind meine eigenen.
Csfowler

Antworten:



1

Dies ist keine völlig zufriedenstellende Antwort ...

Ich habe es selbst nicht ausprobiert, aber es sieht so aus, als ob das glmmADMB-Paket das tun könnte, was Sie wollen.

Ich werde schamlos aus @ fmarks Kommentar zu der Frage kneifen und ihm zustimmen, dass Ben Bolkers Notizen nützlich sind, ebenso wie diese frühere Frage , die kein genaues Duplikat ist, aber sehr ähnliche Themen abdeckt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.