ข้อดีข้อเสียของการเชื่อมโยงเข้าสู่ระบบและการเชื่อมโยงข้อมูลประจำตัวสำหรับการถดถอยปัวซอง


12

ฉันกำลังดำเนินการถดถอยปัวซองกับเป้าหมายสุดท้ายของการเปรียบเทียบ (และการแตกต่างของ) ในขณะที่ถือตัวแปรรุ่นอื่น ๆ (ซึ่งเป็นไบนารีทั้งหมด ) คงที่ ฉันสงสัยว่าถ้าใครสามารถให้คำแนะนำที่เป็นประโยชน์เกี่ยวกับเวลาที่จะใช้ลิงค์บันทึกกับลิงก์ประจำตัว อะไรคือข้อดีข้อเสียของฟังก์ชั่นลิงค์สองแบบนี้ในการถดถอยแบบปัวซองโดยมีเป้าหมายในการเปรียบเทียบความแตกต่างμ^1μ^2

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

UPDATE:

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


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

1
ขอบคุณ @whuber ฉันได้อัปเดตคำถามของฉันเพื่อให้ชัดเจนว่ามีตัวแปรร่วมอื่นในโมเดล ฉันได้เพิ่มหัวข้อ "UPDATE" ที่อธิบายคำถามของฉันอีกเล็กน้อย
StatsStudent

1
สำหรับจุดที่แตกต่างกันในมุมมองเกี่ยวกับบทบาทของฟังก์ชั่นการเชื่อมโยงให้ดูคำตอบของฉันไปที่คำถามที่เกี่ยวข้องอย่างใกล้ชิดที่stats.stackexchange.com/questions/63978
whuber

1
ตัวอย่างที่น่าสนใจ @whuber!
StatsStudent

1
ฉันมักจะบอกว่าตัวเลือกของฟังก์ชั่นการเชื่อมโยงถูกกำหนดโดยปัญหาและข้อมูลที่อยู่ในมือ - ดูตัวอย่างด้านล่าง ...
Tom Wenseleers

คำตอบ:


4

ข้อเสียของลิงค์ตัวตนในกรณีของการถดถอยปัวซองคือ:

  • ดังที่คุณได้กล่าวมามันสามารถสร้างการทำนายนอกขอบเขต
  • คุณอาจได้รับข้อผิดพลาดและคำเตือนแปลก ๆ เมื่อพยายามให้พอดีกับโมเดลเนื่องจากลิงก์อนุญาตให้แลมบ์ดาน้อยกว่า 0 แต่การกระจาย Poisson ไม่ได้กำหนดไว้สำหรับค่าดังกล่าว
  • เนื่องจากการถดถอยของปัวซองถือว่าค่าเฉลี่ยและความแปรปรวนเท่ากันเมื่อคุณเปลี่ยนลิงค์คุณจะเปลี่ยนสมมติฐานเกี่ยวกับความแปรปรวน ประสบการณ์ของฉันเป็นจุดสุดท้ายที่บอกได้มากที่สุด

แต่ท้ายที่สุดนี่คือคำถามเชิงประจักษ์ พอดีกับทั้งสองรุ่น ทำการตรวจสอบสิ่งที่คุณต้องการ หากลิงก์ตัวตนมี AIC ที่ต่ำกว่าและทำได้ดีกว่าหรือดีกว่าในการตรวจสอบอื่น ๆ ทั้งหมดของคุณให้รันด้วยลิงก์ตัวตน

ในกรณีของตัวแบบ logit เทียบกับตัวแบบความน่าจะเป็นแบบเชิงเส้น (เช่นสิ่งที่คุณอ้างถึงเป็นตัวเชื่อมโยงตัวตน) สถานการณ์นั้นตรงไปตรงมามากขึ้น ยกเว้นกรณีที่แปลกใหม่บางอย่างในสาขาเศรษฐศาสตร์ (ซึ่งคุณจะพบว่าคุณทำการค้นหา) โมเดล logit นั้นดีกว่า: ทำให้สมมติฐานน้อยลงและเป็นสิ่งที่คนส่วนใหญ่ใช้ การใช้แบบจำลองความน่าจะเป็นแบบเชิงเส้นในที่ของมันจะเปลี่ยนไปเป็นความวิปริต

สำหรับการตีความโมเดลถ้าคุณใช้ R มีสองแพ็คเกจที่ยอดเยี่ยมสำหรับการยกของหนัก: เอฟเฟกต์ซึ่งใช้งานง่ายสุด ๆ และเซลิกซึ่งใช้งานยาก แต่ยอดเยี่ยมถ้าคุณต้องการทำนาย .


