データテーブルT1があり、これには約1000個の変数(V1)と約2億個のデータポイントが含まれています。データはまばらで、ほとんどのエントリはNAです。各データポイントには、他と区別するための一意のIDと日付のペアがあります。
別の変数セット(V2)を含む別のテーブルT2があります。このテーブルには、T2のエントリを一意に識別するIDと日付のペアもあります。
T1のデータを使用して、T2の変数の値を予測できると思われます。
これを証明するために、Rに「glm」モデルを適用し、T1の変数に依存するT2の変数を本当に見つけることができるかどうかを確認することを考えました。
T2の各変数について、同じidと日付のペアを持つT1のすべてのデータを引き出し始め、テスト変数のいくつかについて、はるかに小さい〜50Kデータポイントになりました。
glmの適用で今直面している問題は次のとおりです。
場合によっては、「フィットが見つかりません」というエラーと「glm.fit:アルゴリズムが収束しませんでした」という警告が表示されます。なぜ表示されるのか分かりませんか?
NAはglmでどのように扱われますか?最初に「NA」を含むすべてのレコードを削除してから、フィッティングを実行しますか?
最初にすべてのNAを削除してから「glm」を呼び出すのは良い戦略ですか?それらのほとんどがNAであるため、これによりデータポイントが大幅に削減される可能性があることを恐れています。
係数の計算に使用される方法。出力がどのように計算されるかを議論するウェブサイト、論文、または本を見つけることができませんでした。
「NA」を使用して、または使用せずにglmをテストし、データをフィッティングする際にNAが考慮される点について、difftの回答を見つけました。
例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
例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