결측값 초기화 및 변수 반복 처리
방금 보셨듯이 impute_lm()을 실행해도 모든 결측값이 채워지지 않을 수 있어요. 모든 결측값을 채우려면, 이전 장에서 배운 hot-deck imputation처럼 마지막 관측값을 앞으로 전달하는 간단한 방법으로 먼저 결측값을 초기화해야 해요.
또한 단일 imputation만으로는 보통 충분하지 않아요. 기본 초기값에 의존하기 때문에 편향될 수 있거든요. 올바른 접근은 변수별로 반복하면서, 원래 결측이었던 위치에 한해서 한 번에 하나씩 보간(impute)하는 거예요.
이 연습 문제에서는 먼저 hot-deck imputation으로 결측값을 초기화한 뒤, tao 데이터의 air_temp와 humidity에 대해 선형 회귀를 사용해 다섯 번 반복 루프를 돌며 값을 보간해 보겠습니다. 시작해 볼까요?
이 연습은 강의의 일부입니다
R에서 대치(Imputation)로 결측치 다루기
연습 안내
hotdeck()imputation으로 결측값을 초기화하세요.- 처음에
humidity가 결측이었던 위치를 나타내는 불리언 마스크를 만들어missing_humidity에 할당하세요. - for-루프 안에서, 생성한 불리언 마스크를 사용해
tao_imp의humidity중 원래 결측이었던 위치를NA로 설정하세요. - for-루프 안에서,
year,latitude,sea_surface_temp,air_temp를 예측 변수로 사용해 선형 회귀로tao_imp의humidity를 보간하고, 그 결과를tao_imp에 다시 할당하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Initialize missing values with hot-deck
tao_imp <- ___(tao)
# Create boolean masks for where air_temp and humidity are missing
missing_air_temp <- tao_imp$air_temp_imp
missing_humidity <- ___
for (i in 1:5) {
# Set air_temp to NA in places where it was originally missing and re-impute it
tao_imp$air_temp[missing_air_temp] <- NA
tao_imp <- impute_lm(tao_imp, air_temp ~ year + latitude + sea_surface_temp + humidity)
# Set humidity to NA in places where it was originally missing and re-impute it
tao_imp$humidity[___] <- ___
tao_imp <- ___(___, ___ ~ year + latitude + sea_surface_temp + ___)
}