ฉันมีตารางข้อมูล T1 ที่มีเกือบหนึ่งพันตัวแปร (V1) และประมาณ 200 ล้านจุดข้อมูล ข้อมูลเบาบางและรายการส่วนใหญ่เป็น NA แต่ละดาต้าพ้อยท์มี id และคู่ที่ไม่ซ้ำกันเพื่อแยกความแตกต่าง
ฉันมีอีกตาราง T2 ซึ่งมีชุดตัวแปร (V2) แยกกัน ตารางนี้ยังมีคู่ id และวันที่ที่ระบุรายการใน T2 โดยไม่ซ้ำกัน
เราสงสัยว่าข้อมูลใน T1 สามารถใช้ในการทำนายค่าของตัวแปรใน T2
เพื่อพิสูจน์สิ่งนี้ฉันคิดว่าจะใช้โมเดล 'glm' ใน R และตรวจสอบว่าเราสามารถหาตัวแปรใน T2 ที่ขึ้นอยู่กับตัวแปรใน T1 หรือไม่
สำหรับแต่ละตัวแปรใน T2 ฉันเริ่มดึงข้อมูลทั้งหมดใน T1 ที่มี id และคู่วันเดียวกันซึ่งทำให้จุดข้อมูลเล็กกว่า ~ 50K สำหรับตัวแปรทดสอบบางตัว
ปัญหาที่ฉันเผชิญในขณะนี้ด้วยการประยุกต์ใช้ glm มีดังนี้
ในบางกรณีมันแสดงให้ฉันเห็นข้อผิดพลาด 'พอดีไม่พบ' และคำเตือน 'glm.fit: อัลกอริทึมไม่ได้มาบรรจบกัน' ฉันไม่แน่ใจว่าทำไมจึงแสดง
วิธีการรักษา NA ใน glm? มันลบระเบียนทั้งหมดที่เกี่ยวข้องกับ 'NA' ก่อนแล้วจึงทำการปรับแต่งหรือไม่
เป็นกลยุทธ์ที่ดีหรือไม่ที่จะลบ NA ทั้งหมดก่อนแล้วจึงโทร 'glm' ฉันกลัวว่านี่อาจลดดาต้าพอยน์อย่างมีนัยสำคัญเนื่องจากส่วนใหญ่เป็น NAs
ใช้วิธีใดในการคำนวณค่าสัมประสิทธิ์ ฉันไม่สามารถหาเว็บไซต์หรือกระดาษหรือหนังสือใด ๆ ที่กล่าวถึงวิธีคำนวณผลลัพธ์
ฉันทดสอบ glm ทั้งที่มีและไม่มี 'NAs' และพบคำตอบที่แตกต่างกันซึ่งเป็นจุดที่ NAs พิจารณาในขณะที่ปรับข้อมูลให้เหมาะสม
ตัวอย่างที่ 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
ตัวอย่างที่ 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