การคำนวณช่วงความมั่นใจสำหรับการถดถอยโลจิสติก


15

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

fit = glm(formula = has_clicked ~ has_x + has_y, 
          data=df, 
          family = binomial())

นี่คือผลลัพธ์จากรุ่นของฉัน:

Call:
glm(formula = has_clicked ~ has_x + has_y, 
    family = binomial(), data = active_domains)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.9869  -0.9719  -0.9500   1.3979   1.4233  

Coefficients:
                      Estimate Std. Error z value Pr(>|z|)    
(Intercept)          -0.504737   0.008847 -57.050  < 2e-16 ***
has_xTRUE -0.056986   0.010201  -5.586 2.32e-08 ***
has_yTRUE  0.038579   0.010202   3.781 0.000156 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 217119  on 164182  degrees of freedom
Residual deviance: 217074  on 164180  degrees of freedom
AIC: 217080

Number of Fisher Scoring iterations: 4

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

predict(fit, data.frame(has_x = T, has_y=T), type = "response")

ฉันไม่เข้าใจว่าฉันสามารถรายงานเกี่ยวกับ Std ได้อย่างไร ข้อผิดพลาดของการทำนาย

  1. ฉันต้องใช้หรือไม่ หรือฉันต้องการแปลง S Eโดยใช้วิธีการที่อธิบายไว้ที่นี่ ?1.96SESE

  2. หากฉันต้องการเข้าใจข้อผิดพลาดมาตรฐานสำหรับตัวแปรทั้งสองฉันจะพิจารณาได้อย่างไร

ต่างจากคำถามนี้ฉันสนใจที่จะเข้าใจว่าข้อผิดพลาดส่วนบนและล่างเป็นเปอร์เซ็นต์ ยกตัวอย่างเช่นการแสดงการคาดการณ์ของฉันมีค่า 37% สำหรับTrue,Trueผมสามารถคำนวณได้ว่านี่คือสำหรับ95 % C ฉัน ? (เลือก 0.3% เพื่ออธิบายจุดของฉัน)+/0.395%CI




@kjetilbhalvorsen คุณแน่ใจหรือว่าซ้ำกันเนื่องจาก OP ดูเหมือนจะต้องการช่วงเวลาการทำนาย แต่ดูเหมือนว่าจะทำงานในระดับ OR หรือมากกว่าระดับบันทึกซึ่งอาจเป็นสาเหตุของปัญหาหรือไม่
mdewey

2
หากคุณต้องการประเมินว่าการถดถอยแบบลอจิสติกทำนายได้ดีเพียงใดก็มักจะใช้มาตรการที่แตกต่างจากการทำนาย + SE หนึ่งในการประเมินผลที่ได้รับความนิยมคือ ROC-Curve กับ AUC ที่เกี่ยวข้อง
adibender

1
สิ่งนี้จะช่วยได้ไหม? stackoverflow.com/questions/47414842/…
Xavier Bourret Sicotte

คำตอบ:


24

คำถามของคุณอาจมาจากข้อเท็จจริงที่ว่าคุณกำลังเผชิญกับอัตราต่อรองและความน่าจะเป็นที่น่าสับสนในตอนแรก ตั้งแต่รูปแบบโลจิสติกคือการเปลี่ยนแปลงที่ไม่ใช่เชิงเส้นของคำนวณช่วงความเชื่อมั่นไม่เป็นที่ตรงไปตรงมาβTx

พื้นหลัง

จำได้ว่าสำหรับรูปแบบการถดถอยโลจิสติก

  • ความน่าจะเป็นของ : p = e α + β 1 x 1 + β 2 x 2(Y=1)p=eα+β1x1+β2x21+eα+β1x1+β2x2

  • (Y=1)(p1p)=eα+β1x1+β2x2

  • (Y=1)log(p1p)=α+β1x1+β2x2

x1x1+1

Odds(Y=1)=eα+β1(x1+1)+β2x2=eα+β1x1+β1+β2x2
  • ดังนั้นอัตราต่อรอง (OR)จึงเป็นเช่นนั้น

Odds(x1+1)Odds(x1)=eα+β1(x1+1)+β2x2eα+β1x1+β2x2=eβ1
  • β1

  • eα+β1x1+β1+β2x21+eα+β1x1+β1+β2x2eα+β1x1+β2x21+eα+β1x1+β2x2

การตีความค่าสัมประสิทธิ์

