R equivalente à opção de cluster ao usar regressão binomial negativa

10

Estou tentando replicar o trabalho de um colega e estou movendo a análise de Stata para R. Os modelos que ela emprega invocam a opção "cluster" na função nbreg para agrupar os erros padrão.

Veja http://repec.org/usug2007/crse.pdf para obter uma descrição bastante completa do quê e por que dessa opção

Minha pergunta é como invocar essa mesma opção para regressão binomial negativa dentro de R?

O modelo principal em nosso artigo é especificado em Stata da seguinte maneira

 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)

e eu substituí isso por

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

que obviamente não possui a parte dos erros agrupados.

É possível fazer uma replicação exata? Se sim, como? Caso contrário, quais são algumas alternativas razoáveis?

obrigado

[Editar] Como observado nos comentários, eu esperava uma solução que não me levasse ao domínio dos modelos multiníveis. Embora meu treinamento me permita ver que essas coisas devem estar relacionadas, é mais um salto do que me sinto à vontade para dar sozinho. Como tal, continuei cavando e encontrei este link: http://landroni.wordpress.com/2012/06/02/fama-macbeth-and-cluster-robust-by-firm-and-time-standard-errors-in- r /

que aponta para um código bastante simples para fazer o que eu quero:

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

Porém, isso não replica os resultados da análise no Stata, provavelmente porque foi projetado para funcionar no binômio OLS e não negativo. Então a pesquisa continua. Qualquer indicação sobre onde estou errado seria muito apreciada

csfowler
fonte
3
Você pode achar as anotações de Ben Bolker úteis aqui.
fmark 14/06
E veja também esta pergunta anterior
marque fev
Para sua informação, aqui está uma definição dos robustos erros padrão em cluster da Stata. Eles não parecem tão difíceis de implementar. Na IMO, você pode se sair melhor com erros padrão de inicialização ou de faca de qualquer maneira (consulte a ajuda no vce ). Não posso sugerir nenhum pacote R, no entanto. Boa sorte em encontrar um substituto!
Andy W
Obrigado @fmark - comentários muito úteis, muito melhores do que a minha "resposta" e eu atualizei-o de acordo.
Peter Ellis
Obrigado a todos. Eu acho que a resposta curta para minha pergunta é que não há uma substituição direta (por exemplo, uma função pré-fabricada que substitui exatamente a opção de cluster). Claramente, alguém com mais experiência pode ver o caminho através das anotações de Ben Bolker, mas isso me leva a um novo território, onde não podia ter certeza de que estava obtendo as instruções da fórmula corretas. Não sei ao certo qual é a maneira apropriada de dizer "obrigado" sem aceitar uma resposta, mas você tem meus agradecimentos e as deficiências são minhas.
csfowler

Respostas:

4

Este documento mostra como obter SEs de cluster para uma regressão glm:

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

EddieMcGoldrick
fonte
Vou ter que fazer uma comparação de teste com os resultados do stata, mas isso parece exatamente com o que eu estava esperando.
Csfowler
1

Esta não é uma resposta totalmente satisfatória ...

Eu ainda não tentei, mas parece que o pacote glmmADMB pode fazer o que você deseja.

Vou vergonha do comentário de @ fmark sobre a pergunta e concordarei com ele que as anotações de Ben Bolker são úteis, como é a pergunta anterior , que não é exatamente uma duplicata exata, mas cobre questões muito semelhantes.

Peter Ellis
fonte