Tôi có một bảng dữ liệu T1, chứa gần một nghìn biến (V1) và khoảng 200 triệu điểm dữ liệu. Dữ liệu rất thưa thớt và hầu hết các mục là NA. Mỗi datapoint có một cặp id và ngày duy nhất để phân biệt với nhau.
Tôi có một bảng khác T2, chứa một tập hợp các biến (V2) riêng biệt. Bảng này cũng có cặp id và ngày xác định duy nhất các mục trong T2.
Chúng tôi nghi ngờ rằng dữ liệu trong T1 có thể được sử dụng để dự đoán giá trị của các biến trong T2.
Để chứng minh điều này, tôi nghĩ sẽ áp dụng mô hình 'glm' trong R và kiểm tra xem chúng ta có thực sự tìm thấy một số biến trong T2 phụ thuộc vào các biến trong T1 không.
Đối với mỗi biến trong T2, tôi bắt đầu rút tất cả dữ liệu trong T1 có cùng cặp id và ngày dẫn đến các điểm dữ liệu ~ 50K nhỏ hơn nhiều đối với một số biến kiểm tra.
Các vấn đề mà tôi đang phải đối mặt với việc áp dụng glm như sau.
Trong một số trường hợp, nó hiển thị cho tôi một lỗi 'không tìm thấy sự phù hợp' và cảnh báo 'glm.fit: thuật toán không hội tụ'. Tôi không chắc tại sao nó được hiển thị?
Làm thế nào các NA được điều trị trong glm? Nó có xóa tất cả các bản ghi liên quan đến 'NA' trước và sau đó thực hiện khớp không?
Đây có phải là một chiến lược tốt để loại bỏ tất cả các NA trước và sau đó gọi 'glm'. Tôi sợ rằng điều này có thể làm giảm đáng kể các điểm dữ liệu vì hầu hết chúng là NA.
Phương pháp nào được sử dụng để tính các hệ số. Tôi không thể tìm thấy bất kỳ trang web hoặc giấy hoặc cuốn sách nào thảo luận về cách tính đầu ra.
Tôi đã thử nghiệm glm có và không có 'NA' và tìm thấy câu trả lời khác nhau về những điểm mà NA được xem xét trong khi khớp dữ liệu:
Ví dụ 1:
> tmpData
x1 x2 x3 Y
1 1 1 1 3
2 1 0 4 5
3 1 2 3 6
4 0 3 1 4
Call: glm(formula = as.formula(paste(dep, " ~ ", paste(xn, collapse = "+"))),
na.action = na.exclude)
Coefficients:
(Intercept) as.numeric(unlist(tmpData["x1"])) as.numeric(unlist(tmpData["x2"]))
5.551e-16 1.000e+00 1.000e+00
as.numeric(unlist(tmpData["x3"]))
1.000e+00
Degrees of Freedom: 3 Total (i.e. Null); 0 Residual
Null Deviance: 5
Residual Deviance: 9.861e-31 AIC: -260.6
Ví dụ 2:
'x1' 'x2' 'x3' 'Y'
100000 1 NA 2
1 1 1 3
1 NA -1124 2
1 0 4 5
1 2 3 6
0 3 1 4
Coefficients:
(Intercept) as.numeric(unlist(tmpData["x1"])) as.numeric(unlist(tmpData["x2"])) as.numeric(unlist(tmpData["x3"]))
-2.3749044 -0.0000625 0.6249899 1.8749937
Degrees of Freedom: 5 Total (i.e. Null); 2 Residual
Null Deviance: 13.33
Residual Deviance: 1.875 AIC: 20.05