การถดถอยแบบลอจิสติกใช้การกระจายแบบทวินามอย่างไร


19

ฉันพยายามที่จะเข้าใจว่าการถดถอยโลจิสติกใช้การกระจายตัวแบบทวินามอย่างไร

สมมติว่าฉันกำลังศึกษาความสำเร็จของรังนกในนก ความน่าจะเป็นของรังที่สำเร็จคือ 0.6 ด้วยการแจกแจงทวินามฉันสามารถคำนวณความน่าจะเป็นของความสำเร็จ r ที่ได้รับจากการทดลอง n (จำนวนรังที่ศึกษา)

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

ภายในบริบทที่ฉันอธิบายไว้การถดถอยโลจิสติกใช้การแจกแจงทวินามเป็นอย่างไร

ฉันกำลังมองหาคำตอบที่ใช้งานง่ายดังนั้นคำตอบที่ไม่มีสมการ! ฉันคิดว่าสมการจะมีประโยชน์ก็ต่อเมื่อมีความเข้าใจในระดับที่เข้าใจง่าย



2
เป็นเธรดที่ดีสำหรับการอ้างอิง @ user777 แต่ฉันคิดว่ามันอาจไม่ทำงานเหมือนกันถ้า OP ขอคำอธิบายเป็นพิเศษโดยไม่มีสมการ อย่างไรก็ตามคำถามที่ดีคือบทบาทของการแจกแจงทวินามนั้นสามารถอธิบายได้อย่างดีโดยไม่มีสมการใด ๆ หรือไม่ แน่นอนว่าแอลอาร์สามารถให้คำอธิบายที่เข้าใจง่าย แต่บทบาทของทวินามที่มีค่า LR เป็นคณิตศาสตร์ค่อนข้างโดยเนื้อแท้
gung - Reinstate Monica

@gung ขอโทษที่ luciano เห็น "การแจกแจงทวินาม" เขียนทับ "ไม่มีสมการ" เมื่อฉันพิจารณาคำตอบที่เป็นไปได้ เห็นได้ชัดว่าไม่สอดคล้องกับคำขอของ OP
Sycorax พูดว่า Reinstate Monica

ฉันรู้สึกว่าเข้าใจแนวคิดการใช้มาตราส่วนอัตราต่อรองสำหรับการถดถอยแล้วแปลงจากมาตราส่วน logit เป็นมาตราส่วน 0-1 แต่ฉันยังคงอ่านสิ่งต่าง ๆ ตามบรรทัดของ 'ข้อผิดพลาดที่มีการกระจายแบบทวินาม' ข้อผิดพลาดสามารถกระจายแบบทวินามได้อย่างไร
luciano

5
ไม่ว่าคุณจะอ่านหนังสือเล่มไหนในนั้นทิ้งมันไป
Scortchi - Reinstate Monica

คำตอบ:


7

สมมติว่าคุณสังเกตหลายรังที่แตกต่างกันอุณหภูมิเฉลี่ยวันทีความน่าจะเป็นของความสำเร็จของรังขึ้นอยู่กับอุณหภูมิอย่างไร (ถ้ารังมีอิสระจำนวนรังที่ประสบความสำเร็จที่อุณหภูมิแล้วแจกแจงแบบทวินามด้วยเท่ากับจำนวนรังที่สังเกตและความน่าจะเป็นความสำเร็จ )π ( t ) t t n π ( t )tπ(t)ttnπ(t)

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


15

ถ้าไม่มีสมการ Yikes มาดูกัน:

แบบจำลองการถดถอยโลจิสติกเป็นแบบจำลองสำหรับพารามิเตอร์ของการแจกแจงทวินาม ด้วยตัวทำนายอย่างต่อเนื่องแต่ละจุดสามารถมีการแจกแจงของตนเอง (ในกรณีที่การสังเกตเป็น 0-1 เราจัดการกับกรณีพิเศษของเบอร์นูลลีนี่เป็นสถานการณ์ทั่วไป)p

