Não foi possível ajustar a regressão binomial negativa em R (tentando replicar os resultados publicados)

8

Tentando replicar os resultados do artigo publicado recentemente,

Aghion, Philippe, John Van Reenen e Luigi Zingales. 2013. "Inovação e Propriedade Institucional". American Economic Review, 103 (1): 277-304.

(O código de dados e dados está disponível em http://www.aeaweb.org/aer/data/feb2013/20100973_data.zip ).

Não estou tendo problemas para recriar as 5 primeiras regressões em R (usando os métodos OLS e Poisson), mas simplesmente não consigo recriar seus resultados negativos de regressão binomial em R, enquanto nos estados a regressão funciona bem.

Especificamente, aqui está o código R que escrevi, que falha ao executar uma regressão binomial negativa nos dados:

library(foreign)
library(MASS)
data.AVRZ <- read.dta("results_data2011.dta",
                  convert.underscore=TRUE)
sicDummies <- grep("Isic4", names(data.AVRZ), value=TRUE)
yearDummies <- grep("Iyear", names(data.AVRZ), value=TRUE)
data.column.6 <- subset(data.AVRZ, select = c("cites",
                                 "instit.percown",
                                 "lk.l",
                                 "lsal",
                                 sicDummies,
                                 yearDummies))
data.column.6 <- na.omit(data.column.6)

glm.nb(cites ~ .,
   data = data.column.6,
   link = log,
   control=glm.control(trace=10,maxit=100))

Executando o acima em R, recebo a seguinte saída:

Initial fit:
Deviance = 1137144 Iterations - 1 
Deviance = 775272.3 Iterations - 2 
Deviance = 725150.7 Iterations - 3 
Deviance = 722911.3 Iterations - 4 
Deviance = 722883.9 Iterations - 5 
Deviance = 722883.3 Iterations - 6 
Deviance = 722883.3 Iterations - 7 
theta.ml: iter 0 'theta = 0.000040'
theta.ml: iter1 theta =7.99248e-05
Initial value for 'theta': 0.000080
Deviance = 24931694 Iterations - 1 
Deviance = NaN Iterations - 2 
Step halved: new deviance = 491946.5 
Error in glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset,  : 
NA/NaN/Inf in 'x'
In addition: Warning message:
step size truncated due to divergence

Tentei usar vários valores iniciais diferentes para theta, além de variar o número máximo de iterações sem sorte. O código stata fornecido pelos autores funciona bem, mas ainda não consigo coagir o R ​​a fazer o modelo funcionar. Existem métodos de ajuste alternativos para glm.nb () que podem ser mais robustos ao problema que estou encontrando?

jayb
fonte
1
Ele convergirá para menos variáveis, mas nem todas - existem muitas variáveis ​​e uma variável de resultado muito feia. Talvez tente enviar um e-mail para [email protected] para obter ajuda se não houver resposta em um dia ou dois.
user20650
3
Eventualmente, foi possível estimar isso executando uma regressão de Poisson para obter valores de parâmetros iniciais e, em seguida, alimentando-os em um MLE na função de probabilidade de log. Postará a solução para isso em breve.
jayb
2
@jayb adoraria ver a sua solução
Andy
1
@jayb Eu adoraria ver a sua solução :)
KH Kim
1
@jayb Esta pergunta está morta ou respondeu em outro lugar: ainda há interesse?
Dave fournier

Respostas:

2

Mpμ

μ=exp(Mp)
Σ
M=OΣ
O
Mp=OΣp
q
p=Σq
μ=exp(Oq)
qp. Usei essa técnica para ajustar o modelo ao AD Model Builder, mas pode funcionar com R. De qualquer forma, ao ajustar o modelo, deve-se observar os "resíduos", que são a diferença quadrática entre cada observação e sua média dividida pela estimativa para a variância. Como parece ser comum para esse tipo de modelo, existem alguns resíduos enormes. Eu acho que isso deve ser examinado antes que os resultados do artigo sejam levados a sério.
Dave Fournier
fonte