평균 대치

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

Michal Oleszak

Machine Learning Engineer

대치 용어

대치(Imputation) = 결측값에 대한 합리적 추정값을 넣는 것

  • 공여자 기반 대치: 다른 완전한 관측값으로 채웁니다.
  • 모형 기반 대치: 통계/머신러닝 모형으로 예측합니다.

이 장에서는 공여자 기반 방법을 다룹니다:

  • 평균 대치
  • 핫덱 대치
  • kNN 대치
R에서 대치(Imputation)로 결측치 다루기

평균 대치

두 열이 있는 표: 원시 데이터(결측 1개)와 평균 대치로 결측을 채운 데이터.

평균 대치는 장기 평균을 중심으로 무작위 변동하는 시계열에 유리합니다.

단면 자료에는 보통 매우 좋지 않습니다:

  • 변수 간 관계를 훼손합니다.
  • 대치값에 분산이 없습니다.
R에서 대치(Imputation)로 결측치 다루기

평균 대치 실습

과제: NHANES에서 HeightWeight를 평균 대치합니다.

  • 각 값이 원래 결측이었는지 이진 지표를 만듭니다.
nhanes <- nhanes %>% 
  mutate(Height_imp = ifelse(is.na(Height), TRUE, FALSE)) %>% 
  mutate(Weight_imp = ifelse(is.na(Weight), TRUE, FALSE))
  • HeightWeight의 결측값을 각각의 평균으로 바꿉니다.
nhanes_imp <- nhanes %>% 
  mutate(Height = ifelse(is.na(Height), mean(Height, na.rm = TRUE), Height)) %>% 
  mutate(Weight = ifelse(is.na(Weight), mean(Weight, na.rm = TRUE), Weight))
R에서 대치(Imputation)로 결측치 다루기

평균 대치된 NHANES 데이터

nhanes_imp %>%
    select(Weight, Height, Height_imp, Weight_imp) %>%
    head()
     Weight   Height Height_imp Weight_imp
1  73.20000 166.2499       TRUE      FALSE
2  72.30000 166.2499       TRUE      FALSE
3  57.70000 158.9000      FALSE      FALSE
4  88.90000 183.3000      FALSE      FALSE
5  45.10000 157.6000      FALSE      FALSE
6  66.77065 158.4000      FALSE       TRUE
R에서 대치(Imputation)로 결측치 다루기

대치 품질 평가: 여백 플롯

nhanes_imp %>% select(Weight, Height, Height_imp, Weight_imp) %>% marginplot(delimiter="imp")

여백 플롯: "Height" 대 "Weight" 산점도이며, 어느 한 변수에서 대치된 값이 다른 색으로 표시됨.

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

평균 대치의 문제점

변수 간 관계 훼손:

  • HeightWeight를 평균 대치하면 양의 상관이 약해집니다.
  • 한 변수를 다른 변수로 예측하는 모델은 극단적인 대치값에 속아 편향된 결과를 냅니다.

대치값의 변동성 없음:

  • 분산이 줄면 표준 오차가 과소추정됩니다. 이는 가설검정과 신뢰구간 계산을 신뢰할 수 없게 합니다.
R에서 대치(Imputation)로 결측치 다루기

중앙값·최빈값 대치

  • 평균 대신 중앙값 또는 최빈값으로 대치할 수 있습니다.
  • 이상치가 있으면 중앙값 대치가 더 낫습니다.
  • 범주형 변수는 평균·중앙값을 계산할 수 없으므로 최빈값을 사용합니다.
  • 중앙값/최빈값 대치도 평균 대치와 같은 단점이 있습니다.

여백 플롯: "Height" 대 "Weight" 산점도이며, 어느 한 변수에서 대치된 값이 다른 색으로 표시됨.

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

연습해 봅시다!

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

Preparing Video For Download...