결측 관측의 처리와 사례 — RBD·LS 의 단일 결측 보정

Montgomery Ch.2.4-2.5 Missing Observations · Illustration

RBD 와 Latin Square 에서 결측 관측이 발생했을 때의 추정·보정 절차 (Yates 의 공식), 다중 결측의 처리, MCAR / MAR / MNAR 의 결측 메커니즘, multilevel model 의 자동 처리, 실무 농학적 사례를 통한 분석 흐름을 정리한다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 결측 관측의 문제

RBD/LS 의 SS 분해는 균등 데이터를 전제. 한 셀 결측이면:

  • \(df\) 가 변동.
  • 처치·블록 추정량이 비편향이 아님.
  • ANOVA 표가 정확하지 않음.
함정: 결측을 무시하면

결측 셀을 ignore 하고 ANOVA 시행 시: - SS 의 자유도 계산 잘못됨. - 처치 효과 SS 가 블록 효과 SS 와 confounded. - \(p\) 값 부정확.

해결: 1. Yates 공식: 결측값 추정 후 보정. 2. Multiple Imputation: 여러 imputed dataset 결합. 3. Mixed Model: likelihood-based 자동 처리.

2 결측 메커니즘

2.1 MCAR vs MAR vs MNAR

메커니즘 정의 처리
MCAR (Completely At Random) 결측이 데이터 전혀 무관 listwise OK
MAR (At Random) 결측이 관측 변수에만 의존 imputation, mixed model
MNAR (Not At Random) 결측이 결측값 자체에 의존 매우 어려움 (sensitivity analysis)

농학·산업의 결측은 흔히 MCAR (자연재해, 기계 고장). 임상은 MAR 가능 (drop-out 이 상태에 의존).

직관: 결측 메커니즘 점검

MCAR: 결측 환자가 다른 환자와 평균 차이 없음. MAR: 결측 환자의 baseline 이 다를 수 있지만 baseline 통제 후 결측 = random. MNAR: 결측 환자의 결측 시점 응답이 다를 가능성 (예: 너무 아파서 측정 불가).

검정 어려움. 도메인 지식 + sensitivity analysis (다른 가정 하의 결과 비교).

3 Single Missing — Yates 의 보정

정의: Yates Formula for RBD

결측 셀 \((i, j)\) 의 추정값:

\[ \hat Y_{ij} = \frac{a R_i + b T_j - G}{(a-1)(b-1)} \]

  • \(R_i\): \(i\) 블록의 다른 \(a-1\) 셀 합.
  • \(T_j\): \(j\) 처치의 다른 \(b-1\) 셀 합.
  • \(G\): 전체 합 (결측 제외).

이 추정값을 결측 셀에 대입하고 정규 RBD ANOVA 진행. 단, error \(df\) 를 1 줄여서 보정.

3.1 유도

Yates 공식은 다음 조건에서 도출: - 결측값이 처치 효과 + 블록 효과 + 잔차의 합. - 잔차 SS 최소화 (least squares).

미분 및 정리 → 위 공식.

4 Latin Square 의 단일 결측 보정

\[ \hat Y_{ijk} = \frac{a (R_i + C_j + T_k) - 2G}{(a-1)(a-2)} \]

  • \(R_i\): 행 \(i\) 합.
  • \(C_j\): 열 \(j\) 합.
  • \(T_k\): 처치 \(k\) 합.
  • \(G\): 전체 합.

LS 가 두 차원 블록이라 보정 공식이 약간 다름.

5 다중 결측

여러 셀 결측은 위 공식의 반복 적용 (수렴 필요) 또는 직접 GLS 추정 (REML 권장). Mixed model 의 likelihood-based 처리가 일반.

5.1 Multiple Imputation (MI)

여러 셀 결측 시:

  1. Multiple Imputation (MI): 결측 셀에 여러 (예: 5) plausible 값을 stochastic 으로 생성.
  2. 각 imputed 데이터셋에서 분석.
  3. Rubin’s rules 로 결과 결합.

R mice, Python sklearn.impute.IterativeImputer.

5.2 Mixed Model 의 자동 처리

Multilevel/mixed model 은 결측을 likelihood-based 로 자동 처리 (MAR 가정).

from statsmodels.formula.api import mixedlm
md = mixedlm("Y ~ C(treatment)", data=data_with_missing,
             groups=data_with_missing["block"]).fit()

6 사례 — 농학 RBD

6.1 데이터

5 비료 × 4 plot, 한 plot 에서 자연재해로 한 셀 결측.

        A    B    C    D    E
Plot1: 25   28   22   30   24
Plot2: 23   26    *   31   22
Plot3: 24   27   23   29   23
Plot4: 26   29   24   32   25

6.2 Yates 보정

\(\hat Y_{2,C}\) 추정: - \(R_2 = 23 + 26 + 31 + 22 = 102\) - \(T_C = 22 + 23 + 24 = 69\) - \(G = 25 + 28 + 22 + 30 + 24 + 23 + 26 + 31 + 22 + 24 + 27 + 23 + 29 + 23 + 26 + 29 + 24 + 32 + 25 = 493\) - \(\hat Y_{2,C} = (5 \times 102 + 4 \times 69 - 493) / (4 \times 3) = (510 + 276 - 493) / 12 = 293 / 12 = 24.4\)

