Wann passen Poisson- und negative Binomialregressionen zu denselben Koeffizienten?


38

Ich habe festgestellt, dass bei R-, Poisson- und negativen Binomial- (NB-) Regressionen für kategoriale, aber nicht kontinuierliche Prädiktoren immer dieselben Koeffizienten zu passen scheinen.

Beispiel: Hier ist eine Regression mit einem kategorialen Prädiktor:

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))

Bildbeschreibung hier eingeben

Hier ist ein Beispiel mit einem kontinuierlichen Prädiktor, bei dem Poisson und NB unterschiedliche Koeffizienten haben:

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))

Bildbeschreibung hier eingeben

(Natürlich zählen diese Daten nicht und die Modelle sind nicht aussagekräftig ...)

Dann habe ich den Prädiktor in einen Faktor umcodiert und die beiden Modelle passen wieder zu den gleichen Koeffizienten:

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))

Bildbeschreibung hier eingeben

b=0.883b=0.881α1/θ

summary(rs2)θ

Warum sind die Koeffizienten genau gleich? Und warum nur für kategoriale Prädiktoren?


Bearbeiten Sie # 1

Hier ist ein Beispiel mit zwei nicht orthogonalen Prädiktoren. In der Tat sind die Koeffizienten nicht mehr dieselben:

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))

Bildbeschreibung hier eingeben

Das Einbeziehen eines weiteren Prädiktors bewirkt, dass die Modelle unterschiedliche Koeffizienten anpassen, auch wenn der neue Prädiktor kontinuierlich ist. Hat das etwas mit der Orthogonalität der Dummy-Variablen zu tun, die ich in meinem ursprünglichen Beispiel erstellt habe?

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))

Bildbeschreibung hier eingeben


6
(+1) Gute Frage. Ich werde versuchen, in ein paar Stunden etwas für Sie zu schreiben. In der Zwischenzeit können Sie versuchen, herauszufinden, was mit mehreren nicht orthogonalen kategorialen Prädiktoren geschieht (Hinweis!).
Kardinal

1
Intrigen! Ich werde das auf jeden Fall versuchen. Und danke, ich freue mich sehr auf Ihre Antwort.
Half-Pass

Entschuldigung @ half-pass; Ich habe das nicht vergessen und werde versuchen, innerhalb eines Tages etwas aufzutreiben. (Ich habe eine halbe Antwort zusammengestellt, bin aber von anderen Aufgaben abgezogen worden.) Hoffentlich zieht das Kopfgeld auch andere Antworten an. Prost. :-)
Kardinal

Keine Sorge, Kardinal! Ich kenne dich und all die anderen fantastischen Gurus, die hier leben, außerhalb des Lebenslaufs :)
Half-Pass

Antworten:


29

Sie haben eine intime, aber generische Eigenschaft von GLMs entdeckt, die mit maximaler Wahrscheinlichkeit passt . Das Ergebnis fällt aus, wenn man den einfachsten Fall von allen betrachtet: Einen einzelnen Parameter an eine einzelne Beobachtung anpassen!

μ^j=y¯jj

log

Wenn wir an einer Parametrisierung mit mehr Struktur interessiert sind oder die von stetigen Prädiktoren abhängt, wird die angenommene Fehlerstruktur aufgrund der Mittelwert-Varianz-Beziehung der Verteilung relevant, da sie sich auf die Parameter und die nichtlineare Funktion bezieht, die zur Modellierung der Bedingung verwendet werden meint.

GLMs und exponentielle Dispersionsfamilien: Crash-Kurs

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

θνν

θy=b(θ^)νy¯=b(θ^)

θ

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

y¯=μ^

μiμi=g1(xiTβ)gxijμi=g(βj)βj

Was ist so anders an kontinuierlichen Prädiktoren?

Wenn die Prädiktoren stetig oder kategorisch sind, aber nicht auf eine orthogonale Form reduziert werden können, wird die Wahrscheinlichkeit nicht länger in einzelne Terme mit einem separaten Mittelwert in Abhängigkeit von einem separaten Parameter einbezogen. An diesem Punkt wird die Fehlerstruktur und Link - Funktion können ins Spiel kommen.

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

Auf diese Weise werden die Verbindungsfunktion und das angenommene Fehlermodell für die Schätzung relevant.

Beispiel: Das Fehlermodell spielt (fast) keine Rolle

k=6

log

