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


3
Você pode achar as anotações de Ben Bolker úteis aqui.
fmark 14/06


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:



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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.