Multiple Imputation — 다중 대체의 표준 절차

Woodward 14.11~14.13 — 단변량·다변량 MI 의 도입과 통합 추론

Woodward Ch.14.11 (단변량 MI), 14.12 (다변량 MI), 14.13 (when worth) 을 정리한다. Rubin 1987 의 Multiple Imputation 절차, 결측 불확실성의 정직한 반영, Rubin’s rules 통합 추론, MICE 알고리즘, 실무 권장을 자세히 다룬다.

Experimentation
Fundamentals
저자

Kwangmin Kim

공개

2026년 05월 08일

1 도입 — Rubin 1987 의 혁신

Donald B. Rubin 의 1987 Multiple Imputation for Nonresponse in Surveys 가 결측 처리의 표준 을 만들었다. 핵심: 결측을 여러 번 다르게 대체하여 불확실성 반영.

이 글은 (a) MI 의 절차, (b) Rubin’s rules 통합, (c) 다변량 MI (MICE), (d) 실무 권장을 다룬다.

2 Multiple Imputation 의 정의

정의: Multiple Imputation (MI)

결측 자료를 여러 다른 값 으로 \(M\) 회 대체 (보통 \(M = 5 \sim 20\)). 각 imputed dataset 분석 후 결과 통합.

3 단계:

  1. Imputation: 결측을 \(M\) 회 다른 값으로 대체 → \(M\) 개 완전 자료
  2. Analysis: 각 자료에서 분석 (회귀, 검정 등)
  3. Pooling: \(M\) 개 결과 통합 (Rubin’s rules)

2.1 MI 의 통계적 정당성

Rubin: MI 는 결측의 사후 예측 분포 (posterior predictive distribution) 에서 표집. 베이즈 추론의 응용.

작동 조건:

  • MAR 또는 MCAR (Imputation model 에 결측 메커니즘 반영 시)
  • Imputation model 이 적절히 명시

2.2 왜 여러 번 대체하는가

단일 대체의 문제: 결측 불확실성 무시 → SE 과소.

MI 의 해법: 변동 을 가진 다중 대체 → SE 가 결측 불확실성 반영.

직관 — MI 의 다섯 번 던지기

비유: 모르는 정답을 5 번 다르게 추측하고, 5 번의 결과를 평균 + 변동도 측정.

  • 추측이 모두 비슷 → 결측이 예측 가능 → SE 작음
  • 추측이 매우 다름 → 결측이 불확실 → SE 큼

불확실성 측정 이 단일 대체 (single imputation) 가 못하는 것.

A/B 테스트의 segment 분석에서 일부 사용자 정보 결측 → MI 로 5 번 대체. 효과 추정의 진정한 불확실성 반영.

3 MI 절차 — 단변량 사례

3.1 Step 1 — Imputation

결측 변수 \(X\) 의 모형:

\[ X_{\text{missing}} = \beta_0 + \beta_1 Z_1 + \cdots + \beta_p Z_p + \varepsilon \]

다른 변수 \(Z\) 들로 회귀 모형. 베이즈 또는 부트스트랩으로 모수의 사후 분포 추출.

3.2 Step 2 — \(M\) 회 반복

각 반복:

  1. 모수 분포에서 \(\hat{\beta}\) 추출
  2. \(\varepsilon\) 분포에서 무작위 잔차 추가
  3. 결측값 = \(\hat{\beta}_0 + \hat{\beta}_1 Z_1 + \cdots + \varepsilon\)

이 절차로 \(M\) 개 다른 imputed dataset.

3.3 Step 3 — Pooling (Rubin’s Rules)

각 imputed dataset 에서 분석 → \(M\) 개 추정값 \(\hat{\theta}_m\), \(\widehat{\text{Var}}(\hat{\theta}_m)\).

정의: Rubin’s Rules (Pooling)

점추정 (\(M\) 개 평균):

\[ \bar{\hat{\theta}} = \frac{1}{M} \sum_{m=1}^{M} \hat{\theta}_m \]

Within-imputation variance:

\[ \bar{V}_W = \frac{1}{M} \sum_{m=1}^{M} \widehat{\text{Var}}(\hat{\theta}_m) \]

Between-imputation variance:

\[ V_B = \frac{1}{M-1} \sum_{m=1}^{M} (\hat{\theta}_m - \bar{\hat{\theta}})^2 \]

Total variance:

\[ V_T = \bar{V}_W + \left(1 + \frac{1}{M}\right) V_B \]

95 % CI:

\[ \bar{\hat{\theta}} \pm t_{\nu} \cdot \sqrt{V_T} \]

여기서 \(\nu\) 는 보정된 자유도.

3.4 Total Variance 의 의미

