แบบจำลองการถดถอยโลจิสติกไม่ได้มาบรรจบกัน


39

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

flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)

... แต่ได้ผลลัพธ์ต่อไปนี้

> flights$BigDelay <- flights$ArrDelay >= 10
> delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  fitted probabilities numerically 0 or 1 occurred
> summary(delay.model)

Call:
glm(formula = BigDelay ~ ArrDelay, family = binomial(link = "logit"),
    data = flights)

Deviance Residuals:
       Min          1Q      Median          3Q         Max
-3.843e-04  -2.107e-08  -2.107e-08   2.107e-08   3.814e-04

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)  -312.14     170.26  -1.833   0.0668 .
ArrDelay       32.86      17.92   1.833   0.0668 .
---
Signif. codes:  0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.8375e+06  on 2291292  degrees of freedom
Residual deviance: 9.1675e-03  on 2291291  degrees of freedom
AIC: 4.0092

Number of Fisher Scoring iterations: 25

หมายความว่าอัลกอริทึมไม่ได้มาบรรจบกัน? ฉันคิดว่าเป็นเพราะBigDelayค่านิยมTRUEและFALSEแทนที่จะเป็น0และ1แต่ฉันได้รับข้อผิดพลาดเดียวกันหลังจากที่ฉันแปลงทุกอย่าง ความคิดใด ๆ


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

1
ไม่แน่ใจว่าฉันสมควรได้รับ "ยอมรับ" @Conjugate คำตอบก่อนหน้านี้อธิบายสิ่งที่ผิดกับแบบจำลองของคุณ ฉันคิดว่ามันคุ้มค่าที่จะอธิบายคำเตือนที่คุณพูดถึงในแง่ของอัลกอริทึม
Reinstate Monica - G. Simpson

3
หากคุณมีเวลาหน่วงที่เกิดขึ้นจริงคุณมีโอกาสที่จะได้รับข้อมูลที่ดีขึ้นโดยการสร้างแบบจำลองเหล่านั้นแทนที่จะลดลงเป็นตัวแปรไบนารี
whuber


คุณสามารถลองใช้ฟังก์ชัน glm1 () มันเอาชนะปัญหาที่มาบรรจบกัน

คำตอบ:


33

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

delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial,
                   control = list(maxit = 50))

ดังที่ @Conjugate Prior กล่าวว่าคุณดูเหมือนจะคาดการณ์การตอบสนองกับข้อมูลที่ใช้ในการสร้าง คุณต้องแยกสมบูรณ์ที่สุดเท่าที่ArrDelay < 10จะคาดการณ์FALSEและการใด ๆ ที่จะคาดการณ์ArrDelay >= 10 TRUEข้อความเตือนอื่น ๆ จะบอกคุณว่าความน่าจะเป็นที่เหมาะสมสำหรับการสังเกตบางอย่างนั้นมีประสิทธิภาพ 0 หรือ 1 และนั่นเป็นตัวบ่งชี้ที่ดีว่าคุณมีบางอย่างผิดปกติกับตัวแบบ

β^i


คุณช่วยอธิบายว่าคุณหมายถึงอะไรโดยการบรรจบกันที่นี่?
Bach

1
จากการบรรจบกันฉันหมายถึงว่าพารามิเตอร์ที่ถูกประเมินในตัวแบบไม่เปลี่ยนแปลง (หรือเปลี่ยนแปลงได้น้อยกว่าความอดทนเล็กน้อย) ระหว่างการวนซ้ำ ที่นี่พารามิเตอร์มีขนาดใหญ่ขึ้นและหยุดพอดีเนื่องจากข้อ จำกัด ในการวนซ้ำ แต่การประมาณพารามิเตอร์เปลี่ยนไปมากระหว่างการเปลี่ยนแปลงครั้งสุดท้ายและการวนซ้ำครั้งล่าสุด
Reinstate Monica - G. Simpson

6

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

O(n1)

การลดอคติของ Firth นั้นได้ถูกนำไปใช้ในแพ็คเกจ R logistf: http://cran.r-project.org/web/packages/logistf/logistf.pdf

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