연쇄 방정식에 의한 다중 대치

R에서 대치(Imputation)로 결측치 다루기

Michal Oleszak

Machine Learning Engineer

MICE 알고리즘

MICE 알고리즘의 4단계 흐름도. "불완전 데이터"에서 `mice()`로 연결된 세 개의 "대치된 데이터" 노드, 각 노드에서 `with()`로 연결된 "분석 결과", 그리고 모두 `pooled()`로 연결된 최종 "통합 결과" 노드가 표시됨.

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
R에서 대치(Imputation)로 결측치 다루기

MICE: 장단점

장점:

  • 부트스트랩보다 반복 수가 적음.
  • MAR 및 MCAR 데이터에 적용.
  • MNAR 민감도 분석 가능.

단점:

  • 지원되는 대치 방법으로만 작동.
  • 튜닝 작업 필요(모델 선택, 예측자 선택).
R에서 대치(Imputation)로 결측치 다루기

mice - with - pool 흐름

nhanes를 20회 대치:

library(mice)
nhanes_multiimp <- mice(nhanes, m = 20)

각 대치 데이터셋에 선형회귀 적합:

lm_multiimp <- with(nhanes_multiimp, lm(Weight ~ Height + TotChol + PhysActive))

회귀 결과 통합:

lm_pooled <- pool(lm_multiimp)
R에서 대치(Imputation)로 결측치 다루기

통합 결과 분석

summary(lm_pooled, conf.int = TRUE, conf.level = 0.95)
            estimate std.error statistic      df p.value    2.5 %   97.5 %
(Intercept) -122.964    10.933   -11.247 735.389   0.000 -144.428 -101.500
Height         1.086     0.060    18.158 796.106   0.000    0.968    1.203
TotChol        2.653     0.884     3.003 305.460   0.003    0.915    4.392
PhysActive    -1.746     1.422    -1.228 733.957   0.220   -4.536    1.045
R에서 대치(Imputation)로 결측치 다루기

MICE: 사용 가능한 방법

van Buuren 등의 논문에 실린 MICE의 대치 모델 표. 각 모델은 이름, 키워드, 적용 가능한 변수 유형, 기본값 여부로 설명됨.

1 van Buuren, S., & Groothuis-Oudshoorn, C. G. M. (2011). mice: Multivariate Imputation by Chained Equations in R. Journal of statistical software, 45(3).
R에서 대치(Imputation)로 결측치 다루기

변수 유형별 방법 선택

mice()defaultMethod 인자: 길이 4의 문자열 벡터로 다음을 지정합니다.

  1. 연속형 변수
  2. 이진 변수
  3. 범주형 변수(순서 없음)
  4. 요인 변수(순서 있음)
nhanes_multiimp <- mice(nhanes, m = 20, 
                        defaultMethod = c("pmm", "logreg", "polyreg", "polr"))
R에서 대치(Imputation)로 결측치 다루기

예측자 행렬

predictorMatrix는 각 변수를 대치할 때 사용할 예측 변수를 결정합니다.

nhanes_multiimp <- mice(nhanes, m = 20)
nhanes_multiimp$predictorMatrix
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      1      1      1        1       1     1          1
Gender       1      0      1      1        1       1     1          1
Weight       1      1      0      1        1       1     1          1
Height       1      1      1      0        1       1     1          1
Diabetes     1      1      1      1        0       1     1          1
TotChol      1      1      1      1        1       0     1          1
Pulse        1      1      1      1        1       1     0          1
PhysActive   1      1      1      1        1       1     1          0
R에서 대치(Imputation)로 결측치 다루기

변수별 예측자 선택

  • 이상적으로는 적절한 모델 선택을 수행합니다.
  • 빠른 대안: 목표와 상관된 변수 사용.
pred_mat <- quickpred(nhanes, mincor = 0.25)
nhanes_multiimp <- mice(nhanes, m = 20, predictorMatrix = pred_mat)
print(pred_mat)
           Age Gender Weight Height Diabetes TotChol Pulse PhysActive
Age          0      0      0      0        0       0     0          0
Gender       0      0      0      0        0       0     0          0
Weight       1      1      0      0        0       0     1          0
...
R에서 대치(Imputation)로 결측치 다루기

MICE로 대치 연습해 봅시다!

R에서 대치(Imputation)로 결측치 다루기

Preparing Video For Download...