R에서 대치(Imputation)로 결측치 다루기
Michal Oleszak
Machine Learning Engineer
결측치 문제는 세 가지로 분류됩니다. 구분은 중요합니다. 유형마다 해결책이 다릅니다.
데이터셋에서 결측의 위치가 완전히 무작위이며, 다른 데이터에 의존하지 않습니다.
예시:
기상 센서가 온도를 측정해 DB로 전송합니다. 센서가 고장 난 동안 DB에 결측이 생깁니다.
데이터셋에서 결측의 위치가 다른 관측된 데이터에 의존합니다.
예시:
정비로 센서를 끈 기간에 온도 값이 결측입니다. 정비팀은 주말에 일하지 않으므로, 결측 위치는 요일에 따라 달라집니다.
데이터셋에서 결측의 위치가 결측 자체의 값에 의존합니다.
예시:
매우 추우면 센서가 얼어 멈춥니다. 매우 낮은 온도는 기록되지 않습니다. 즉, 온도 변수의 결측 위치가 그 변수 값 자체에 의존합니다.
불완전 관측을 단순히 삭제하면?
예시: 평균 차이에 대한 t-검정
p-값 작음 → 귀무가설 기각 → 평균이 다름
p-값 큼 → 귀무가설 기각 안 함 → 평균이 같음
목표: 한 변수의 결측 비율이 다른 변수의 값에 따라 달라지는지 검정합니다.
예: PhysActive의 결측 비율이 남녀에 따라 다른가?
검정 절차:
PhysActive 결측 여부를 나타내는 더미 변수를 만든다.nhanes <- nhanes %>%
mutate(missing_phys_active = is.na(PhysActive))
missing_phys_active_male <- nhanes %>%
filter(Gender == "male") %>%
pull(missing_phys_active)
missing_phys_active_female <- nhanes %>%
filter(Gender == "female") %>%
pull(missing_phys_active)
t.test(missing_phys_active_female, missing_phys_active_male)
Welch Two Sample t-test
data: missing_phys_active_female and missing_phys_active_male
t = -1.7192, df = 781.18, p-value = 0.08597
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.044414688 0.002940477
sample estimates:
mean of x mean of y
0.02083333 0.04157044
R에서 대치(Imputation)로 결측치 다루기