Pendekatan imputasi berbasis model

Menangani Data Hilang dengan Imputasi di R

Michal Oleszak

Machine Learning Engineer

Imputasi berbasis model

  • Imputasi tiap variabel dengan model statistik berbeda.
  • Dapat mempertimbangkan relasi data yang sudah diketahui.
Menangani Data Hilang dengan Imputasi di R

Prosedur imputasi berbasis model

  • Loop atas variabel.
  • Untuk tiap variabel, buat model yang menjelaskannya.
  • Gunakan model untuk memprediksi nilai hilang.
  • Iterasikan variabel dan imputasi lokasi yang awalnya hilang.
Menangani Data Hilang dengan Imputasi di R

Imputasi berbasis model selangkah demi selangkah

Sebuah data frame dengan empat variabel (A, B, C, dan D) dan lima baris berisi data contoh. Dua variabel (A dan C) masing-masing memiliki dua nilai hilang, semuanya di baris berbeda.

Menangani Data Hilang dengan Imputasi di R

Imputasi berbasis model selangkah demi selangkah

Sebuah data frame dengan empat variabel (A, B, C, dan D) dan lima baris berisi data contoh. Nilai hilang di A telah diimputasi.

  1. Prediksi nilai hilang di A.
Menangani Data Hilang dengan Imputasi di R

Imputasi berbasis model selangkah demi selangkah

Sebuah data frame dengan empat variabel (A, B, C, dan D) dan lima baris berisi data contoh. Nilai hilang di A dan C telah diimputasi.

  1. Prediksi nilai hilang di A.
  2. Anggap data terimputasi di A sebagai teramati dan prediksi nilai hilang di C.
Menangani Data Hilang dengan Imputasi di R

Imputasi berbasis model selangkah demi selangkah

Sebuah data frame dengan empat variabel (A, B, C, dan D) dan lima baris berisi data contoh. Nilai hilang di C telah diimputasi.

  1. Prediksi nilai hilang di A.
  2. Anggap data terimputasi di A sebagai teramati dan prediksi nilai hilang di C.
  3. Anggap data terimputasi di C sebagai teramati dan prediksi A lagi pada lokasi yang awalnya hilang.
  4. Lanjutkan hingga konvergen.
Menangani Data Hilang dengan Imputasi di R

Cara memilih model

Model tiap variabel bergantung pada tipenya:

  • Variabel kontinu - regresi linear
  • Variabel biner - regresi logistik
  • Variabel kategorik - regresi logistik multinomial
  • Variabel cacah - regresi Poisson
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi linear tunggal

Imputasi Height dan Weight di nhanes dengan model linear:

library(simputation)
nhanes_imp <- impute_lm(nhanes, Height + Weight ~ .)

Periksa apakah benar terimputasi:

nhanes_imp %>% 
  is.na() %>% 
  colSums()
Age     Gender     Weight     Height   Diabetes    TotChol      Pulse PhysActive 
  0          0         32         30          1         85         32         26
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi linear dalam praktik

Inisialisasi nilai hilang dengan hotdeck dan simpan lokasi yang hilang:

nhanes_imp <- hotdeck(nhanes)
missing_height <- nhanes_imp$Height_imp
missing_weight <- nhanes_imp$Weight_imp

Iterasi Height dan Weight 5 kali, imputasi hanya pada lokasi yang awalnya hilang:

for (i in 1:5) {
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes_imp, Weight ~ Age + Gender + Height)
}
Menangani Data Hilang dengan Imputasi di R

Mendeteksi konvergensi



for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Menangani Data Hilang dengan Imputasi di R

Mendeteksi konvergensi

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {

  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Menangani Data Hilang dengan Imputasi di R

Mendeteksi konvergensi

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)


}
Menangani Data Hilang dengan Imputasi di R

Mendeteksi konvergensi

diff_height <- c()
diff_weight <- c()
for (i in 1:5) {
  prev_iter <- nhanes_imp
  nhanes_imp$Height[missing_height] <- NA
  nhanes_imp <- impute_lm(nhanes, Height ~ Age + Gender + Weight)
  nhanes_imp$Weight[missing_weight] <- NA
  nhanes_imp <- impute_lm(nhanes, Weight ~ Age + Gender + Height)
  diff_height <- c(diff_height, mapc(prev_iter$Height, nhanes_imp$Height))
  diff_weight <- c(diff_weight, mapc(prev_iter$Weight, nhanes_imp$Weight))
}
Menangani Data Hilang dengan Imputasi di R

Mendeteksi konvergensi

Plot garis dengan dua garis: untuk variabel Pulse dan TotChol. Sumbu x menunjukkan jumlah iterasi, sumbu y menunjukkan perubahan persentase absolut rata-rata pada nilai terimputasi antar iterasi. Setelah iterasi pertama keduanya berubah. Mulai iterasi ke-2, tidak ada perubahan lagi.

Menangani Data Hilang dengan Imputasi di R

Ayo praktik imputasi regresi linear!

Menangani Data Hilang dengan Imputasi di R

Preparing Video For Download...