Notei que em R, Poisson e regressões binomiais negativas (RN) sempre parecem se encaixar nos mesmos coeficientes para preditores categóricos, mas não contínuos.
Por exemplo, aqui está uma regressão com um preditor categórico:
data(warpbreaks)
library(MASS)
rs1 = glm(breaks ~ tension, data=warpbreaks, family="poisson")
rs2 = glm.nb(breaks ~ tension, data=warpbreaks)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Aqui está um exemplo com um preditor contínuo, em que Poisson e NB se ajustam a diferentes coeficientes:
data(cars)
rs1 = glm(dist ~ speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
(É claro que esses dados não são contados e os modelos não são significativos ...)
Então, recodifico o preditor em um fator e os dois modelos novamente se encaixam nos mesmos coeficientes:
library(Hmisc)
speedCat = cut2(cars$speed, g=5)
#you can change g to get a different number of bins
rs1 = glm(cars$dist ~ speedCat, family="poisson")
rs2 = glm.nb(cars$dist ~ speedCat)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
No entanto, a regressão binomial negativa de Joseph Hilbe dá um exemplo (6.3, pág. 118-119) em que um preditor categórico, sexo, se encaixa com coeficientes ligeiramente diferentes pelos Poisson ( ) e NB ( ). Ele diz: “As taxas de incidência entre os modelos de Poisson e RN são bastante semelhantes. Isso não é surpreendente, dada a proximidade de [correspondente a em R] a zero. ”b = 0,881 α 1 / θ
Entendo isso, mas nos exemplos acima, summary(rs2)
diz-nos que é estimado em 9,16 e 7,93, respectivamente.
Então, por que os coeficientes são exatamente os mesmos? E por que apenas para preditores categóricos?
Editar # 1
Aqui está um exemplo com dois preditores não ortogonais. De fato, os coeficientes não são mais os mesmos:
data(cars)
#make random categorical predictor
set.seed(1); randomCats1 = sample( c("A","B","C"), length(cars$dist), replace=T)
set.seed(2); randomCats2 = sample( c("C","D","E"), length(cars$dist), replace=T)
rs1 = glm(dist ~ randomCats1 + randomCats2, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + randomCats2, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Além disso, a inclusão de outro preditor faz com que os modelos se ajustem a diferentes coeficientes, mesmo quando o novo preditor é contínuo. Então, isso tem algo a ver com a ortogonalidade das variáveis fictícias que criei no meu exemplo original?
rs1 = glm(dist ~ randomCats1 + speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))