Bạn không thực hiện một biến đổi logit để biến biến từ âm vô cực sang cộng vô cực? Tôi không chắc liệu dữ liệu có 0 và 1 có phải là vấn đề không. Là hiển thị bất kỳ thông báo lỗi? Nhân tiện, nếu bạn chỉ có tỷ lệ, phân tích của bạn sẽ luôn bị sai. Bạn cần phải sử dụng weight=argument
đến glm
với số lượng các trường hợp.
Nếu không có gì hoạt động, bạn có thể sử dụng phân chia trung bình hoặc phân chia phần tư hoặc bất kỳ điểm cắt nào bạn nghĩ phù hợp để tách DV thành nhiều loại và sau đó chạy hồi quy logistic thông thường. Điều đó có thể làm việc. Hãy thử những điều này.
Cá nhân tôi không nghĩ rằng việc thêm 0,001 vào các số 0 và lấy 0,001 từ các số 0 là một ý tưởng quá tệ, nhưng nó có một số vấn đề sẽ được thảo luận sau. Nghĩ mà xem, tại sao bạn không cộng và trừ 0,000000001 (hoặc thậm chí nhiều hơn số thập phân)? Điều đó sẽ tốt hơn đại diện cho 0 và 1 !! Dường như với bạn rằng nó không tạo ra nhiều khác biệt. Nhưng nó thực sự làm.
Chúng ta hãy xem như sau:
> #odds when 0 is replaced by 0.00000001
> 0.00000001/(1-0.00000001)
[1] 1e-08
> log(0.00000001/(1-0.00000001))
[1] -18.42068
> #odds when 1 is replaced by (1-0.00000001):
> (1-0.00000001)/(1-(1-0.00000001))
[1] 1e+08
> log((1-0.00000001)/(1-(1-0.00000001)))
[1] 18.42068
> #odds when 0 is replaced by 0.001
> 0.001/(1-0.001)
[1] 0.001001001
> log(0.001/(1-0.001))
[1] -6.906755
> #odds when 1 is replaced by (1-0.001):
> (1-0.001)/(1-(1-0.001))
[1] 999
> log((1-0.001)/(1-(1-0.001)))
[1] 6.906755
Vì vậy, bạn thấy, bạn cần giữ tỷ lệ cược gần bằng (0/1) và (1/0). Bạn mong đợi tỷ lệ cược đăng nhập từ âm vô cực đến cộng vô cực. Vì vậy, để cộng hoặc trừ, bạn cần chọn tối đa một vị trí thập phân thực sự dài, để tỷ lệ cược log trở nên gần với vô cùng (hoặc rất lớn) !! Mức độ bạn sẽ xem xét đủ lớn, chỉ phụ thuộc vào bạn.