1
คุณพูดถึงว่าโมเดลความน่าจะเป็นเชิงเส้นเป็น "แปลกใหม่" แต่จากการมีปฏิสัมพันธ์กับนักเศรษฐศาสตร์ของฉัน (ฉันเป็นนักสถิติเอง) ดูเหมือนว่ามีสองค่ายซึ่งหนึ่งในนั้นระบุว่าความน่าจะเป็นเชิงเส้นนั้นดีกว่าเพราะเกี่ยวข้องกับสมมติฐานน้อยกว่า ซึ่งเป็นสิ่งที่คนปกติใส่ใจ
zipzapboing

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

ในกรณีของแบบจำลองปัวซองฉันก็จะบอกว่าแอปพลิเคชันมักจะกำหนดว่าเพื่อนร่วมของคุณจะทำหน้าที่เสริมหรือไม่ (ซึ่งจะเป็นการเชื่อมโยงตัวตน) หรือเพิ่มขึ้นในระดับเชิงเส้น (ซึ่งจะเป็นการเชื่อมโยงบันทึก) แต่รุ่นปัวซองที่มีลิงค์ตัวตนปกติก็สมเหตุสมผลแล้วและจะมีความเสถียรเท่านั้นหากมีข้อ จำกัด ที่ไม่เป็นค่าลบในสัมประสิทธิ์ที่ติดตั้ง - สิ่งนี้สามารถทำได้โดยใช้ฟังก์ชั่น nnpois ในแพ็คเกจ R Addreg หรือใช้ฟังก์ชัน nnlm ในแพ็คเกจ NNLM .
Tom Wenseleers

0

ในกรณีของแบบจำลองปัวซองฉันก็จะบอกว่าแอปพลิเคชันมักจะกำหนดว่าเพื่อนร่วมของคุณจะทำหน้าที่เสริมหรือไม่ (ซึ่งจะเป็นการเชื่อมโยงตัวตน) หรือเพิ่มขึ้นในระดับเชิงเส้น (ซึ่งจะเป็นการเชื่อมโยงบันทึก) แต่รุ่นปัวซองที่มีลิงค์ตัวตนปกตินั้นเหมาะสมและเหมาะสมเท่านั้นหากมีข้อ จำกัด แบบไม่ลบค่าสัมประสิทธิ์การติดตั้ง - ซึ่งสามารถทำได้โดยใช้nnpoisฟังก์ชั่นในaddregแพ็คเกจR หรือการใช้nnlmฟังก์ชั่นในNNLMบรรจุภัณฑ์ ดังนั้นฉันจึงไม่เห็นด้วยว่าเราควรจะพอดีกับแบบจำลองของปัวซงทั้งตัวตนและล็อกลิงค์และดูว่าอันไหนที่จบลงด้วยการมี AIC ที่ดีที่สุดและอนุมานโมเดลที่ดีที่สุดโดยอ้างอิงจากสถิติล้วนๆ - โดยส่วนใหญ่ โครงสร้างพื้นฐานของปัญหาที่พยายามแก้ไขหรือข้อมูลในมือ

ยกตัวอย่างเช่นในโครมาโตกราฟี (การวิเคราะห์ GC / MS) เรามักจะวัดสัญญาณซ้อนทับของยอดเขารูปเกาส์ประมาณหลาย ๆ อันและสัญญาณที่ซ้อนทับนี้จะถูกวัดด้วยตัวคูณอิเล็กตรอนซึ่งหมายความว่าสัญญาณที่วัดได้นั้นนับเป็นไอออน เนื่องจากยอดเขาแต่ละแห่งมีคำจำกัดความว่ามีความสูงเป็นบวกและทำหน้าที่เสริมและเสียงรบกวนคือปัวซองรูปแบบพัวซองแบบไม่ลบที่มีตัวเชื่อมโยงตัวตนจะเหมาะสมที่นี่และรูปแบบบันทึกปัวซองนั้นผิดปกติ ในงานวิศวกรรมKullback-Leibler สูญเสียมักจะใช้เป็นฟังก์ชั่นการสูญเสียสำหรับรูปแบบดังกล่าวและลดการสูญเสียนี้จะเทียบเท่ากับการเพิ่มประสิทธิภาพความน่าจะเป็นของที่ไม่เป็นลบเอกลักษณ์ของการเชื่อมโยงรูปแบบปัวส์ซอง (นอกจากนี้ยังมีมาตรการที่แตกต่าง / การสูญเสียอื่น ๆ เช่นอัลฟาหรือแตกต่างเบต้า ที่มีปัวซองเป็นกรณีพิเศษ)

ด้านล่างนี้เป็นตัวอย่างที่เป็นตัวเลขรวมถึงการสาธิตที่การเชื่อมโยงข้อมูลประจำตัวที่ไม่มีข้อ จำกัด Poisson GLM ไม่พอดี (เนื่องจากการขาดข้อ จำกัด nonnegativity) และรายละเอียดบางอย่างเกี่ยวกับวิธีการติดตั้งแบบจำลอง Poisson แบบ nonnegative-linknnpoisที่นี่ในบริบทของการแยกแยะความซ้อนทับของยอดโครมาโตกราฟีที่มีจุดรบกวนเสียงปัวซงโดยใช้เมทริกซ์โควาริเอตแบนด์ที่มีแถบสีซึ่งมีสำเนาของรูปร่างที่เปลี่ยนแปลงของจุดสูงสุดเดียว Nonnegativity ที่นี่มีความสำคัญด้วยเหตุผลหลายประการ: (1) มันเป็นแบบจำลองที่เหมือนจริงเพียงอย่างเดียวสำหรับข้อมูลที่อยู่ในมือ (จุดสูงสุดที่นี่ไม่มีความสูงเชิงลบ) (2) มันเป็นวิธีเดียวที่จะพอดีกับแบบจำลองของปัวซอง การคาดการณ์ไม่เช่นนั้นสำหรับค่า covariate บางค่าอาจเป็นค่าลบซึ่งจะไม่สมเหตุสมผลและจะให้ปัญหาเชิงตัวเลขเมื่อเราพยายามประเมินความเป็นไปได้ที่จะเกิดขึ้น (3) การไม่กระทำโดยไม่ย่อท้อเพื่อทำให้เกิดปัญหาการถดถอยอย่างสม่ำเสมอ โดยทั่วไปแล้วคุณจะไม่ได้รับปัญหาที่เกินกำลังเช่นเดียวกับการถดถอยทั่วไปข้อ จำกัด ของ nonnegativity ส่งผลให้มีการประมาณการณ์ของ sparser ซึ่งมักจะใกล้เคียงกับความจริงบนพื้นดิน สำหรับปัญหาการแยกส่วนด้านล่างเช่นประสิทธิภาพเป็นเรื่องเกี่ยวกับการทำให้เป็นมาตรฐาน LASSO แต่ไม่ต้องการให้ปรับพารามิเตอร์ใด ๆ ( L0-pseudonorm ลงโทษการถดถอยยังคงทำงานได้ดีขึ้นเล็กน้อย แต่มีค่าใช้จ่ายในการคำนวณมากขึ้น )

# we first simulate some data
require(Matrix)
n = 200
x = 1:n
npeaks = 20
set.seed(123)
u = sample(x, npeaks, replace=FALSE) # unkown peak locations
peakhrange = c(10,1E3) # peak height range
h = 10^runif(npeaks, min=log10(min(peakhrange)), max=log10(max(peakhrange))) # unknown peak heights
a = rep(0, n) # locations of spikes of simulated spike train, which are assumed to be unknown here, and which needs to be estimated from the measured total signal
a[u] = h
gauspeak = function(x, u, w, h=1) h*exp(((x-u)^2)/(-2*(w^2))) # peak shape function
bM = do.call(cbind, lapply(1:n, function (u) gauspeak(x, u=u, w=5, h=1) )) # banded matrix with peak shape measured beforehand
y_nonoise = as.vector(bM %*% a) # noiseless simulated signal = linear convolution of spike train with peak shape function
y = rpois(n, y_nonoise) # simulated signal with random poisson noise on it - this is the actual signal as it is recorded
par(mfrow=c(1,1))
plot(y, type="l", ylab="Signal", xlab="x", main="Simulated spike train (red) to be estimated given known blur kernel & with Poisson noise")
lines(a, type="h", col="red")

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

# let's now deconvolute the measured signal y with the banded covariate matrix containing shifted copied of the known blur kernel/peak shape bM

