Mereplikasi variabilitas data

Menangani Data Hilang dengan Imputasi di R

Michal Oleszak

Machine Learning Engineer

Variabilitas pada data imputasi

Plot margin: sebar Height vs Weight, nilai yang diimputasi pada salah satu variabel disorot dengan warna berbeda.

  • Tidak ada variabilitas pada data imputasi.
  • Kita ingin imputasi meniru variabilitas data teramati.
  • Pada imputasi berbasis model, nilai prediktor yang sama memberi nilai imputasi yang sama.
  • Solusi: mengambil sampel dari sebaran kondisional.
Menangani Data Hilang dengan Imputasi di R

Apa itu prediksi

Sebagian besar model statistik mengestimasi sebaran kondisional dari variabel respons:

$p(y|X)$

Untuk satu prediksi, sebaran ini diringkas:

  • Regresi linear: nilai harapan dari sebaran kondisional.
  • Regresi logistik: kelas dengan probabilitas tertinggi.

Sebaliknya, kita bisa mengambil sampel dari sebaran ini untuk menambah variabilitas.

Menangani Data Hilang dengan Imputasi di R

Mengambil dari sebaran kondisional

Plot fungsi kerapatan normal; mean 25 disorot.

Menangani Data Hilang dengan Imputasi di R

Mengambil dari sebaran kondisional

Tabel dengan 4 kolom: probabilitas prediksi dari regresi logistik (0,7 untuk semua baris), boolean apakah > 0,5 (TRUE untuk semua), nilai imputasi berbasis ambang (1 untuk semua), dan nilai imputasi hasil sampel dari sebaran kondisional (kebanyakan 1, beberapa 0).

Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Tugas: imputasi PhysActive dari data nhanes dengan regresi logistik.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Tugas: imputasi PhysActive dari data nhanes dengan regresi logistik.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Tugas: imputasi PhysActive dari data nhanes dengan regresi logistik.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Tugas: imputasi PhysActive dari data nhanes dengan regresi logistik.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Tugas: imputasi PhysActive dari data nhanes dengan regresi logistik.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Menangani Data Hilang dengan Imputasi di R

Imputasi regresi logistik

Variabilitas data imputasi:

table(preds[missing_physactive])
 1 
26

Variabilitas data PhysActive teramati:

table(nhanes$PhysActive)
  0   1 
181 610
Menangani Data Hilang dengan Imputasi di R

Mengambil dari probabilitas kelas

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Menangani Data Hilang dengan Imputasi di R

Mengambil dari probabilitas kelas

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")

nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Menangani Data Hilang dengan Imputasi di R

Mengambil dari probabilitas kelas

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- rbinom(length(preds), size = 1, prob = preds)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
Menangani Data Hilang dengan Imputasi di R

Mengambil dari probabilitas kelas

Variabilitas data imputasi:

table(preds[missing_physactive])
0  1 
5 21

Variabilitas data PhysActive teramati:

table(nhanes$PhysActive)
  0   1 
181 610
Menangani Data Hilang dengan Imputasi di R

Ayo berlatih mereplikasi variabilitas data!

Menangani Data Hilang dengan Imputasi di R

Preparing Video For Download...