Poisson ve negatif binom gerilimleri ne zaman aynı katsayılara uyar?


38

R, Poisson ve negatif binom (NB) regresyonlarında, kategorik fakat sürekli olmayan tahminler için daima aynı katsayılara uyduğunu farkettim.

Örneğin, burada kategorik bir yordayıcılığa sahip bir regresyon:

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

görüntü tanımını buraya girin

Poisson ve NB'nin farklı katsayılara uyduğu sürekli bir yordayıcı örneği:

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

görüntü tanımını buraya girin

(Tabii ki bunlar veri sayılmaz ve modeller anlamlı değildir ...)

Sonra öngörücüyü bir faktöre yeniden kodlarım ve iki model yine aynı katsayılara uyar:

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

görüntü tanımını buraya girin

Bununla birlikte, Joseph Hilbe'nin Negatif Binom Regresyonu , kategorik bir tahmin edenin , cinsiyetin, Poisson ( ) ve NB ( b = 0.881 ) tarafından biraz farklı katsayılara sahip olduğu bir örnek (6.3, s . 118-119 ) vermektedir. Dedi ki: “Poisson ve NB modelleri arasındaki insidans oranları oldukça benzer. Bu yakınlık göz önüne alındığında şaşırtıcı değildir a [tekabül eden 1 / θ sıfır R].”b=0.883b=0.881α1/θ

Bunu anlıyorum ama yukarıdaki örneklerde, summary(rs2)söyler sırasıyla 9.16 ve 7.93 olarak tahmin ediliyor.θ

Peki neden katsayılar tamamen aynı? Ve neden sadece kategorik tahminciler için?


# 1 düzenle

İki ortogonal olmayan prediktör ile ilgili bir örnek. Aslında, katsayılar artık aynı değil:

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

görüntü tanımını buraya girin

Ve, bir başka tahminde bulunmak, modelin yeni tahminde sürekli olsa bile, farklı katsayılara uymasına neden olur. Yani, orijinal örneğimde yarattığım kukla değişkenlerin ortogonallığı ile ilgisi var mı?

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

görüntü tanımını buraya girin


6
(+1) Güzel soru. Birkaç saat içinde senin için bir şeyler yazmaya çalışacağım. Bu arada, ortogonal olmayan çoklu kategorik prediktörlerle ne olduğunu deneyebilir ve görebilirsiniz.
kardinal

1
Entrika! Bunu kesinlikle deneyeceğim. Ve teşekkür ederim, merakla bekliyorum cevabınızı bekliyorum.
yarım geçiş

Üzgünüz @ yarım geçişli; Bunu unutmadım ve bir gün içinde bir şeyler almaya çalışacağım. (Bir araya getirilmiş yarım cevabım var, ancak diğer görevler tarafından elimden alındı.) Umarım lütuf başka cevapları da çeker. Şerefe. :-)
kardinal

Endişeye gerek yok, kardinal! Siz ve buradaki diğer bütün guruların CV dışında yaşadıklarını biliyorum :)
yarı-

Yanıtlar:


29

GLM'lerin samimi, ancak genel bir özelliğini maksimum olasılığa uygun buldunuz . Sonuç, herkesin en basit hali olduğu zaman düşer: Tek bir parametreyi tek bir gözlemde kullanmak!

μ^j=y¯jj

log

Daha fazla yapıya sahip bir parametrelendirme ile ilgilendiğimiz veya sürekli tahminlere bağlı olan bir varsayımla karşılaştığımızda, varsayılan hata yapısı, koşulların modellenmesi için kullanılan parametreler ve doğrusal olmayan fonksiyon ile ilgili olduğu için dağılımın ortalama-değişkenlik ilişkisi nedeniyle alakalı hale gelir. anlamına geliyor.

GLM'ler ve üstel dağılım aileleri: Çarpışma rotası

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

Sürekli tahminlerde bu kadar farklı olan ne?

Tahmin ediciler sürekli olduğunda veya kategorik olduklarında, ancak ortogonal bir forma indirgenemediklerinde, olasılık, artık ayrı bir parametreye bağlı olarak ayrı bir ortalama ile bireysel terimler haline gelmez. Bu noktada, hata yapısı ve bağlantı fonksiyonu yok devreye girer.

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

