पॉइसन और नकारात्मक द्विपद रिग्रेसिएशन एक ही गुणांक में कब फिट होते हैं?


38

मैंने देखा है कि आर, पॉइसन और नकारात्मक द्विपद (एनबी) के प्रतिगमन हमेशा स्पष्ट के लिए समान गुणांक वाले लगते हैं, लेकिन निरंतर नहीं, भविष्यवक्ता।

उदाहरण के लिए, यहाँ एक श्रेणीबद्ध भविष्यवक्ता के साथ एक प्रतिगमन है:

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

यहाँ छवि विवरण दर्ज करें

यहां एक निरंतर भविष्यवक्ता के साथ एक उदाहरण दिया गया है, जहां पोइसन और एनबी विभिन्न गुणांक फिट करते हैं:

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

यहाँ छवि विवरण दर्ज करें

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

यहाँ छवि विवरण दर्ज करें

और, एक अन्य भविष्यवक्ता सहित, नए भविष्यवक्ता के निरंतर होने पर भी मॉडल विभिन्न गुणांक फिट करने का कारण बनता है। तो, यह मेरे मूल उदाहरण में बनाए गए डमी चरों की ऑर्थोगोनलिटी के साथ कुछ करना है?

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
साज़िश! मैं निश्चित रूप से कोशिश करूंगा। और धन्यवाद, मैं उत्सुकता से आपके उत्तर की प्रतीक्षा कर रहा हूं।
अर्ध-पास

क्षमा करें @ आधा-पास; मैं इस बारे में नहीं भूली हूं और एक दिन के भीतर कुछ पाने की कोशिश करूंगी। (मेरे पास आधा उत्तर एक साथ है, लेकिन अन्य कार्यों से दूर हो गया है।) उम्मीद है कि इनाम भी अन्य उत्तरों को आकर्षित करेगा। चीयर्स। :-)
कार्डिनल

कोई चिंता नहीं, @cardinal! मुझे पता है कि आप और यहां के सभी अन्य अद्भुत गुरु सीवी के बाहर रहते हैं :)
अर्ध-पास

जवाबों:


29

आपने अधिकतम संभावना के हिसाब से एक अंतरंग, लेकिन सामान्य, GLM की संपत्ति की खोज की है । परिणाम बाहर चला जाता है एक बार एक सभी का सबसे सामान्य स्थिति पर विचार करता है: एक फिटिंग एकल एक करने के लिए पैरामीटर एकल अवलोकन!

μ^j=y¯jj

log

जब हम अधिक संरचना के साथ एक पैरामीरिजेशन में रुचि रखते हैं, या जो कि निरंतर भविष्यवाणियों पर निर्भर करता है, तो वितरण के माध्य-विचरण संबंध के कारण ग्रहण की गई त्रुटि संरचना प्रासंगिक हो जाती है क्योंकि यह मापदंडों और नॉनलाइनियर फ़ंक्शन से संबंधित है जो सशर्त के लिए उपयोग किया जाता है। माध्यम।

जीएलएम और घातीय फैलाव परिवार: क्रैश कोर्स

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

हेडिंग में कैवेट केवल इस तथ्य को संदर्भित करता है कि कच्चे अनुमान लिंक फ़ंक्शन के साथ अलग-अलग होंगे, लेकिन निहित माध्य-पैरामीटर अनुमान नहीं होंगे।

आर कोड

# 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

@, मैं इसे आपके लिए पूरक के रूप में सोचना पसंद करूंगा। जब मैंने आपकी पोस्ट देखी तो मैं बहुत खुश हुआ; आपने स्पष्ट रूप से और संक्षिप्त रूप से वर्णन किया है (और दिखाया गया है) क्या चल रहा है। मेरे पोस्ट कभी-कभी पढ़ने के लिए थोड़ा लंबा हो जाता है; मुझे डर है कि यह उनमें से एक है।
कार्डिनल

आप दोनों अद्भुत हैं। इतनी स्पष्टता और कठोरता के साथ मुझे समझाने के लिए बहुत-बहुत धन्यवाद। मुझे अब कुछ और समय बिताने की ज़रूरत है :)
अर्ध-पास

@cardinal आपको " family=negative.binomial(theta=2)" में 2 कहां से मिला ?
टिमोथी.सेलाउ

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) अच्छा जवाब। एक चीज जो मुझे लगता है कि यहां और अधिक स्पष्ट रूप से तैयार की जा सकती है, इसका वास्तव में पोइसन और नकारात्मक द्विपद के बीच किसी भी संबंध से कोई लेना-देना नहीं है, बल्कि अधिकतम संभावना के माध्यम से GLM को फिट करने के बारे में अधिक बुनियादी तथ्य हैं।
कार्डिनल

अच्छी बात। केवल असली चीज़ पॉइसन और नकारात्मक द्विपद का इसके साथ यह करना है कि वे माध्य पैरामीटर के लॉग द्वारा निर्दिष्ट किए जाते हैं। उदाहरण के लिए, यदि आपने एक साधारण न्यूनतम वर्ग प्रतिगमन किया, तो गुणांक नाममात्र अलग होगा क्योंकि तब पैरामीटर लॉग के बजाय वास्तविक मतलब होगा।
mpr

2
यह सच है, लेकिन मुझे लगता है कि यह थोड़ा आगे निकल जाता है: किसी भी लिंक फ़ंक्शन का उपयोग करके किसी भी GLM को फ़िट करें (एमएल द्वारा, और बहुत मामूली कैविटीज़ के साथ) और क्योंकि फिट किए गए साधन नमूना के साधनों से मेल खाएंगे, तो पैरामीटर अनुमान nonlinear तक समान हैं विभिन्न लिंक के बीच परिवर्तन। विशिष्ट त्रुटि मॉडल इस तथ्य से परे अप्रासंगिक है कि यह एक घातीय फैलाव परिवार से आता है।
कार्डिनल

यह एक अच्छी बात है कि मैंने कवर नहीं किया। मैंने विशेष रूप से जीएलएम के बजाय एमएल अनुमान के अधिक सामान्य दृष्टिकोण से इस सवाल का संपर्क किया। ऐसे बहुत से प्राकृतिक रूप से मॉडल प्रस्तुत किए जा रहे हैं जहाँ एमएल सज्जित साधनों का उत्पादन करेंगे, जो नमूना साधनों से भिन्न होते हैं (जैसे कि lognormal)। लेकिन जीएलएम के लिए, आपका अवलोकन अधिक संक्षिप्त और अधिक सामान्य स्पष्टीकरण की ओर जाता है।
mpr

2
@ आधा-पास: अपने सभी ऑर्थोगोनल श्रेणीबद्ध मॉडलों को फिट करें y~X+0और फिर से प्रयास करें। :-)
कार्डिनल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.