Mô hình hồi quy logistic không hội tụ


40

Tôi đã có một số dữ liệu về các chuyến bay của hãng hàng không (trong khung dữ liệu được gọi flights) và tôi muốn xem liệu thời gian chuyến bay có ảnh hưởng gì đến xác suất chuyến bay bị trì hoãn đáng kể hay không (nghĩa là 10 phút trở lên). Tôi hình dung tôi sẽ sử dụng hồi quy logistic, với thời gian bay là công cụ dự đoán và liệu mỗi chuyến bay có bị trì hoãn đáng kể hay không (một bó Bernoullis) làm phản hồi. Tôi đã sử dụng mã sau đây ...

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

... nhưng có đầu ra sau.

> 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

Điều đó có nghĩa là thuật toán không hội tụ? Tôi nghĩ rằng đó là vì các BigDelaygiá trị là TRUEFALSEthay vì 01, nhưng tôi đã gặp lỗi tương tự sau khi tôi chuyển đổi mọi thứ. Có ý kiến ​​gì không?


Suy nghĩ đầu tiên: Sự tách biệt hoàn hảo , có nghĩa là người dự đoán là 'quá tốt', các bản ghi chuyển sang +/- vô cùng và mọi thứ rơi xuống. Suy nghĩ thứ hai: Liệu mã làm những gì bạn nghĩ nó làm? Tên biến của bạn dường như không khớp với mô tả của bạn. Bạn có thể giải thích những gì dữ liệu chính xác hơn, vì có vẻ như bạn thể đang cố gắng dự đoán một cái gì đó với chính nó.
liên hợp chiến binh

1
không chắc chắn tôi xứng đáng được "chấp nhận". @Conjugate Câu trả lời trước đã giải thích những gì không đúng với mô hình của bạn. Tôi nghĩ rằng nó đáng để giải thích cảnh báo mà bạn đề cập về thuật toán.
Phục hồi Monica - G. Simpson

3
Nếu bạn có thời gian trễ thực tế, bạn có thể nhận được thông tin tốt hơn bằng cách mô hình hóa chúng, thay vì giảm chúng thành một biến nhị phân.
whuber


bạn có thể thử hàm glm1 (). Nó khắc phục sự cố hội tụ

Câu trả lời:


33

glm()sử dụng thuật toán bình phương tối thiểu trọng số lặp lại. Thuật toán đạt số lần lặp tối đa được phép trước khi hội tụ tín hiệu. Mặc định, được ghi thành tài liệu ?glm.controllà 25. Bạn chuyển các tham số điều khiển dưới dạng danh sách trong glmcuộc gọi:

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

Như @Conjugate Prior nói, dường như bạn đang dự đoán phản hồi với dữ liệu được sử dụng để tạo ra nó. Bạn có sự tách biệt hoàn toàn như bất kỳ ArrDelay < 10sẽ dự đoán FALSEvà bất kỳ ArrDelay >= 10sẽ dự đoán TRUE. Thông báo cảnh báo khác cho bạn biết rằng xác suất được trang bị cho một số quan sát có hiệu quả là 0 hoặc 1 và đó là một chỉ báo tốt mà bạn có lỗi với mô hình.

β^i


Bạn có thể giải thích chính xác ý bạn là gì khi hội tụ mô hình ở đây không?
Bạch

1
Bằng cách hội tụ, tôi có nghĩa là các tham số được ước tính trong mô hình không thay đổi (hoặc chỉ thay đổi ít hơn một số dung sai nhỏ) giữa các lần lặp. Ở đây, các tham số ngày càng lớn và dừng phù hợp do giới hạn của các lần lặp nhưng các ước tính tham số đã thay đổi rất nhiều giữa áp chót và các lần lặp cuối cùng và do đó không hội tụ.
Phục hồi Monica - G. Simpson

6

Bạn có thể thử kiểm tra xem liệu giảm độ lệch của Firth có hoạt động với tập dữ liệu của bạn không. Đó là một cách tiếp cận khả năng bị phạt có thể hữu ích cho các bộ dữ liệu tạo ra sự phân kỳ bằng cách sử dụng glmgói tiêu chuẩn . Đôi khi nó có thể được sử dụng thay vì loại bỏ biến đó tạo ra sự phân tách hoàn toàn / gần như hoàn toàn.

O(n1)

Giảm thiểu thiên vị của Firth được triển khai trong gói R logistf: http://cran.r-project.org/web/packages/logistf/logistf.pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.