ปัวซองและการถดถอยทวินามลบเมื่อใดจะพอดีกับค่าสัมประสิทธิ์เดียวกัน


38

ฉันสังเกตเห็นว่าใน R, Poisson และการถดถอยแบบทวินามลบ (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, pg 118-119) ซึ่งเป็นตัวทำนายแบบแบ่งเพศมีความสัมพันธ์กับสัมประสิทธิ์ที่แตกต่างกันเล็กน้อยโดยปัวซอง ( ) และ NB ( b = 0.881 ) เขากล่าวว่า: "อัตราส่วนอัตราอุบัติการณ์ระหว่างแบบจำลอง Poisson และ NB นั้นค่อนข้างคล้ายคลึงกัน ไม่น่าแปลกใจเลยที่ความใกล้ชิดของα [สอดคล้องกับ1 / θ in R] ถึงศูนย์”b=0.883b=0.881α1/θ

summary(rs2)θ

แล้วทำไมค่าสัมประสิทธิ์มีค่าเท่ากันทุกประการ? และทำไมสำหรับนักทำนายเชิงหมวดหมู่เท่านั้น?


แก้ไข # 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))

ป้อนคำอธิบายรูปภาพที่นี่

และรวมถึงตัวทำนายอื่นทำให้แบบจำลองมีค่าสัมประสิทธิ์ต่างกันแม้ว่าตัวทำนายใหม่จะต่อเนื่อง ดังนั้นมันเป็นเรื่องเกี่ยวกับ orthogonality ของตัวแปรจำลองที่ฉันสร้างขึ้นในตัวอย่างดั้งเดิมของฉัน

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

ขออภัย @ half-pass ฉันยังไม่ลืมเกี่ยวกับสิ่งนี้และจะพยายามทำให้บางสิ่งภายในหนึ่งวัน (ฉันมีคำตอบครึ่งคำรวมกัน แต่ได้รับการดึงออกจากงานอื่น ๆ ) หวังว่าความโปรดปรานจะดึงดูดคำตอบอื่น ๆ ไชโย :-)
สำคัญ

ไม่ต้องกังวล @cardinal! ฉันรู้ว่าคุณและปรมาจารย์ที่น่าทึ่งอื่น ๆ ที่นี่มีชีวิตอยู่นอก CV :)
half-pass

คำตอบ:


29

คุณได้ค้นพบที่ใกล้ชิด แต่ทั่วไปทรัพย์สินของ GLMs พอดีโดยโอกาสสูงสุด ผลที่ออกมาเมื่อพิจารณาหนึ่งกรณีที่ง่ายที่สุดของทั้งหมด: การติดตั้งพารามิเตอร์เดียวกับการสังเกตเพียงครั้งเดียว !

μ^j=y¯jj

log

เมื่อเรามีความสนใจในการสร้างตัวแปรที่มีโครงสร้างมากขึ้นหรือที่ขึ้นอยู่กับตัวทำนายอย่างต่อเนื่องแล้วโครงสร้างข้อผิดพลาดที่สันนิษฐานนั้นจะเกี่ยวข้องเนื่องจากความสัมพันธ์เฉลี่ยความแปรปรวนของการแจกแจงเนื่องจากเกี่ยวข้องกับพารามิเตอร์และฟังก์ชันที่ไม่ใช่เชิงเส้น วิธี

GLMs และตระกูลการกระจายแบบเลขชี้กำลัง: ความผิดพลาด

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

อะไรคือความแตกต่างของการทำนายต่อเนื่อง

เมื่อตัวทำนายนั้นต่อเนื่องหรือมีการจัดหมวดหมู่ แต่ไม่สามารถลดให้อยู่ในรูปแบบมุมฉากได้ดังนั้นความน่าจะเป็นไม่ได้อยู่ในเงื่อนไขของแต่ละคำศัพท์อีกต่อไปโดยมีค่าเฉลี่ยแยกต่างหากขึ้นอยู่กับพารามิเตอร์ที่แยกต่างหาก ณ จุดนี้โครงสร้างข้อผิดพลาดและฟังก์ชั่นการเชื่อมโยงไม่เข้ามาเล่น

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

ด้วยวิธีนี้ฟังก์ชั่นลิงค์และตัวแบบข้อผิดพลาดสันนิษฐานว่ามีความเกี่ยวข้องกับการประมาณ