\(V_T\)결측의 두 가지 불확실성 합산:

  • \(\bar{V}_W\): 각 imputation 내 표본 불확실성 (자료가 완전했어도 있을)
  • \(V_B\): imputation 간 변동 (결측 자체의 불확실성)

결합 이 단일 대체와의 차이.

4 다변량 MI — MICE 알고리즘

4.1 동기

여러 변수가 결측인 경우. 각 변수가 다른 변수 로 의존.

4.2 MICE (Multivariate Imputation by Chained Equations)

MICE 알고리즘

각 결측 변수를 다른 변수 로 회귀. 순차 반복:

  1. 각 변수의 결측을 임시값 (평균 등) 으로 초기화
  2. 변수 \(X_1\): \(X_1 \sim \text{regress}(X_2, X_3, \ldots, X_p)\) → 결측 갱신
  3. 변수 \(X_2\): \(X_2 \sim \text{regress}(X_1, X_3, \ldots, X_p)\) → 결측 갱신
  4. … 모든 변수 한 번씩
  5. 수렴까지 1 ~ 4 반복

각 반복이 full conditional 모형.

4.3 사용 도구

  • Python: sklearn.experimental.IterativeImputer, miceforest
  • R: mice 패키지 (van Buuren) — 표준
  • Stata: mi impute chained

4.4 사례

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
import pandas as pd
import numpy as np

# 가상 자료 (결측 있음)
np.random.seed(42)
n = 1000
df = pd.DataFrame({
    'age': np.random.uniform(20, 80, n),
    'bmi': np.random.normal(25, 5, n),
    'income': np.random.lognormal(10, 0.5, n),
    'outcome': np.random.normal(50, 10, n)
})
# 일부 결측 추가
df.loc[np.random.choice(n, 100, replace=False), 'bmi'] = np.nan
df.loc[np.random.choice(n, 80, replace=False), 'income'] = np.nan

# MICE
imputer = IterativeImputer(max_iter=10, random_state=42, sample_posterior=True)

# 다중 대체 (5 회)
imputed_datasets = []
for m in range(5):
    imputer_m = IterativeImputer(max_iter=10, random_state=m, sample_posterior=True)
    imputed = pd.DataFrame(imputer_m.fit_transform(df), columns=df.columns)
    imputed_datasets.append(imputed)

# 각 imputed dataset 에서 분석
import statsmodels.api as sm

estimates = []
ses = []
for imputed in imputed_datasets:
    X = sm.add_constant(imputed[['age', 'bmi', 'income']])
    model = sm.OLS(imputed['outcome'], X).fit()
    estimates.append(model.params['bmi'])
    ses.append(model.bse['bmi'])

# Rubin's rules
M = 5
theta_bar = np.mean(estimates)
V_W = np.mean(np.array(ses)**2)
V_B = np.var(estimates, ddof=1)
V_T = V_W + (1 + 1/M) * V_B

# 95 % CI
import scipy.stats as stats
df_pool = (M - 1) * (1 + V_W / ((1 + 1/M) * V_B))**2  # Barnard-Rubin
ci = (theta_bar - stats.t.ppf(0.975, df_pool) * np.sqrt(V_T),
      theta_bar + stats.t.ppf(0.975, df_pool) * np.sqrt(V_T))

print(f"BMI 계수 점추정: {theta_bar:.4f}")
print(f"Total SE: {np.sqrt(V_T):.4f}")
print(f"95 % CI: ({ci[0]:.4f}, {ci[1]:.4f})")

이 코드가 MICE + Rubin’s rules 의 전체 절차.

5 When Worth — MI 가 가치 있을 때

Woodward Ch.14.13 의 when worth 결정 트리:

결측 처리 결정:
   ↓
결측률?
   < 5 %, MCAR → Listwise deletion (간단)
   5 % 이상 → MI 권장
   ↓

결측 메커니즘?
   MCAR → Listwise OK, MI 안전
   MAR → MI 필수
   MNAR → MI + 민감도 분석
   ↓

분석 형태?
   단순 기술 → Mean imputation 가능 (limit)
   회귀·검정 → MI
   복잡 모형 (mixed, longitudinal) → MI
   ↓

표본 크기?
   매우 큰 자료 (n > 10000) → MI 비싸지만 가능
   작은 자료 → MI + 신중

6 \(M\) 의 선택

\(M\) (imputation 횟수) 결정:

\(M\) 사용 시점
5 표준 (Rubin 1987 권장)
10 결측률 높음 (20 % +)
20 ~ 50 정밀 분석 (논문)
100+ 매우 작은 표본 또는 매우 정밀

\(M\) 일수록 정확성 향상, 계산 비용 증가. 수확 체감.

