거의 천 개의 변수 (V1)와 약 2 억 개의 데이터 포인트가 포함 된 데이터 테이블 T1이 있습니다. 데이터가 드물고 대부분의 항목이 NA입니다. 각 데이터 포인트에는 다른 ID와 구별하기 위해 고유 한 ID 및 날짜 쌍이 있습니다.
별도의 변수 세트 (V2)를 포함하는 다른 테이블 T2가 있습니다. 이 테이블에는 T2의 항목을 고유하게 식별하는 ID 및 날짜 쌍이 있습니다.
T1의 데이터를 사용하여 T2의 변수 값을 예측할 수 있습니다.
이를 증명하기 위해 R에 'glm'모델을 적용하고 T1의 변수에 의존하는 T2의 변수를 실제로 찾을 수 있는지 확인했습니다.
T2의 각 변수에 대해 동일한 ID와 날짜 쌍을 가진 T1의 모든 데이터를 꺼내기 시작하여 일부 테스트 변수에 대해 ~ 50K 데이터 포인트가 훨씬 작아졌습니다.
glm을 적용 할 때 현재 겪고있는 문제는 다음과 같습니다.
경우에 따라 'fit not found'라는 오류와 'glm.fit : algorithm does not converge'경고가 표시됩니다. 왜 표시되는지 잘 모르겠습니다.
NA는 어떻게 glm에서 취급됩니까? 'NA'와 관련된 모든 레코드를 먼저 제거한 다음 피팅을 수행합니까?
모든 NA를 먼저 제거한 다음 'glm'을 호출하는 것이 좋은 전략입니까? 이것이 대부분의 NA이므로 데이터 포인트를 크게 줄일 수 있다고 생각합니다.
계수를 계산하는 데 사용되는 방법 출력 계산 방법에 대해 설명하는 웹 사이트 나 종이 또는 책을 찾을 수 없습니다.
'NA'가 있거나없는 glm을 테스트했으며 데이터를 피팅하는 동안 NA가 고려되는 다른 대답을 발견했습니다.
예 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