Ho una tabella di dati T1, che contiene quasi un migliaio di variabili (V1) e circa 200 milioni di punti dati. I dati sono scarsi e la maggior parte delle voci sono NA. Ciascun punto dati ha un ID univoco e una coppia di date per distinguere da un altro.
Ho un'altra tabella T2, che contiene un insieme separato di variabili (V2). Questa tabella ha anche coppie id e date che identificano in modo univoco le voci in T2.
Sospettiamo che i dati in T1 possano essere utilizzati per prevedere i valori delle variabili in T2.
Per dimostrarlo, ho pensato di applicare il modello 'glm' in R e verificare se possiamo davvero trovare qualche variabile in T2 che dipende dalle variabili in T1.
Per ogni variabile in T2, ho iniziato a estrarre tutti i dati in T1 con lo stesso ID e coppia di date che hanno portato a punti di dati ~ 50K molto più piccoli per alcune delle variabili di test.
I problemi che sto affrontando ora con l'applicazione di glm sono i seguenti.
In alcuni casi, mi mostra un errore 'fit not found' e avvertimento 'glm.fit: l'algoritmo non converge'. Non sono sicuro del perché sia mostrato?
Come vengono trattati gli NA in glm? Rimuove prima tutti i record che coinvolgono "NA" e quindi esegue il fitting?
È una buona strategia rimuovere prima tutte le NA e poi chiamare "glm". Temo che ciò possa ridurre significativamente i punti di riferimento dato che la maggior parte di essi è NA.
Quale metodo viene utilizzato per calcolare i coefficienti. Non sono riuscito a trovare alcun sito Web o documento o libro che discuti su come viene calcolato l'output.
Ho testato glm con e senza "NA" e ho trovato risposte diverse su quali punti vengono considerati i NA mentre si adattano i dati:
Esempio 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
Esempio 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