7 진단 도구

7.1 Convergence

MICE 반복이 수렴 했는지 확인. 평균/분산이 안정.

# 반복마다 imputed 평균 추적
# 후반 반복에서 안정해지면 OK

7.2 분포 비교

Imputed 값과 관측 값의 분포 비교. 너무 다르면 모형 부적절.

7.3 Sensitivity Analysis

다른 imputation model 또는 \(M\) 으로 결과 비교.

8 A/B 테스트의 응용

8.1 시나리오 — 사용자 segment 결측

# 사용자 자료에 일부 segment 결측 (예: tenure 변수의 20 %)
import pandas as pd
import numpy as np

n = 5000
df = pd.DataFrame({
    'variant': np.random.choice([0, 1], n),
    'age': np.random.uniform(18, 70, n),
    'tenure': np.random.uniform(0, 5, n),  # 일부 결측
    'revenue': np.random.normal(100, 30, n)
})
# 결측 (MAR — 신규 사용자에서 더 자주 결측)
mask = np.random.random(n) < 0.05 + 0.15 * (df['age'] < 25)
df.loc[mask, 'tenure'] = np.nan

# MI + 분석
# (위 코드 패턴 적용)

8.2 시나리오 — 시간 결측 (time-series)

연속 측정의 일부 시점 결측. MICE 의 시계열 변형 사용.

9 MI 의 한계

9.1 한계 1 — Imputation Model 의존

MI 의 정확성은 imputation model 의 적절성 에 의존. 잘못된 모형 → 잘못된 imputation.

9.2 한계 2 — MNAR 처리

순수 MI 는 MAR 가정. MNAR 에서는 추가 모델링 필요.

9.3 한계 3 — 계산 비용

큰 자료 + 많은 변수 + 큰 \(M\) → 시간 소요.

9.4 한계 4 — 모형 호환성

분석 모형과 imputation 모형이 호환 해야 함. 예: 이차항 사용 시 imputation 도 이차 포함.

10 CONSORT 와 MI

CONSORT 권고 (임상시험):

  • 결측 자료의 처리 방법 명시
  • Sensitivity analysis 보고
  • Primary 분석은 ITT (또는 modified ITT)

MI 가 ITT 분석의 표준 도구.

11 MI 의 자세한 절차

11.1 Imputation Model 선택

각 변수의 결측을 어떤 모형으로 대체할지:

변수 유형 권장 모형
연속 (정규) 선형 회귀
연속 (비정규) Predictive Mean Matching (PMM)
이진 Logistic 회귀
순서형 Ordered logistic
명목형 Multinomial logistic
카운트 Poisson 또는 negative binomial

각 변수 유형에 맞는 적절한 분포.

11.2 Predictive Mean Matching (PMM)

# PMM 의 단순 절차
# 1. 결측 자료의 *예측값* 계산
# 2. 같은 *예측값* 의 관측 자료에서 *실제 값* 무작위 선택
# 3. 그 값으로 결측 대체

# 장점: 분포 형태 보존 (변환 가정 X)
# 단점: 작은 자료에서 변동 작음

PMM 이 비정규 자료의 표준. R mice 의 기본값.

11.3 Convergence Diagnostics

MICE 의 반복이 수렴 했는지 진단.

# 반복마다 imputed 평균/분산 추적
# 마지막 반복들에서 안정 → 수렴
import matplotlib.pyplot as plt

# convergence plot (개념)
# fig, axes = plt.subplots(2, 1)
# axes[0].plot(imputation_means_iteration)
# axes[1].plot(imputation_vars_iteration)

11.4 진단 — Imputed vs Observed

Imputed 값과 관측 값의 분포 비교.

# 분포 비교 — KDE
import seaborn as sns
# sns.kdeplot(observed_values, label='Observed')
# sns.kdeplot(imputed_values, label='Imputed')
# 두 분포가 비슷해야 (MAR 가정 하)

12 \(M\) 결정의 정량적 가이드

12.1 Rule of Thumb

M ≈ 100 × (결측률)

예시: - 5 % 결측: \(M = 5\) - 20 % 결측: \(M = 20\) - 50 % 결측: \(M = 50\)

이 규칙이 대략적 가이드. 정밀 분석은 더 큰 \(M\).

12.2 Bodner 2008 의 분석

연구: 결측률 \(\gamma\) 에 따른 적정 \(M\).

결측률 권장 \(M\)
5 % 5
10 % 10
20 % 20
30 % 50
50 % 100

큰 결측률에서 대량 imputation 필요.

13 MI 와 Sensitivity Analysis

MAR 가정이 현실적이지 않을 수 있음. Sensitivity analysis 권장.