# first observe that regular OLS regression without nonnegativity constraints would return very bad nonsensical estimates
weights <- 1/(y+1) # let's use 1/variance = 1/(y+eps) observation weights to take into heteroscedasticity caused by Poisson noise
a_ols <- lm.fit(x=bM*sqrt(weights), y=y*sqrt(weights))$coefficients # weighted OLS
plot(x, y, type="l", main="Ground truth (red), unconstrained OLS estimate (blue)", ylab="Peak shape", xlab="x", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_ols, type="h", col="blue", lwd=2)

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

# now we use weighted nonnegative least squares with 1/variance obs weights as an approximation of nonnegative Poisson regression
# this gives very good estimates & is very fast
library(nnls)
library(microbenchmark)
microbenchmark(a_wnnls <- nnls(A=bM*sqrt(weights),b=y*sqrt(weights))$x) # 7 ms
plot(x, y, type="l", main="Ground truth (red), weighted nnls estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_wnnls, type="h", col="blue", lwd=2)
# note that this weighted least square estimate in almost identical to  the nonnegative Poisson estimate below and that it fits way faster!!!

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

# an unconstrained identity-link Poisson GLM will not fit:
glmfit = glm.fit(x=as.matrix(bM), y=y, family=poisson(link=identity), intercept=FALSE)
# returns Error: no valid set of coefficients has been found: please supply starting values

# so let's try a nonnegativity constrained identity-link Poisson GLM, fit using bbmle (using port algo, ie Quasi Newton BFGS):
library(bbmle)
XM=as.matrix(bM)
colnames(XM)=paste0("v",as.character(1:n))
yv=as.vector(y)
LL_poisidlink <- function(beta, X=XM, y=yv){ # neg log-likelihood function
  -sum(stats::dpois(y, lambda = X %*% beta, log = TRUE)) # PS regular log-link Poisson would have exp(X %*% beta)
}
parnames(LL_poisidlink) <- colnames(XM)
system.time(fit <- mle2(
  minuslogl = LL_poisidlink ,
  start = setNames(a_wnnls+1E-10, colnames(XM)), # we initialise with weighted nnls estimates, with approx 1/variance obs weights
  lower = rep(0,n),
  vecpar = TRUE,
  optimizer = "nlminb"
)) # very slow though - takes 145s 
summary(fit)
a_nnpoisbbmle = coef(fit)
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson bbmle ML estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpoisbbmle, type="h", col="blue", lwd=2)

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

# much faster is to fit nonnegative Poisson regression using nnpois using an accelerated EM algorithm:
library(addreg)
microbenchmark(a_nnpois <- nnpois(y=y,
                                  x=as.matrix(bM),
                                  standard=rep(1,n),
                                  offset=0,
                                  start=a_wnnls+1.1E-4, # we start from weighted nnls estimates 
                                  control = addreg.control(bound.tol = 1e-04, epsilon = 1e-5),
                                  accelerate="squarem")$coefficients) # 100 ms
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson nnpois estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpois, type="h", col="blue", lwd=2)

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

# or to fit nonnegative Poisson regression using nnlm with Kullback-Leibler loss using a coordinate descent algorithm:
library(NNLM)
system.time(a_nnpoisnnlm <- nnlm(x=as.matrix(rbind(bM)),
                                 y=as.matrix(y, ncol=1),
                                 loss="mkl", method="scd",
                                 init=as.matrix(a_wnnls, ncol=1),
                                 check.x=FALSE, rel.tol=1E-4)$coefficients) # 3s
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson nnlm estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpoisnnlm, type="h", col="blue", lwd=2)

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


1
Y1Y

1
@ ตอนนี้ฉันได้เพิ่มตัวอย่างที่ชัดเจนเพื่อทำให้ประเด็นของฉันชัดเจนยิ่งขึ้น! ความคิดใด ๆ ที่ฉันใช้ในการยกกำลังสองน้อยที่สุดเพื่อลบค่าประมาณที่ไม่ใช่เชิงลบจริงตัวเชื่อมโยงโมเดลปัวซองก็ยินดีด้วยเช่นกัน!
Tom Wenseleers

Btw - nnls ที่ถ่วงน้ำหนักที่ฉันใช้เพื่อประมาณค่าตัวบ่งชี้ non-non-Negative identity-link Poisson GLM ในความเป็นจริงนั้นสอดคล้องกับการใช้การวนซ้ำหนึ่งครั้งของสี่เหลี่ยมจัตุรัสเชิงลบที่มีค่าน้อยที่สุดเพื่อให้พอดีกับ Poisson GLM แบบไม่ลบ Poisson GLM เหมาะกับการเริ่มต้น)
Tom Wenseleers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.