Neredeyse bin değişken (V1) ve yaklaşık 200 milyon veri noktası içeren bir veri tablosu T1'im var. Veriler seyrek ve girişlerin çoğu NA. Her veri noktasının diğerinden ayırt etmek için benzersiz bir kimliği ve tarih çifti vardır.
Ayrı bir değişkenler kümesi (V2) içeren başka bir tablo T2 var. Bu tabloda ayrıca T2'deki girişleri benzersiz şekilde tanımlayan kimlik ve tarih çifti vardır.
T1'deki verilerin T2'deki değişkenlerin değerlerini tahmin etmek için kullanılabileceğinden şüpheleniyoruz.
Bunu kanıtlamak için, R'de 'glm' modelini uygulamayı düşündüm ve T2'de T1'deki değişkenlere bağlı bazı değişkenleri gerçekten bulabileceğimizi kontrol ettim.
T2'deki her değişken için, aynı kimlik ve tarih çiftine sahip T1'deki tüm verileri çekmeye başladım, bu da bazı test değişkenleri için çok daha küçük ~ 50K veri noktaları ile sonuçlandı.
Glm uygulaması ile karşılaştığım sorunlar şu şekildedir.
Bazı durumlarda bana 'uygun bulunamadı' hatası ve 'glm.fit: algoritma birleşmedi' uyarısı veriyor. Neden gösterildiğinden emin değilim?
NA'lar nasıl glm ile tedavi edilir? Önce 'NA' içeren tüm kayıtları kaldırır ve sonra uydurma gerçekleştirir mi?
Önce tüm NA'ları kaldırmak ve sonra 'glm' demek iyi bir stratejidir. Çoğu NA olduğu için bunun veri noktalarını önemli ölçüde azaltabileceğinden korkuyorum.
Katsayıları hesaplamak için hangi yöntem kullanılır. Çıktının nasıl hesaplandığını tartışan herhangi bir web sitesi, makale veya kitap bulamadım.
Ben 'NA' ile ve olmadan glm test ve veri uyurken NAs dikkate alınan difft cevapları bulundu:
Örnek 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
Örnek 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