Bu şekilde, link işlevi ve varsayılan hata modeli tahminle alakalı hale gelir.

Örnek: Hata modeli (neredeyse) önemli değil

k=6

log

Tablodan, bu GLM'lerin bazıları ayrı veriler için, bazıları sürekli, bazıları da negatif olmayan veriler için olsalar da , parametre tahminlerinin aynı olduğunu görebiliriz .

      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

Örnek: Link işlevi (neredeyse) farketmez

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

Başlıktaki uyarı, basitçe ham tahminlerin link fonksiyonuna göre değişeceği, ancak ima edilen ortalama parametre tahminlerinin değişmeyeceği anlamına gelir.

R kodu

# 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, açık ve kapsamlı, verdiğimden daha iyi bir cevap.
mpr

@ mpr, sizin için tamamlayıcı olarak düşünmeyi tercih ederim. Görevinizi gördüğümde çok memnun oldum; neler olup bittiğini net ve kesin bir şekilde tarif ettiniz (ve gösterdiniz). Gönderilerimin bazen okuması biraz zaman alıyor; Korkarım bu onlardan biri.
kardinal

İkiniz de harikasınız. Bunu bana netlik ve titizlikle açıkladığınız için çok teşekkür ederim. Şimdi hazmı sindirmek için biraz daha zaman harcamam gerek :)
yarı-

@cardinal Buradaki " family=negative.binomial(theta=2)" 2 tanesini nereden aldınız ?
timothy.s.lau

23

Burada neler olup bittiğini görmek için, ilk önce kesinti yapmadan regresyonu yapmak faydalı olacaktır, çünkü sadece bir yordayıcı ile kategorik bir gerileme kesişmesi anlamsızdır:

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

Poisson ve negatif binom regresyonları ortalama parametrenin günlüğünü belirttiğinden, kategorik regresyon için, katsayıların üstelleştirilmesi size her kategori için gerçek ortalama parametreyi verecektir:

>  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

Bu parametreler, farklı kategori değerleri üzerindeki gerçek araçlara karşılık gelir:

> 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) İyi cevap. Burada daha açık bir şekilde çizilebileceğini düşündüğüm bir şey, bunun Poisson ve negatif binom arasındaki herhangi bir ilişki ile hiçbir ilgisi olmadığı, ancak GLM'leri maksimum olasılıkla takma konusunda daha temel gerçekler olduğu.
kardinal

İyi bir nokta. Poisson ve negatif binominin yapması gereken tek gerçek şey, ortalama parametrenin günlüğü tarafından belirtilmiş olmalarıdır. Örneğin, sıradan bir en küçük kareler regresyonu yaptıysanız, katsayılar nominal olarak farklı olacaktır çünkü o zaman parametre log yerine gerçek ortalama anlamına gelir.
mpr

2
Doğru, ancak bunun biraz ötesine geçtiğini düşünüyorum: Herhangi bir bağlantı işlevini kullanarak herhangi bir GLM'yi takın (ML ile ve çok küçük uyarılara sahip) ve takılan araçlar örnek araçlarla eşleştiğinden, parametre tahminleri doğrusal olmayanlarla aynıdır farklı linkler arasında dönüşüm. Özel hata modeli, üstel bir dağılım ailesinden geldiği gerçeğinin ötesinde önemsizdir.
kardinal

Bu, örtbas etmediğim iyi bir nokta. Bu soruya, özellikle GLM'lerden ziyade ML tahmininin daha genel bir bakış açısıyla yaklaşmıştım. ML'nin numune araçlarından (örn. Lognormal) farklı takılmış araçlar üreteceği doğal olarak ortaya çıkan birçok model vardır. Ancak GLM'ler için gözleminiz daha özlü ve genel bir açıklama getirmektedir.
mpr

2
@ half-pass: Tüm ortogonal kategorik modellerinize uydurun y~X+0ve tekrar deneyin. :-)
kardinal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.