2011-12-21 22 views
30

Vì vậy, đây là một câu hỏi rất đơn giản, dường như không thể hình dung ra được.Tại sao tôi nhận được thuật toán "thuật toán không hội tụ" và "được trang bị prob số 0 hoặc 1" với cảnh báo glm?

Tôi đang chạy nhật ký bằng chức năng glm, nhưng tiếp tục nhận được thông báo cảnh báo liên quan đến biến độc lập. Chúng được lưu trữ dưới dạng các yếu tố và tôi đã thay đổi chúng thành số nhưng không có may mắn. Tôi cũng mã hóa chúng vào 0/1 nhưng điều đó cũng không hoạt động.

Vui lòng trợ giúp!

> mod2 <- glm(winorlose1 ~ bid1, family="binomial") 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

Tôi cũng đã thử nó trong Zelig, nhưng lỗi tương tự:

> mod2 = zelig(factor(winorlose1) ~ bid1, data=dat, model="logit") 
How to cite this model in Zelig: 
Kosuke Imai, Gary King, and Oliva Lau. 2008. "logit: Logistic Regression for Dichotomous Dependent Variables" in Kosuke Imai, Gary King, and Olivia Lau, "Zelig: Everyone's Statistical Software," http://gking.harvard.edu/zelig 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

EDIT:

> str(dat) 
'data.frame': 3493 obs. of 3 variables: 
$ winorlose1: int 2 2 2 2 2 2 2 2 2 2 ... 
$ bid1  : int 700 300 700 300 500 300 300 700 300 300 ... 
$ home  : int 1 0 1 0 0 0 0 1 0 0 ... 
- attr(*, "na.action")=Class 'omit' Named int [1:63021] 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 ... 
    .. ..- attr(*, "names")= chr [1:63021] "3494" "3495" "3496" "3497" ... 
+2

Điều này sẽ không thể trả lời mà không có một số thông tin chi tiết về dữ liệu của bạn. 'str (dat)' chẳng hạn. Ngoài ra, đó là những cảnh báo, không phải lỗi. Có một sự khác biệt lớn. – joran

+1

Tôi chỉ muốn lưu ý rằng có một gói 'glm2' mà tuyên bố để đạt được hội tụ nơi' glm' không. Tôi không biết điều này có liên quan đến vấn đề ở đây hay không. Xem http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Marschner.pdf –

+0

Có vẻ như bạn đang làm việc với dữ liệu phân loại, tôi sẽ xem xét truyền các biến số nguyên của bạn thành các yếu tố. dat $ home <- as.factor (dat $ home) – eamo

Trả lời

34

Nếu bạn nhìn vào ?glm (hoặc thậm chí làm một tìm kiếm Google cho cảnh báo thứ hai của bạn tin nhắn) bạn có thể vấp ngã điều này từ tài liệu:

For the background to warning messages about ‘fitted probabilities numerically 0 or 1 occurred’ for binomial GLMs, see Venables & Ripley (2002, pp. 197–8).

Bây giờ, không phải ai cũng có cuốn sách đó. Nhưng giả định đó là kosher cho tôi để làm điều này, đây là đoạn văn có liên quan:

There is one fairly common circumstance in which both convergence problems and the Hauck-Donner phenomenon can occur. This is when the fitted probabilities are extremely close to zero or one. Consider a medical diagnosis problem with thousands of cases and around 50 binary explanatory variable (which may arise from coding fewer categorical variables); one of these indicators is rarely true but always indicates that the disease is present. Then the fitted probabilities of cases with that indicator should be one, which can only be achieved by taking βi = ∞. The result from glm will be warnings and an estimated coefficient of around +/- 10. There has been fairly extensive discussion of this in the statistical literature, usually claiming non-existence of maximum likelihood estimates; see Sautner and Duffy (1989, p. 234).

Một trong những tác giả của quyển sách này nhận xét một cách chi tiết hơn một chút here. Vì vậy, bài học ở đây là để xem xét cẩn thận một trong các mức độ dự đoán của bạn. (Và Google thông điệp cảnh báo!)

+7

+1 Câu trả lời hay. Chỉ cần thêm: thật tốt khi xem mô hình, chẩn đoán mô hình và đôi khi là một mô hình khác. Ví dụ, hãy thử một cây phân loại. Điều này có thể cho bạn biết rằng (a) bạn có một người dự đoán tuyệt vời (điều tốt), hoặc (b) bạn có một số vấn đề lấy mẫu (điều xấu). – Iterator

+1

Câu trả lời này có chỉ giải quyết cảnh báo thứ 2 từ câu hỏi của OP không? Tôi tìm thấy tại http://discuss.analyticsvidhya.com/t/warning-message-glm-fit-algorithm-did-not-converge/5299 đề xuất điều chỉnh tham số 'maxit' (không được liệt kê trong tài liệu cho 'glm', nhưng được chuyển thành một phần của tham số' control' thành 'glm.fit' và sau đó là' glm.control'), và dường như đã giải quyết cảnh báo thứ nhất '1: glm.fit: thuật toán không hội tụ' cho tôi. –

+0

Tôi tìm thấy câu trả lời của bạn rất hữu ích joran, nhưng tôi vẫn không hiểu làm thế nào để giải quyết vấn đề dựa trên câu trả lời của bạn. Sự hiểu biết của tôi (dựa trên câu trả lời trong câu trả lời của bạn) là: một trong các mức của một trong các biến dự đoán của tôi hiếm khi đúng nhưng luôn luôn chỉ ra rằng biến đi ra là 0 hoặc 1. Thứ nhất, chắc chắn là bất kỳ phương pháp thống kê nào có thể đối phó với điều này? Thứ hai, làm thế nào để tôi tìm biến dự đoán, và một khi tôi tìm thấy nó, tôi phải làm gì với nó? – par

Các vấn đề liên quan