Aus der Tabelle können wir ersehen, dass die Parameterschätzungen identisch sind , obwohl einige dieser GLMs für diskrete Daten und andere für kontinuierliche und einige für nichtnegative Daten sind, andere nicht.

      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

0

Beispiel: Die Linkfunktion spielt (fast) keine Rolle

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

Die Einschränkung in der Überschrift bezieht sich lediglich auf die Tatsache , dass die rohen Schätzungen mit der Link - Funktion variieren, aber die implizierten mittleren Parameterschätzungen nicht.

R-Code

# 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, klar und umfassend, eine bessere Antwort als das, was ich gegeben habe.
5.

@mpr, ich würde es sehr bevorzugen, wenn es zu deinem komplementär wäre. Ich war sehr erfreut, als ich Ihren Beitrag sah; Sie haben klar und präzise beschrieben (und gezeigt), was los ist. Meine Posts werden manchmal etwas lang; Ich fürchte, das ist einer von ihnen.
Kardinal

Ihr seid beide unglaublich. Vielen Dank, dass Sie mir dies so klar und genau erklärt haben. Ich muss jetzt noch etwas mehr Zeit mit Verdauen verbringen :)
halber Durchgang

@ cardinal Woher hast du die 2 in " family=negative.binomial(theta=2)"?
timothy.s.lau

23

Um zu sehen, was hier vor sich geht, ist es sinnvoll, zunächst die Regression ohne den Intercept durchzuführen, da ein Intercept in einer kategorialen Regression mit nur einem Prädiktor bedeutungslos ist:

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

Da Poisson- und negative binomiale Regressionen das Protokoll des Mittelwertparameters angeben, erhalten Sie für die kategoriale Regression durch Exponentiierung der Koeffizienten den tatsächlichen Mittelwertparameter für jede Kategorie:

>  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

Diese Parameter entsprechen dem tatsächlichen Mittelwert über die verschiedenen Kategoriewerte:

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

λ

λ

λθθλ

L(X,λ,θ)=(θλ+θ)θΓ(θ+xi)xi!Γ(θ)(λλ+θ)xilogL(X,λ,θ)=θ(logθlog(λ+θ))+xi(logλlog(λ+θ))+log(Γ(θ+xi)xi!Γ(θ))ddλlogL(X,λ,θ)=xiλθ+xiλ+θ=n(x¯λx¯+θλ+θ),
λ=x¯

log(λ)λ

λλ251055=25λ11


5
(+1) Gute Antwort. Eine Sache, die ich hier expliziter ausdrücken könnte, ist, dass dies wirklich nichts mit einer Beziehung zwischen dem Poisson und dem negativen Binom zu tun hat, sondern eher grundlegende Fakten über die Anpassung von GLMs über die maximale Wahrscheinlichkeit.
Kardinal

Guter Punkt. Das einzig wahre, was Poisson und das negative Binomial damit zu tun haben, ist, dass sie durch das Protokoll des Mittelwertparameters angegeben werden. Wenn Sie beispielsweise eine gewöhnliche Regression der kleinsten Quadrate durchführen, würden sich die Koeffizienten nominal unterscheiden, da dann der Parameter den tatsächlichen Mittelwert und nicht das Protokoll darstellt.
5.

2
Es stimmt, aber ich denke, es geht ein wenig darüber hinaus: Passen Sie einen beliebigen GLM mit einer beliebigen Verbindungsfunktion an (nach ML und mit sehr geringen Einschränkungen). Da die angepassten Mittelwerte mit den Stichprobenmitteln übereinstimmen, sind die Parameterschätzungen bis zu den nichtlinearen identisch Transformation zwischen verschiedenen Links. Das spezifische Fehlermodell spielt keine Rolle, außer dass es aus einer exponentiellen Dispersionsfamilie stammt.
Kardinal

Dies ist ein guter Punkt, den ich nicht behandelt habe. Ich näherte mich dieser Frage eher aus der allgemeineren Sicht der ML-Schätzung als speziell der GLMs. Es gibt viele natürlich vorkommende Modelle, bei denen ML angepasste Mittelwerte erzeugt, die von den Stichprobenmitteln abweichen (z. B. lognormal). Bei GLMs führt Ihre Beobachtung jedoch zu einer präziseren und allgemeineren Erklärung.
5.

2
@ Half-Pass: Passen Sie alle Ihre orthogonalen kategorialen Modelle an y~X+0und versuchen Sie es erneut. :-)
Kardinal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.