R jest równoważne opcji klastrowej przy zastosowaniu ujemnej regresji dwumianowej

10

Próbuję powielić pracę kolegi i przenoszę analizę ze Staty do R. Modele, które stosuje, wywołują opcję „klastrowania” w funkcji nbreg, aby grupować błędy standardowe.

Zobacz http://repec.org/usug2007/crse.pdf, aby uzyskać dość kompletny opis co i dlaczego tej opcji

Moje pytanie brzmi: jak wywołać tę samą opcję dla ujemnej regresji dwumianowej w R?

Podstawowy model w naszym artykule jest określony w Stata w następujący sposób

 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)

i zastąpiłem to

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),])

który oczywiście nie zawiera fragmentu błędów klastrowych.

Czy można wykonać dokładną replikację? Jeśli tak to jak? Jeśli nie, jakie są rozsądne alternatywy?

Dzięki

[Edytuj] Jak zauważono w komentarzach, liczyłem na rozwiązanie, które nie wprowadziłoby mnie w sferę modeli wielopoziomowych. Chociaż mój trening pozwala mi dostrzec, że te rzeczy powinny być ze sobą powiązane, jest to raczej skok, niż samodzielne podejmowanie się. W związku z tym kopałem dalej i znalazłem ten link: http://landroni.wordpress.com/2012/06/02/fama-macbeth-and-cluster-robust-by-firm-and-time-standard-errors-in- r /

który wskazuje na dość prosty kod do robienia tego, co chcę:

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"))

Nie powiela to jednak wyników analizy w Stata, prawdopodobnie dlatego, że jest przeznaczony do pracy na OLS, a nie na ujemnych dwumianach. Tak więc wyszukiwanie trwa. Wszelkie wskazówki na temat tego, co robię źle, byłyby bardzo mile widziane

csfowler
źródło
3
Może się okazać, notatki Ben Bolker za przydatne tutaj.
fmark
Zobacz także to wcześniejsze pytanie
fmark
Do Twojej dyspozycji jest definicja solidnych standardowych błędów klastrowanych Stata. Nie wydają się tak uciążliwe do wdrożenia. IMO może i tak będzie lepiej ze standardowymi błędami bootstrapped lub jackknifed (zobacz pomoc na vce ). Nie mogę jednak sugerować żadnych pakietów R. Powodzenia w znalezieniu zamiennika!
Andy W,
Dzięki @fmark - bardzo przydatne komentarze, znacznie lepsze niż moja „odpowiedź” i odpowiednio ją zaktualizowałem.
Peter Ellis
Dziękuje za wszystko. Myślę, że krótka odpowiedź na moje pytanie jest taka, że ​​nie ma prostej zamiany (np. Gotowa funkcja, która dokładnie zastępuje opcję klastra). Najwyraźniej ktoś z większym doświadczeniem może zobaczyć ścieżkę w notatkach Bena Bolkera, ale przenosi mnie na nowe terytorium, gdzie nie byłem pewien, czy poprawnie sformułowałem instrukcje z formuły. Nie jestem pewien, jaki jest właściwy sposób powiedzenia „dziękuję”, nie przyjmując odpowiedzi, ale dziękuję wam, a niedociągnięcia są moje.
csfowler

Odpowiedzi:

4

Ten dokument pokazuje, jak uzyskać klastrowe SE dla regresji glm:

http://dynaman.net/R/clrob.pdf

EddieMcGoldrick
źródło
Będę musiał przetestować porównanie z wynikami staty, ale wygląda to dokładnie tak, jak miałem nadzieję.
csfowler
1

To nie jest w pełni zadowalająca odpowiedź ...

Sam tego nie próbowałem, ale wygląda na to, że pakiet glmmADMB może zrobić, co chcesz.

Zawstydzę się w komentarzu @ fmark do pytania i zgodzę się z nim, że notatki Bena Bolkera są przydatne, podobnie jak to wcześniejsze pytanie , które nie jest dokładnym duplikatem, ale obejmuje bardzo podobne problemy.

Peter Ellis
źródło