Imputasi dengan regresi logistik
Pilihan populer untuk mengimputasi variabel biner adalah regresi logistik. Sayangnya, tidak ada fungsi seperti impute_lm() yang dapat melakukannya. Itulah mengapa Anda akan menulis fungsinya sendiri!
Mari kita beri nama fungsi tersebut impute_logreg(). Argumen pertama adalah data frame df, yang nilai hilangnya telah diinisialisasi dan hanya menyisakan nilai hilang pada kolom yang akan diimputasi. Argumen kedua adalah formula untuk model regresi logistik.
Fungsi ini akan melakukan hal-hal berikut:
- Menyimpan lokasi nilai yang hilang.
- Membangun model.
- Membuat prediksi.
- Mengganti nilai yang hilang dengan prediksi.
Jangan khawatir tentang baris yang membuat imp_var — ini hanya cara untuk mengekstrak nama kolom yang akan diimputasi dari formula. Mari lakukan pemrograman fungsional!
Latihan ini adalah bagian dari kursus
Menangani Data Hilang dengan Imputasi di R
Petunjuk latihan
- Buat mask boolean untuk posisi di mana
df[imp_var]bernilai hilang dan simpan kemissing_imp_var. - Fit model regresi logistik menggunakan formula dan data yang diterima fungsi sebagai argumen, dengan mengatur
familyyang benar agar regresi logistik yang di-fit (berikan tanpa tanda kutip); simpan model kelogreg_model. - Prediksi respons dengan model dan simpan ke
preds; ingat untuk mengaturtypeprediksi yang sesuai. - Gunakan
predsbersamamissing_imp_varuntuk mengimputasi nilai yang hilang.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)
}