MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Buat mask boolean untuk posisi di mana df[imp_var] bernilai hilang dan simpan ke missing_imp_var.
  • Fit model regresi logistik menggunakan formula dan data yang diterima fungsi sebagai argumen, dengan mengatur family yang benar agar regresi logistik yang di-fit (berikan tanpa tanda kutip); simpan model ke logreg_model.
  • Prediksi respons dengan model dan simpan ke preds; ingat untuk mengatur type prediksi yang sesuai.
  • Gunakan preds bersama missing_imp_var untuk 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)
}
Edit dan Jalankan Kode