βj

  • xjβj
  • xjeβj
  • xjkk+ΔeβjΔ
  • xj

βj

1.96SE

βj

βj±zSE(βj)

eβj±zSE(βj)

ซึ่งเป็นช่วงความมั่นใจในอัตราต่อรอง โปรดทราบว่าช่วงเวลาเหล่านี้ใช้สำหรับพารามิเตอร์เดียวเท่านั้น

หากฉันต้องการเข้าใจข้อผิดพลาดมาตรฐานสำหรับตัวแปรทั้งสองฉันจะพิจารณาได้อย่างไร

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

ขั้นตอน Bonferroni สำหรับพารามิเตอร์หลายตัว

g1α

βg±z(1α2g)SE(βg)

ช่วงความเชื่อมั่นสำหรับการประมาณความน่าจะเป็น

แบบจำลองลอจิสติกแสดงผลลัพธ์การประมาณความน่าจะเป็นของการสังเกตการณ์หนึ่งและเรามุ่งมั่นที่จะสร้างช่วงเวลาความถี่รอบความน่าจะเป็นจริง pPr(pLppU)=.95

วิธีการหนึ่งที่เรียกว่าการแปลงจุดปลายทำสิ่งต่อไปนี้:

  • xTβ
  • F(xTβ)

Pr(xTβ)=F(xTβ)xTβ

[Pr(xTβ)LPr(xTβ)Pr(xTβ)U]=[F(xTβ)LF(xTβ)F(xTβ)U]

βTx±zSE(βTx)

[exTβzSE(xTβ)1+exTβzSE(xTβ),exTβ+zSE(xTβ)1+exTβ+zSE(xTβ),]

xTβ

Var(xTβ)=xTΣx

(0,1)

มีวิธีการอื่น ๆ อีกมากมายเช่นกันโดยใช้วิธีการเดลต้า bootstrapping ฯลฯ ซึ่งแต่ละคนมีสมมติฐานข้อดีและข้อ จำกัด ของตัวเอง


แหล่งที่มาและข้อมูล

หนังสือเล่มโปรดของฉันในหัวข้อนี้คือ"Applied Linear Statistics Models"โดย Kutner, Neter, Li, บทที่ 14

มิฉะนั้นนี่คือแหล่งข้อมูลออนไลน์บางส่วน:


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

2
ใช่คุณอาจจะถูกต้อง - แต่การเข้าใจอัตราต่อรอง, อัตราต่อรองและความน่าจะเป็นสำหรับการถดถอยบันทึกเป็นสิ่งที่ฉันต่อสู้ในอดีต - ฉันหวังว่าโพสต์นี้จะสรุปหัวข้อดีพอที่จะช่วยคนในอนาคต บางทีฉันสามารถตอบคำถามได้ชัดเจนยิ่งขึ้นโดยการจัดหา CI แต่เราต้องการเมทริกซ์ความแปรปรวนร่วม
Xavier Bourret Sicotte

5

ในการรับช่วงความมั่นใจ 95% ของการทำนายคุณสามารถคำนวณในระดับ logit แล้วแปลงกลับเป็นระดับความน่าจะเป็น 0-1 นี่คือตัวอย่างการใช้ชุดข้อมูลไททานิค

library(titanic)
data("titanic_train")

titanic_train$Pclass = factor(titanic_train$Pclass, levels = c(1,2,3), labels = c('First','Second','Third'))

fit = glm(Survived ~ Sex + Pclass, data=titanic_train, family = binomial())

inverse_logit = function(x){
  exp(x)/(1+exp(x))
}

predicted = predict(fit, data.frame(Sex='male', Pclass='First'), type='link', se.fit=TRUE)

se_high = inverse_logit(predicted$fit + (predicted$se.fit*1.96))
se_low = inverse_logit(predicted$fit - (predicted$se.fit*1.96))
expected = inverse_logit(predicted$fit)

ค่าเฉลี่ยและต่ำ / สูง 95% CI

> expected
        1 
0.4146556 
> se_high
        1 
0.4960988 
> se_low
        1 
0.3376243 

และผลลัพธ์จากการใช้type='response'งานเพียงอย่างเดียวซึ่งให้ค่าเฉลี่ยเท่านั้น

predict(fit, data.frame(Sex='male', Pclass='First'), type='response')
        1 
0.4146556

predict(fit, data.frame(Sex='male', Pclass='First'), type='response', se.fit=TRUE)จะทำงาน.
Tony416
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.