로지스틱 회귀로 대치하기
이진 변수를 대치할 때 자주 사용하는 방법이 로지스틱 회귀예요. 아쉽게도 이를 자동으로 처리하는 impute_lm()와 비슷한 함수는 없어요. 그래서 이번에는 직접 함수를 만들어 보겠습니다!
함수 이름은 impute_logreg()로 하죠. 첫 번째 인자는 결측값이 초기화되어 있고, 대치할 열에만 결측이 남아 있는 데이터 프레임 df가 됩니다. 두 번째 인자는 로지스틱 회귀 모델에 사용할 formula예요.
함수는 다음을 수행합니다:
- 결측값의 위치를 보존합니다.
- 모델을 학습합니다.
- 예측값을 생성합니다.
- 결측값을 예측값으로 대체합니다.
imp_var를 만드는 코드는 걱정하지 않으셔도 돼요. 이는 단지 formula에서 대치할 열의 이름을 추출하는 방법일 뿐이에요. 그럼 함수형 프로그래밍을 시작해 볼까요?
이 연습은 강의의 일부입니다
R에서 대치(Imputation)로 결측치 다루기
연습 안내
df[imp_var]에서 결측인 위치에 대한 불리언 마스크를 만들고missing_imp_var에 할당하세요.- 함수의 인자로 받은 formula와 데이터로 로지스틱 회귀 모델을 적합하세요. 로지스틱 회귀가 적합되도록 올바른
family를 설정해야 하며(따옴표 없이 전달), 모델을logreg_model에 할당하세요. - 해당 모델로 반응값을 예측하고
preds에 할당하세요. 적절한 예측type을 설정하는 것도 잊지 마세요. missing_imp_var와preds를 함께 사용해 결측값을 대치하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
impute_logreg <- function(df, formula) {
# Extract name of response variable
imp_var <- as.character(formula[2])
# Save locations where the response is missing
missing_imp_var <- ___
# Fit logistic regression mode
logreg_model <- ___(___, data = ___, family = ___)
# Predict the response and convert it to 0s and 1s
preds <- predict(___, type = ___)
preds <- ifelse(preds >= 0.5, 1, 0)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <-___[___]
return(df)
}