Tengo una tabla de datos T1, que contiene casi mil variables (V1) y alrededor de 200 millones de puntos de datos. Los datos son escasos y la mayoría de las entradas son NA. Cada punto de datos tiene un par único de identificación y fecha para distinguir de otro.
Tengo otra tabla T2, que contiene un conjunto separado de variables (V2). Esta tabla también tiene un par de identificación y fecha que identifica de forma exclusiva las entradas en T2.
Sospechamos que los datos en T1 pueden usarse para predecir valores de variables en T2.
Para probar esto, pensé en aplicar el modelo 'glm' en R y verificar si realmente podemos encontrar alguna variable en T2 que dependa de las variables en T1.
Para cada variable en T2, comencé a extraer todos los datos en T1 con el mismo par de identificación y fecha, lo que resultó en puntos de datos mucho más pequeños ~ 50K para algunas de las variables de prueba.
Los problemas que estoy enfrentando ahora con la aplicación de glm son los siguientes.
En algunos casos, me muestra un error 'fit not found' y una advertencia 'glm.fit: el algoritmo no convergió'. No estoy seguro de por qué se muestra?
¿Cómo se tratan los NA en glm? ¿Elimina todos los registros que involucran 'NA' primero y luego realiza el ajuste?
¿Es una buena estrategia eliminar primero todas las NA y luego llamar 'glm'? Me temo que esto puede reducir significativamente los puntos de datos, ya que la mayoría de ellos son NA.
Qué método se usa para calcular los coeficientes. No pude encontrar ningún sitio web o documento o libro que discuta cómo se calcula la salida.
Probé glm con y sin 'NA' y encontré diferentes respuestas sobre los puntos que se consideran NA mientras se ajustan los datos:
Ejemplo 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
Ejemplo 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
fuente