ตัวอย่าง: โมเดลข้อผิดพลาด (เกือบ) ไม่สำคัญ

k=6

log

จากตารางเราจะเห็นว่าการประมาณการพารามิเตอร์เหมือนกันแม้ว่า 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

0

ตัวอย่าง: ฟังก์ชั่นลิงค์ (เกือบ) ไม่สำคัญ

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 ชัดเจนและครอบคลุมคำตอบที่ดีกว่าสิ่งที่ฉันให้
mpr

@mpr ฉันอยากจะคิดว่ามันเป็นของคุณ ฉันดีใจมากเมื่อเห็นโพสต์ของคุณ คุณอธิบายอย่างชัดเจนและรัดกุม (และแสดง) สิ่งที่เกิดขึ้น บางครั้งโพสต์ของฉันอาจใช้เวลาอ่านนาน ฉันกลัวว่านี่เป็นหนึ่งในนั้น
พระคาร์ดินัล

คุณทั้งคู่น่าทึ่งมาก ขอบคุณมากที่อธิบายเรื่องนี้ให้ฉันด้วยความชัดเจนและความแม่นยำดังกล่าว ฉันต้องใช้เวลาย่อยมากขึ้นตอนนี้ :)
ครึ่งผ่าน

@cardinal คุณได้รับ 2 ใน " family=negative.binomial(theta=2)" มาจากไหน
timothy.s.lau

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 

λ

λ

λθθλ

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) คำตอบที่ดี สิ่งหนึ่งที่ฉันคิดว่าสามารถดึงออกมาได้อย่างชัดเจนยิ่งขึ้นที่นี่คือสิ่งนี้ไม่มีส่วนเกี่ยวข้องกับความสัมพันธ์ระหว่างปัวซงกับทวินามลบ แต่ค่อนข้างข้อเท็จจริงพื้นฐานเพิ่มเติมเกี่ยวกับการปรับ GLMs ให้เหมาะสมผ่านโอกาสสูงสุด
พระคาร์ดินัล

จุดดี. สิ่งเดียวที่เป็นจริงปัวซองและลบทวินามก็คือพวกมันถูกระบุโดยบันทึกของพารามิเตอร์ค่าเฉลี่ย ตัวอย่างเช่นถ้าคุณทำการถดถอยกำลังสองน้อยที่สุดสามัญสัมประสิทธิ์จะแตกต่างกันในนามเพราะพารามิเตอร์จะเป็นค่าเฉลี่ยจริงมากกว่าบันทึก
mpr

2
จริง แต่ฉันคิดว่ามันไปไกลกว่านั้น: ติดตั้งGLM ใด ๆโดยใช้ฟังก์ชั่นลิงค์ใด ๆ (โดย ML และกับ caveats เล็ก ๆ น้อย ๆ ) และเนื่องจากวิธีการติดตั้งจะตรงกับค่าเฉลี่ยตัวอย่างจากนั้นค่าประมาณพารามิเตอร์จะเหมือนกันกับไม่เชิงเส้น การเปลี่ยนแปลงระหว่างลิงค์ต่าง ๆ โมเดลข้อผิดพลาดเฉพาะนั้นไม่เกี่ยวข้องเกินกว่าความจริงที่ว่ามันมาจากตระกูลการกระจายแบบเลขชี้กำลัง
พระคาร์ดินัล

นี่เป็นจุดที่ดีที่ฉันไม่ครอบคลุม ฉันเข้าหาคำถามนี้จากมุมมองทั่วไปของการประเมิน ML มากกว่า GLMs โดยเฉพาะ มีโมเดลที่เกิดขึ้นเองตามธรรมชาติมากมายซึ่ง ML จะสร้างวิธีการติดตั้งที่แตกต่างจากตัวอย่างตัวอย่าง (เช่น lognormal) แต่สำหรับ GLM การสังเกตของคุณจะนำไปสู่คำอธิบายที่กระชับและชัดเจนยิ่งขึ้น
mpr

2
@ half-pass: ติดตั้งโมเดลหมวดหมู่มุมฉากของคุณทั้งหมดy~X+0แล้วลองอีกครั้ง :-)
สำคัญ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.