J'ai un tableau de données T1, qui contient près d'un millier de variables (V1) et environ 200 millions de points de données. Les données sont rares et la plupart des entrées sont NA. Chaque point de données a un identifiant et une paire de dates uniques pour se distinguer les uns des autres.
J'ai une autre table T2, qui contient un ensemble distinct de variables (V2). Cette table a également une paire id et date qui identifie de manière unique les entrées dans T2.
Nous pensons que les données de T1 peuvent être utilisées pour prédire les valeurs des variables de T2.
Pour le prouver, j'ai pensé appliquer le modèle «glm» dans R et vérifier si nous pouvons vraiment trouver une variable dans T2 qui dépend de variables dans T1.
Pour chaque variable de T2, j'ai commencé à extraire toutes les données de T1 ayant la même paire d'ID et de date, ce qui a entraîné des points de données beaucoup plus petits de ~ 50 000 pour certaines des variables de test.
Les problèmes auxquels je suis confronté maintenant avec l'application de glm sont les suivants.
Dans certains cas, il me montre une erreur «fit not found» et un avertissement «glm.fit: l'algorithme n'a pas convergé». Je ne sais pas pourquoi est-ce affiché?
Comment les AN sont-ils traités en glm? Supprime-t-il d'abord tous les enregistrements impliquant «NA», puis effectue-t-il l'ajustement?
Est-ce une bonne stratégie de supprimer d'abord toutes les NA, puis d'appeler «glm». Je crains que cela ne réduise considérablement les points de données car la plupart d'entre eux sont des NA.
Quelle méthode est utilisée pour calculer les coefficients. Je n'ai pu trouver aucun site Web, papier ou livre expliquant comment la sortie est calculée.
J'ai testé glm avec et sans 'NAs' et trouvé des réponses différentes qui indiquent que les NA sont prises en compte lors de l'ajustement des données:
Exemple 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
Exemple 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