Saya memiliki tabel data T1, yang berisi hampir seribu variabel (V1) dan sekitar 200 juta titik data. Data jarang dan sebagian besar entri adalah NA. Setiap titik data memiliki id unik dan pasangan tanggal untuk dibedakan dari yang lain.
Saya punya T2 tabel lain, yang berisi kumpulan variabel yang terpisah (V2). Tabel ini juga memiliki pasangan id dan tanggal yang secara unik mengidentifikasi entri di T2.
Kami menduga bahwa data dalam T1 dapat digunakan untuk memprediksi nilai variabel dalam T2.
Untuk membuktikan ini, saya berpikir untuk menerapkan model 'glm' di R dan memeriksa apakah kita benar-benar dapat menemukan beberapa variabel di T2 yang tergantung pada variabel di T1.
Untuk setiap variabel di T2, saya mulai mengeluarkan semua data di T1 yang memiliki pasangan id dan tanggal yang sama yang menghasilkan poin data yang jauh lebih kecil ~ 50K untuk beberapa variabel uji.
Masalah yang saya hadapi sekarang dengan penerapan glm adalah sebagai berikut.
Dalam beberapa kasus, ini menunjukkan kepada saya kesalahan 'pas tidak ditemukan' dan peringatan 'glm.fit: algoritma tidak konvergen'. Saya tidak yakin mengapa ini ditampilkan?
Bagaimana NAS diperlakukan dalam glm? Apakah ini menghapus semua catatan yang melibatkan 'NA' pertama dan kemudian melakukan pemasangan?
Apakah ini strategi yang baik untuk menghapus semua NAS terlebih dahulu dan kemudian memanggil 'glm'. Saya khawatir hal ini dapat mengurangi datapoint secara signifikan karena kebanyakan dari mereka adalah NAS.
Metode mana yang digunakan untuk menghitung koefisien. Saya tidak dapat menemukan situs web atau kertas atau buku yang membahas bagaimana output dihitung.
Saya menguji GLM dengan dan tanpa 'NAs' dan menemukan jawaban berbeda yang menunjukkan bahwa NAS dipertimbangkan saat memasang data:
Contoh 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
Contoh 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
sumber