Bù khuyết bằng logistic regression
Một lựa chọn phổ biến để bù các biến nhị phân là logistic regression. Đáng tiếc là không có hàm tương tự impute_lm() để làm việc này. Vì vậy, bạn sẽ tự viết một hàm như thế!
Gọi hàm là impute_logreg(). Tham số đầu tiên là data frame df, trong đó các giá trị khuyết đã được khởi tạo và chỉ còn thiếu ở cột cần bù. Tham số thứ hai là một formula cho mô hình logistic regression.
Hàm sẽ thực hiện các bước sau:
- Ghi lại vị trí các giá trị khuyết.
- Xây dựng mô hình.
- Tạo dự đoán.
- Thay thế giá trị khuyết bằng các dự đoán.
Đừng lo về dòng tạo imp_var — đây chỉ là cách trích tên cột cần bù từ formula. Cùng thực hành functional programming nào!
Bài tập này là một phần của khóa học
Xử lý dữ liệu khuyết bằng Imputation trong R
Hướng dẫn bài tập
- Tạo một mặt nạ boolean cho vị trí
df[imp_var]bị thiếu và gán vàomissing_imp_var. - Khớp một mô hình logistic regression dùng formula và dữ liệu mà hàm nhận vào, đồng thời nhớ đặt
familyphù hợp để đảm bảo khớp logistic regression (truyền không có dấu ngoặc kép); gán mô hình vàologreg_model. - Dự đoán biến phản hồi với mô hình và gán vào
preds; nhớ đặttypedự đoán thích hợp. - Dùng
predscùng vớimissing_imp_varđể bù các giá trị khuyết.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)
}