Jeg har en datatabell T1, som inneholder nesten tusen variabler (V1) og rundt 200 millioner datapunkter. Dataene er sparsomme, og de fleste oppføringene er NA. Hvert datapunkt har et unikt id og datopar for å skille fra et annet.
Jeg har en annen tabell T2, som inneholder et eget sett med variabler (V2). Denne tabellen har også id og datopar som unikt identifiserer oppføringer i T2.
Vi mistenker at dataene i T1 kan brukes til å forutsi verdier av variabler i T2.
For å bevise dette, tenkte jeg å bruke 'glm' modell i R og sjekke om vi virkelig kan finne noen variabler i T2 som er avhengig av variabler i T1.
For hver variabel i T2 begynte jeg å trekke ut alle data i T1 med samme ID og datopar som resulterte i mye mindre ~ 50K datapunkter for noen av testvariablene.
Problemene jeg står overfor nå med bruk av glm er som følger.
-
I noen tilfeller viser det meg en feil "fit not found" og advarte "glm.fit: algoritme konvergerte ikke". Jeg er ikke sikker på hvorfor vises det?
-
Hvordan NA behandles i glm? Fjerner det alle poster som involverer 'NA' først og utfører deretter tilpasning?
-
Er det en god strategi å fjerne alle NA først og deretter kalle 'glm'. Jeg frykter at dette kan redusere datapunktene betydelig, ettersom de fleste av dem er NA-er.
-
Hvilken metode brukes for å beregne koeffisientene. Jeg kunne ikke finne noe nettsted eller papir eller bok som diskuterte hvordan resultatet beregnes.
Jeg testet glm med og uten 'NAs' og fant forskjellige svar som poeng NAs er vurderes mens dataene tilpasses:
Eksempel 1:
> tmpData x1 x2 x3 Y1 1 1 1 32 1 0 4 53 1 2 3 64 0 3 1 4Anrop: glm (formel = as.formel (lim inn (dep, "~", lim inn (xn, kollaps = "+"))), na.action = na. ekskluder) Koeffisienter: (Intercept) as.numeric (unlist (tmpData [" x1 "])) as.numeric (unlist (tmpData [" x2 "]))
5.551e-16 1.000e + 00 1.000e + 00 som.nummer (unlist (tmpData ["x3"])) 1.000e + 00 Frihetsgrader: 3 Total (dvs. Null); 0 ResidualNull Deviation: 5 Residual Deviance: 9.861e-31 AIC: -260.6
Eksempel 2:
'x1' 'x2' 'x3' ' Y'100000 1 NA 21 1 1 31 NA -1124 21 0 4 51 2 3 60 3 1 4 Koeffisienter: (Intercept) as.numeric (unlist (tmpData ["x1"])) as.numeric (unlist (tmpData ["x2) "])) som.numeric (unlist (tmpData [" x3 "])) -2.3749044 -0.0000625 0.6249899 1.8749937 Grader av frihet: 5 Total (dvs. null); 2 ResidualNull Deviance: 13.33 Residual Deviance: 1.875 AIC: 20.05