추정값을 결측 셀에 대입.

6.3 보정 ANOVA

Source \(SS\) \(df\) \(MS\) \(F\)
Treatment 180 4 45 \(45/2.5 = 18.0\)
Block 24 3 8
Error \(\approx 27.5\) 11 (= 12 − 1) 2.5

(error df 가 12 → 11 로 감소.)

6.4 Multilevel 대안

md = mixedlm("Y ~ C(treatment)", data=data, groups=data["plot"]).fit()

Yates 보정과 비교적 비슷한 결과. multilevel 이 더 robust (작은 표본에서).

7 Python 코드

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols, mixedlm

np.random.seed(2026)
treatments = ["A", "B", "C", "D", "E"]
plots = list(range(4))

records = []
for plot in plots:
    block_eff = np.random.normal(0, 1.5)
    for t in treatments:
        treat_eff = {"A": 24, "B": 27, "C": 22, "D": 30, "E": 23}[t]
        y = treat_eff + block_eff + np.random.normal(0, 1.5)
        records.append({"treatment": t, "plot": plot, "Y": y})

data = pd.DataFrame(records)

# 한 셀 결측 (Plot2, C)
data_missing = data.copy()
mask = (data_missing["plot"] == 1) & (data_missing["treatment"] == "C")
true_value = data_missing.loc[mask, "Y"].iloc[0]
data_missing = data_missing[~mask]

# Yates 공식으로 추정
R_i = data_missing[data_missing["plot"] == 1]["Y"].sum()
T_j = data_missing[data_missing["treatment"] == "C"]["Y"].sum()
G = data_missing["Y"].sum()
a = len(treatments)
b = len(plots)
y_hat = (a * R_i + b * T_j - G) / ((a-1) * (b-1))
print(f"True value: {true_value:.2f}")
print(f"Yates estimate: {y_hat:.2f}")

# 추정값으로 채워서 ANOVA
data_imputed = pd.concat([data_missing, pd.DataFrame([{
    "treatment": "C", "plot": 1, "Y": y_hat
}])])
model = ols("Y ~ C(treatment) + C(plot)", data=data_imputed).fit()
print("\n=== ANOVA with Yates imputation ===")
anova = sm.stats.anova_lm(model, typ=2)
print(anova.round(3))

# 또는 mixed model 로 결측 자동 처리
md = mixedlm("Y ~ C(treatment)", data=data_missing,
             groups=data_missing["plot"]).fit()
print("\n=== Mixed model (REML, auto missing handling) ===")
print(md.summary().tables[1])

8 가정과 한계

  • MCAR 가정: 정통 Yates 공식의 전제.
  • 단일 결측 vs 다중 결측: 다중 결측은 GLS/REML.
  • 결측이 처치 효과와 관련: MNAR — 보정 신뢰 ↓.
  • 자유도 -1 보정: error df 줄여야 정확.
  • 현대 표준: multilevel REML 또는 multiple imputation.

9 Sensitivity Analysis

직관: 결측 가정의 robustness 점검

MAR vs MNAR 가정 하의 결과 비교: 1. MAR 가정 (multilevel REML). 2. MNAR pattern-mixture model. 3. Tipping point analysis: 결측값을 다양한 값으로 가정해 결론이 바뀌는 임계점.

이 점검이 결측 데이터 분석의 robust 보고.

10 응용

분야 결측 원인
농학 자연재해, 곤충 피해
임상 drop-out, 부작용
산업 machine 고장, 측정 오류
교육 결석, 전학
IT 사용자 이탈

11 ML 매핑

매핑: ML 의 결측 처리

ML 의 cross-validation 에서 일부 fold 가 실패 (수렴 안 됨, NaN):

Fold 1: model A 정확도 = 0.85 ✓
Fold 1: model B 정확도 = NaN ✗ (실패)
Fold 2: ...

처리: - listwise: 그 fold 제외. - imputation: 다른 fold 의 평균으로 대체. - multilevel: REML 자동 처리.

multilevel 이 가장 robust.

12 본 시리즈 마무리

G-MON2-0  Complete Block 개관
G-MON2-1  CRD
G-MON2-2  RBD + Latin Square
G-MON2-3  Missing + Illustration  ← 현재 글 (Ch.2 마지막)
    ↓
G-MON3 (Factorial)
G-MON5 (Incomplete Block)

13 관련 주제

선행 지식

후속 주제

  • G-MON3 — Factorial Experiments (작성 예정)
  • G-MON5 — Incomplete Block (작성 예정)

다른 카테고리 연결

14 더 읽을 거리

  • Yates, F. (1933). “Analysis of replicated experiments when the field results are incomplete.” Empire Journal of Experimental Agriculture 1(2): 129-142 — Yates 공식.
  • Little, R. J. A., Rubin, D. B. (2019). “Statistical Analysis with Missing Data” (3rd ed). Wiley — 결측 표준 reference.
  • van Buuren, S. (2018). “Flexible Imputation of Missing Data” (2nd ed). CRC Press.
  • Schafer, J. L. (1997). “Analysis of Incomplete Multivariate Data.” Chapman & Hall.
  • Molenberghs, G., Kenward, M. G. (2007). “Missing Data in Clinical Studies.” Wiley.

Subscribe

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