จะได้รับไม่ได้ถ่ายแบบ ดังนั้นผลที่ได้คือมีรูปแบบที่เกี่ยวข้อง 's และเป็นที่รู้จักกันเราสามารถจำลองข้อมูลทวินามในแง่ของการทำนายที่อธิบายความหมาย (และความแปรปรวน) ผ่านรูปแบบสำหรับพีโมเดลอาจเหมาะสมผ่านการประเมินความเป็นไปได้สูงสุด แต่เนื่องจากรูปแบบพิเศษ (ตระกูลชี้แจง) ML จึงค่อนข้าง "ดี"npinip

เนื่องจากลิงก์โลจิสติกส์เป็นมาตรฐานสำหรับตระกูลทวินามมันก็ยิ่งดีกว่าเนื่องจากสถิติที่เพียงพอมีรูปแบบที่ง่ายมาก - ทำให้สะดวกในการจัดการกับกลุ่มตัวอย่างขนาดใหญ่หรือแม้แต่การพัฒนาอัลกอริทึม 'ออนไลน์'

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

ด้วยการถดถอยโลจิสติกโค้ง (ฟังก์ชั่นการเชื่อมโยง) เป็นฟังก์ชั่นการขนส่ง มีฟังก์ชั่นอื่น ๆ ที่เป็นไปได้และแพ็คเกจจำนวนมากนำไปใช้งานหลายอย่าง (R มีสามสิ่งที่เหมาะสมในการglmทำงานของมันหากฉันจำได้ถูกต้อง)


ไม่มีสัญลักษณ์ความเท่าเทียมกันได้รับอันตรายในการสร้างโพสต์นี้


2

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

นกมีบางสิ่งบางอย่างเกิดขึ้นกับพวกเขาแม้ว่า: เหรียญอาจจะประสบความสำเร็จอย่างมากในบางอุณหภูมิเมื่อเทียบกับที่อื่น ดังนั้นเมื่อคุณมีโอกาสสังเกตรังที่อุณหภูมิที่กำหนดจำนวนความสำเร็จจะเท่ากับจำนวนการโยนสำเร็จของเหรียญเดียวกัน - หนึ่งสำหรับอุณหภูมินั้น การแจกแจงทวินามที่สอดคล้องกันอธิบายถึงโอกาสของความสำเร็จ นั่นคือมันสร้างความน่าจะเป็นของความสำเร็จเป็นศูนย์หนึ่งในสองของ ... และอื่น ๆ ผ่านจำนวนของรัง

การประมาณค่าที่เหมาะสมอย่างหนึ่งของความสัมพันธ์ระหว่างอุณหภูมิและวิธีการที่พระเจ้าโหลดเหรียญนั้นได้รับตามสัดส่วนของความสำเร็จที่สังเกตได้ที่อุณหภูมินั้น นี่เป็นค่าประมาณความน่าจะเป็นสูงสุด (MLE)

71033/7.3/73

5,10,15,200,3,2,32,7,5,3

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

แบบจำลอง "อิ่มตัว" นี้ไม่มีประโยชน์มากอย่างแม่นยำเพราะไม่ได้ให้เราประเมินว่าพระเจ้าจะบรรจุเหรียญที่อุณหภูมิปานกลาง ในการทำเช่นนั้นเราต้องสมมติว่ามีเส้นโค้ง "แนวโน้ม" บางอย่างที่เกี่ยวข้องกับการโหลดเหรียญกับอุณหภูมิ

รูป

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

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

ภาพนิ่งถดถอยโลจิสติกส์และดึงเส้นรอบที่เป็นไปได้ (ในระบบพิกัดที่ใช้โดยแผง "Logit Response") แปลงความสูงของพวกเขาให้เป็นความน่าจะเป็นแบบทวินาม (ที่ "พอดี" พาเนล) ประเมินโอกาสที่ได้รับมอบหมาย ) และเลือกบรรทัดที่ให้ชุดค่าผสมที่ดีที่สุดของโอกาสเหล่านั้น

"ดีที่สุด" คืออะไร? ง่ายๆว่าความน่าจะเป็นรวมของข้อมูลทั้งหมดมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ ด้วยวิธีนี้ไม่มีความน่าจะเป็นเดี่ยว (กลุ่มสีแดง) ที่ได้รับอนุญาตให้มีขนาดเล็กอย่างแท้จริง แต่โดยทั่วไปแล้วความน่าจะเป็นส่วนใหญ่จะไม่สูงเท่าที่พวกเขาอยู่ในรูปแบบอิ่มตัว

