我已经注意到,在R中,泊松和负二项式(NB)回归似乎总是适合相同的系数,以用于分类但非连续的预测变量。
例如,这是带有分类预测变量的回归:
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))
这是一个连续预测变量的示例,其中泊松和NB拟合不同的系数:
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))
(当然,这些不是计数数据,模型也没有意义...)
然后,将预测变量重新编码为一个因子,然后两个模型再次拟合相同的系数:
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))
然而,约瑟夫·希尔伯的负二项式回归给出了一个示例(6.3,第118-119页),其中分类预测变量性别通过泊松()和NB()拟合的系数略有不同。他说:“泊松模型和NB模型之间的发生率比率非常相似。考虑到 [对应于R中的 ]接近零,这不足为奇。”b = 0.881 α 1 / θ
我理解这一点,但是在上面的示例中,summary(rs2)
告诉我们分别估计为9.16和7.93。
那么为什么系数完全相同?为什么只针对分类预测器?
编辑#1
这是带有两个非正交预测变量的示例。实际上,系数不再相同:
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))
并且,即使新的预测变量是连续的,包含另一个预测变量也会使模型拟合不同的系数。因此,这与我在原始示例中创建的虚拟变量的正交性有关吗?
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))