IT-Swarm.Net

Tại sao tôi nhận được "thuật toán không hội tụ" và "cảnh báo đầu dò được trang bị bằng số hoặc 1" với glm?

Vì vậy, đây là một câu hỏi rất đơn giản, dường như không thể tìm ra nó.

Tôi đang chạy một logit bằng chức năng glm, nhưng tiếp tục nhận được cá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 gặp may. Tôi cũng đã mã hóa chúng thành 0/1 nhưng điều đó cũng không hoạt động.

Hãy giúp tôi!

> 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 

CHỈNH SỬA:

> 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" ...
32
ATMathew

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

Đối với nền để thông báo cảnh báo về prob xác suất được trang bị bằng 0 hoặc 1 xảy ra, đối với GLM nhị thức, xem Venables & Ripley (2002, trang 197.

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

Có một tình huống khá phổ biến trong đó cả hai đều hội tụ vấn đề và hiện tượng Hauck-Donner có thể xảy ra. Đây là khi xác suất được trang bị rất gần với không hoặc một. Hãy xem xét một vấn đề chẩn đoán y tế với hàng ngàn trường hợp và khoảng 50 nhị phân biến giải thích (có thể phát sinh từ mã hóa ít hơn biến); một trong những chỉ số này hiếm khi đúng nhưng luôn luôn chỉ ra rằng bệnh có mặt. Sau đó, xác suất được trang bị trường hợp với chỉ số đó phải là một, chỉ có thể đạt được bằng cách lấytôi = ∞. Kết quả từ glm sẽ là cảnh báo và hệ số ước tính khoảng +/- 10. Đã có thảo luận khá rộng rãi về điều này trong tài liệu thống kê, thường tuyên bố không tồn tại các ước tính khả năng tối đa; xem Sautner và Duffy (1989, trang 234).

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

36
joran

Nếu bạn đã chỉ định chính xác công thức GLM và các đầu vào tương ứng (nghĩa là ma trận thiết kế, chức năng liên kết, v.v ...). Thuật toán glm có thể không hội tụ do không đủ số lần lặp được sử dụng trong thuật toán lặp lại bình phương nhỏ nhất (IRLS). Thay đổi maxit = 25 (Mặc định) thành maxit = 100 trong R. 

0
user10813428

Điều này có lẽ là do sự tách biệt hoàn toàn, tức là một nhóm hoàn toàn gồm 0 hoặc 1.

Có một số lựa chọn để đối phó với điều này:

(a) Sử dụng phương pháp khả năng bị phạt của Firth, như được thực hiện trong các gói logistf hoặc brglm trong R. Điều này sử dụng phương pháp được đề xuất trong Firth (1993), "Giảm thiểu tối đa ước tính khả năng ", Biometrika , 80 , 1.; trong đó loại bỏ sai lệch thứ tự đầu tiên khỏi ước tính khả năng tối đa.

(b) Bằng cách sử dụng các ước tính trung bình không thiên vị trong hồi quy logistic có điều kiện chính xác. Gói elrm hoặc logistiX trong R có thể làm điều này.

(c) Sử dụng LASSO hoặc hồi quy logistic thường xuyên hóa đàn hồi, ví dụ: sử dụng gói glmnet trong R.

(d) Đi Bayes, xem bài báo Gelman et al (2008), "Phân phối trước mặc định thông tin yếu cho các mô hình hồi quy logistic & hồi quy khác", Ann. Appl. Stat. , 2 , 4 và hàm bayesglm trong gói arm.

(e) Sử dụng mô hình hồi quy logistic ẩn, như được mô tả trong Rousseeuw & Christmann (2003), "Mạnh mẽ chống phân tách và ngoại lệ trong hồi quy logistic", Thống kê tính toán & phân tích dữ liệu , 43 , 3 và được triển khai trong gói R hlr .

Trước tiên, bạn cần mã hóa lại yếu tố của mình thành một yếu tố mặc dù sử dụng dat$bid1 = as.factor(dat$bid1))

Các giải pháp cho vấn đề này cũng được thảo luận ở đây:

https://stats.stackexchange.com/questions/11109/how-to-deal-with-perinf-separation-in-logistic-regression

https://stats.stackexchange.com/questions/45804/logistic-regression-in-r-resulted-in-perinf-separation-hauck-donner-phenomenon

https://stats.stackexchange.com/questions/239928/is-there-any-intearning-explanation-of-why-logistic-regression-will-not-work-for

https://stats.stackexchange.com/questions/5354/logistic-regression-model-does-not-converge?rq=1

0
Tom Wenseleers