13.1 Pattern-Mixture Model

결측의 모형 을 다양하게 시도. 각 모형 가정 하의 결과 비교.

13.2 Tipping Point Analysis

결과가 유의하지 않게 되는 결측 메커니즘 가정 탐색.

1. MAR 가정 분석 → 결과 (예: 효과 +5)
2. MNAR 가정 (결측이 outcome 과 강하게 연관)
   → 결측 환자의 outcome 을 *극단적* 으로 가정
3. 결과가 *반전* 되는 가정 강도 측정
4. 그 가정이 *현실적* 인지 평가

이 분석이 결과의 robustness.

13.3 Fully Conditional Specification

PMM 의 일반화. 각 변수마다 조건부 모형.

14 A/B 테스트의 MI 응용

import pandas as pd
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from scipy import stats

np.random.seed(42)
n = 5000

# 가상 자료
df = pd.DataFrame({
    'variant': np.random.choice([0, 1], n),
    'age': np.random.uniform(18, 70, n),
    'tenure': np.random.uniform(0, 5, n),
    'category': np.random.choice(['A', 'B', 'C'], n),
})
df['revenue'] = (50 + 5 * df['variant'] + 0.5 * df['age'] +
                 2 * df['tenure'] + np.random.normal(0, 30, n))

# 결측 (MAR — 신규 사용자에서 더 자주)
mask_age = (df['tenure'] < 1) & (np.random.random(n) < 0.20)
df.loc[mask_age, 'age'] = np.nan

# MI (5 회)
M = 5
estimates = []
ses = []

# 카테고리는 dummy 로
df_dummy = pd.get_dummies(df, columns=['category'], drop_first=True)

for m in range(M):
    imputer = IterativeImputer(max_iter=10, random_state=m, sample_posterior=True)
    imputed = pd.DataFrame(imputer.fit_transform(df_dummy), columns=df_dummy.columns)

    # 분석
    import statsmodels.api as sm
    X = sm.add_constant(imputed[['variant', 'age', 'tenure']])
    model = sm.OLS(imputed['revenue'], X).fit()
    estimates.append(model.params['variant'])
    ses.append(model.bse['variant'])

# Rubin's rules
theta_bar = np.mean(estimates)
V_W = np.mean(np.array(ses)**2)
V_B = np.var(estimates, ddof=1)
V_T = V_W + (1 + 1/M) * V_B

# 자유도 (Barnard-Rubin)
df_pool = (M - 1) * (1 + V_W / ((1 + 1/M) * V_B))**2

# 95 % CI
ci = (theta_bar - stats.t.ppf(0.975, df_pool) * np.sqrt(V_T),
      theta_bar + stats.t.ppf(0.975, df_pool) * np.sqrt(V_T))

print(f"Variant 효과 추정: {theta_bar:.3f}")
print(f"Total SE: {np.sqrt(V_T):.3f}")
print(f"95 % CI: ({ci[0]:.3f}, {ci[1]:.3f})")

이 코드가 완전한 MI 분석. 결측 처리 + 분석 + 결과 통합.

15 Phase A 의 마무리 — Bootstrap, Permutation, MI 통합

이 시리즈 (A-WOO14-1 ~ 7) 가 컴퓨터 집약적 방법의 3 도구를 통합 다뤘다.

도구 목적 핵심 통찰
Bootstrap 추정 + CI 자료 자체에서 표집 분포
Permutation 가설 검정 라벨 셔플로 영가설 분포
MI 결측 처리 다중 대체로 불확실성 반영

이 세 도구가 현대 통계 분석의 핵심 무기. A/B 테스트, 임상시험, 역학 모두에 적용.

16 핵심 정리 — Phase A 마무리

Phase A 전체 (46 편) 의 통합 메시지:

  1. 무작위 배정 이 검정 분포의 발판 (Maxwell Ch.2)
  2. 모형 비교 가 ANOVA·회귀·대비의 통합 골격 (Maxwell Ch.3-5)
  3. 임상 결정 이 다중성 보정의 기준 (Schulz Ch.1, 19)
  4. 사전 산정 이 표본 크기의 정직성 (Schulz Ch.11, Woodward Ch.8)
  5. 컴퓨터 집약 이 분포 가정의 한계 우회 (Buisson Ch.7, Woodward Ch.14)

이 5 가지 원칙이 현대 실험 설계와 분석의 토대.

17 관련 주제

선행 지식

Phase A 와 연결

  • 모든 Phase A 글
  • 다음 단계: Phase D (Hernan 인과추론), Phase F (Kohavi A/B), Phase H (통계 모델링)

다른 카테고리 연결

Subscribe

Enjoy this blog? Get notified of new posts by email: