泊松和负二项式回归何时拟合相同的系数?


38

我已经注意到,在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 / θb=0.883b=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))

在此处输入图片说明


6
(+1)好问题。我会在几个小时内为您写点东西。同时,您可能会尝试看看使用多个非正交的类别预测变量会发生什么(提示!)。
主教

1
阴谋!我一定会尝试的。谢谢,我热切期待您的回答。
半点通过

对不起@ half-pass; 我没有忘记这一点,并且会尝试在一天之内恢复健康。(我得到的答案只有一半,但被其他任务所拖累了。)希望赏金也能吸引其他答案。干杯。:-)
红衣主教

不用担心,@ cardinal!我知道你和所有其他惊人的大师在这里有生活外CV :)
半通

Answers:


29

您已经发现GLM的一个亲密但通用的属性适合于最大可能性。一旦考虑了所有最简单的情况,结果就会消失:将单个参数拟合到单个观测值!

一句话回答:如果我们关心的是使用单独的方法来解离样本的子集,那么对于每个子集,GLM总是会产生,因此实际的误差结构和密度的参数化都变为与(点)估计无关!μ^j=y¯jj

还有一点:通过最大似然拟合正交分类因子等效于采用单独的方法对样本的不相交子集进行拟合,因此这解释了为什么泊松和负二项式GLM产生相同的参数估计值。实际上,无论我们使用泊松,negbin,高斯,高斯逆还是伽玛回归(见下文),都会发生同样的情况。在Poisson和negbin的情况下,默认链接功能是链接,但这是一条红色鲱鱼。虽然这会产生相同的原始参数估计值,但我们将在下面看到该属性实际上与链接功能完全无关。log

当我们对具有更多结构的参数化或依赖于连续预测变量的参数感兴趣时,由于分布的均值-方差关系(与参数和用于条件模型建模的非线性函数相关),假定的误差结构变得相关手段。

GLM和指数散布族:速成课程

自然形式的指数色散族是这样的,其对数密度的形式为

logf(y;θ,ν)=θyb(θ)ν+a(y,ν).

这里是自然参数,是色散参数。如果是已知的,那将只是一个标准的一参数指数族。下面考虑的所有GLM都采用该系列的错误模型。θνν

考虑从这个家庭的单个观察的样本。如果我们以最大可能性拟合,则无论的值如何,我们都将得到。由于对数似然相加,这很容易扩展到iid样本的情况,得出。θy=b(θ^)νy¯=b(θ^)

但是,我们也知道,由于记录密度的函数的好的规律性,即 因此,实际上。θ

θElogf(Y;θ,ν)=Eθlogf(Y;θ,ν)=0.
b(θ)=EY=μ

由于最大似然估计在变换下是不变的,因此这意味着 该族密度的。y¯=μ^

现在,在GLM中,我们将为,其中是链接函数。但是,如果是除位置的单个1以外的全零向量,则。然后,根据分解出GLM的可能性,因此我们按照上述步骤进行。正交因素正是这种情况。μiμi=g1(xiTβ)gxijμi=g(βj)βj

连续预测变量有何不同?

当预测变量是连续的或分类的,但是不能简化为正交形式时,则似然不再根据单独的参数将其分解为具有单独均值的单独项。此时,错误结构和链接功能确实起作用。

如果一个人翻遍(乏味的)代数,则似然方程变为 对于所有,其中。在这里,和参数通过链接关系和方差隐式输入。Ĵ = 1 ... p λ = X Ť β β ν μ = λ = X Ť β σ 2

i=1n(yiμi)xijσi2μiλi=0,
j=1,,pλi=xiTββνμi=g(λi)=g(xiTβ)σi2

这样,链接函数和假定的误差模型变得与估计有关。

示例:错误模型(几乎)无关紧要

在下面的示例中,我们根据三个分类因素生成负二项式随机数据。每个观察值来自一个类别,并且使用相同的分散参数()。k=6

然后,我们使用五个不同的GLM拟合这些数据,每个GLM都具有链接:(a)负二项式,(b)泊松,(c)高斯,(d)高斯逆和(e)伽马GLM。所有这些都是指数色散族的例子。log

从表中可以看出,即使这些GLM中的某些用于离散数据,而其他GLM用于连续数据,而某些用于非负数据,而其他用于非负数据,则参数估计是相同的

      negbin  poisson gaussian invgauss    gamma
XX1 4.234107 4.234107 4.234107 4.234107 4.234107
XX2 4.790820 4.790820 4.790820 4.790820 4.790820
XX3 4.841033 4.841033 4.841033 4.841033 4.841033

标题中的警告来自以下事实:如果观测值不在特定密度的范围内,则拟合过程将失败。例如,如果我们在上面的数据中随机产生了计数,则Gamma GLM将无法收敛,因为Gamma GLM需要严格的正数据。0

示例:链接功能(几乎)无关紧要

使用相同的数据,我们重复使用带有三个不同链接功能的Poisson GLM拟合数据的过程:(a)链接,(b)身份链接和(c)平方根链接。下表显示了转换回对数参数化后的系数估计。(因此,第二列显示,第三列使用每个拟合中的原始显示)。同样,估计是相同的。记录β的日志β 2βloglog(β^)log(β^2)β^

> coefs.po
         log       id     sqrt
XX1 4.234107 4.234107 4.234107
XX2 4.790820 4.790820 4.790820
XX3 4.841033 4.841033 4.841033

标题中的警告仅是指原始估计值将随链接函数而变化的事实,但隐含的均值参数估计值则不会变化。

R代码

# Warning! This code is a bit simplified for compactness.
library(MASS)
n <- 5
m <- 3
set.seed(17)
b <- exp(5+rnorm(m))
k <- 6

# Random negbin data; orthogonal factors
y <- rnbinom(m*n, size=k, mu=rep(b,each=n))
X <- factor(paste("X",rep(1:m,each=n),sep=""))

# Fit a bunch of GLMs with a log link
con <- glm.control(maxit=100)
mnb <- glm(y~X+0, family=negative.binomial(theta=2))
mpo <- glm(y~X+0, family="poisson")
mga <- glm(y~X+0, family=gaussian(link=log), start=rep(1,m), control=con)
miv <- glm(y~X+0, family=inverse.gaussian(link=log), start=rep(2,m), control=con)
mgm <- glm(y~X+0, family=Gamma(link=log), start=rep(1,m), control=con)    
coefs <- cbind(negbin=mnb$coef, poisson=mpo$coef, gaussian=mga$coef
                   invgauss=miv$coef, gamma=mgm$coef)

# Fit a bunch of Poisson GLMs with different links.
mpo.log  <- glm(y~X+0, family=poisson(link="log"))
mpo.id   <- glm(y~X+0, family=poisson(link="identity"))
mpo.sqrt <- glm(y~X+0, family=poisson(link="sqrt"))   
coefs.po <- cbind(log=mpo$coef, id=log(mpo.id$coef), sqrt=log(mpo.sqrt$coef^2))

+1,清晰而全面,比我给出的答案更好。
13年

@mpr,我更喜欢将其视为对您的补充。看到你的帖子,我感到非常高兴。您已经清楚,简洁地描述了(并显示了)正在发生的事情。我的帖子有时会花点时间阅读;我担心这就是其中之一。
主教

你们都很棒。非常感谢您如此清晰和严格地向我解释这一点。我现在需要花更多时间消化:)
半点通过

@cardinal您从哪里获得“ family=negative.binomial(theta=2)”中的2 ?
timothy.s.lau 2015年

23

为了了解发生了什么,首先进行不带截距的回归很有用,因为分类回归中只有一个预测变量的截距是没有意义的:

> rs1 = glm(breaks ~ tension-1, data=warpbreaks, family="poisson")
> rs2 = glm.nb(breaks ~ tension-1, data=warpbreaks)

由于泊松和负二项式回归指定均值参数的对数,因此对于分类回归,对系数取幂将为您提供每个类别的实际均值参数:

>  exp(cbind("Poisson"=coef(rs1), "NB"=coef(rs2)))
          Poisson       NB
tensionL 36.38889 36.38889
tensionM 26.38889 26.38889
tensionH 21.66667 21.66667

这些参数对应于不同类别值的实际均值:

> with(warpbreaks,tapply(breaks,tension,mean))
       L        M        H 
36.38889 26.38889 21.66667 

因此,正在发生的是,在每种情况下使似然最大化的均值参数等于每个类别的样本均值。 λ

对于泊松分布,很清楚为什么会发生这种情况。只有一个参数适合,因此使用单个类别预测变量最大化模型的整体可能性等同于独立找到一个,该使每个特定类别中观察值的可能性最大化。泊松分布的最大似然估计值只是样本均值,这就是为什么回归系数恰好是每个类别的样本均值(对数)的原因。λ

对于负二项式,它并不是那么简单,因为要拟合两个参数:和shape参数。而且,回归拟合覆盖整个数据集的单个,因此在这种情况下,分类回归不仅仅等效于为每个类别拟合完全独立的模型。但是,通过检查似然函数,我们可以看到,对于任何给定的theta,通过将设置为样本均值,似然函数再次被最大化:λθθλ

λ=ˉX

L(X,λ,θ)=(θλ+θ)θΓ(θ+xi)xi!Γ(θ)(λλ+θ)xilogL(X,λ,θ)=θ(logθlog(λ+θ))+xi(logλlog(λ+θ))+log(Γ(θ+xi)xi!Γ(θ))ddλlogL(X,λ,θ)=xiλθ+xiλ+θ=n(x¯λx¯+θλ+θ),
因此当时可以达到最大值。λ=x¯

对于连续数据没有相同系数的原因是,在连续回归中,不再是预测变量的分段常数,而是线性变量。在这种情况下,最大化似然函数不会降低以独立地为不相交的数据子集拟合值,而是将是一个非平凡的问题,需要用数值方法解决,并且可能会针对不同的似然函数产生不同的结果。λlog(λ)λ

同样,如果您有多个类别预测变量,尽管拟合模型最终会将指定为分段常量函数,但通常不会有足够的自由度允许每个常量段独立确定。例如,假设您有预测变量,每个预测变量有类别。在这种情况下,您的模型具有个自由度,而类别有独特的不同组合,每个组合都有其自己的拟合值。因此,假设这些类别的交集是非空的(或者至少是λ 2 5 10 5 * 5 = 25 λ 11λλ251055=25λ11 它们是非空的),似然最大化问题再次变得不平凡,通常会产生与泊松相对于负二项式或任何其他分布的不同结果。


5
(+1)个好答案。我认为可以在这里更明确地指出的一件事是,这实际上与泊松和负二项式之间的任何关系无关,而是与通过最大似然拟合GLM的更基本的事实无关。
2013年

好点子。泊松和负二项式唯一与之有关的事情是它们是由均值参数的对数指定的。例如,如果您进行了普通最小二乘回归,则系数名义上会有所不同,因为该参数将是实际均值而不是对数。
13年

2
的确如此,但我认为它还远远不止于此:使用任何链接函数(通过ML并带有很小的警告)拟合任何 GLM ,并且由于拟合的均值将与样本均值匹配,因此参数估计在非线性范围内是相同的不同链接之间的转换。特定误差模型与它来自指数弥散族的事实无关。
2013年

我没有讲这点。我是从更一般的ML估计而非GLM的角度来解决这个问题的。有很多自然发生的模型,其中ML将产生与样本均值不同的拟合均值(例如,对数正态)。但是对于GLM,您的观察会导致更简洁,更笼统的解释。
13年

2
@ half-pass:将所有正交分类模型拟合为,y~X+0然后重试。:-)
红衣主教
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.