นี่คือการวนซ้ำหนึ่งครั้งของการค้นหาการถดถอยโลจิสติกที่บรรทัดถูกหมุนลง:

รูปที่ 2

1015องศา แต่เป็นงานที่แย่มากในการปรับข้อมูลอื่นให้เหมาะสม (ที่ 5 และ 20 องศาความน่าจะเป็นแบบทวินามที่กำหนดให้กับข้อมูลนั้นเล็กมากจนคุณไม่สามารถมองเห็นกลุ่มสีแดง) โดยรวมแล้วนี่เป็นแบบที่แย่กว่าแบบที่แสดงในรูปแรก


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


ภาคผนวก: Rรหัสในการสร้างตัวเลข

#
# Create example data.
#
X <- data.frame(temperature=c(5,10,15,20),
                nests=c(2,7,5,3),
                successes=c(0,3,2,3))
#
# A function to plot a Binomial(n,p) distribution and highlight the value `k0`.
#
plot.binom <- function(n, p, k0, highlight="#f02020", ...) {
  plot(0:n, dbinom(0:n, n, p), type="h", yaxt="n",
       xlab="Trials", ylab="Probability", ...)
  abline(v = p*n, lty=3, lwd=2)
  if(!missing(k0)) lines(rep(k0,2), c(0, dbinom(k0,n,p)), lwd=2, col=highlight)
}
#
# A function to convert from probability to log odds.
#
logit <- function(p) log(p) - log(1-p)
#
# Fit a saturated model, then the intended model.
#
# Ordinarily the formula for the saturated model would be in the form
# `... ~ factor(temperature)`, but the following method makes it possible to  
# plot the predicted values in a visually effective way.
#
fit.0 <- glm(cbind(successes, nests-successes) ~ factor(round(temperature/5)), 
             data=X, family=binomial)
summary(fit.0)

fit <- glm(cbind(successes, nests-successes) ~ temperature, 
           data=X, family=binomial)
summary(fit)
#
# Plot both fits, one per row.
#
lfits <- list(fit.0, fit)
par.old <- par(mfrow=c(length(lfits), nrow(X)+2))
for (fit in lfits) {
  #
  # Construct arrays of plotting points.
  #
  X$p.hat <- predict(fit, type="response")
  Y <- data.frame(temperature = seq(min(X$temperature), max(X$temperature), 
                                    length.out=101))
  Y$p.hat <- predict(fit, type="response", newdata=Y)  # Probability
  Y$lambda.hat <- predict(fit, type="link", newdata=Y) # Log odds
  #
  # Plot the fit in terms of log odds.
  #
  with(Y, plot(temperature, lambda.hat, type="n", 
               yaxt="n", bty="n", main="Logit Response",
               ylab=expression(hat(lambda))))
  if (isTRUE(diff(range(Y$lambda.hat)) < 6)) {
    # Draw gridlines and y-axis labels
    p <- c( .10, .25, .5, .75, .9)
    q <- logit(p)
    suppressWarnings(rug(q, side=2))
    abline(h=q, col="#d0d0d0")
    mtext(signif(p, 2), at=q, side=2, cex=0.6)
  }
  with(Y, lines(temperature, lambda.hat, lwd=2, col="#f02020"))
  #
  # Plot the data and the fit in terms of probability.
  #
  with(X, plot(temperature, successes/nests, ylim=0:1,
               cex=sqrt(nests), pch=21, bg="Gray",
               main="Fit"))
  with(Y, lines(temperature, p.hat, col="#f02020", lwd=2))
  #
  # Plot the Binomial distributions associated with each row of the data.
  #
  apply(X, 1, function(x) plot.binom(x[2], x[4], x[3], bty="n", lwd=2, col="Gray",
                                     main=paste(x[1], "Degrees")))
}
par(mfrow=par.old)

จะมีรหัส r เปิดเผยหรือไม่ ขอบคุณมาก.
Maximilian

1
@ Maximilian ฉันเพิ่มรหัสแล้ว
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.