Mengambil sampel dari distribusi kondisional
Memanggil predict() pada sebuah model akan selalu mengembalikan nilai yang sama untuk nilai prediktor yang sama. Ini menghasilkan keragaman yang kecil pada data imputasi. Untuk meningkatkannya, agar imputasi mereplikasi keragaman dari data asli, kita dapat mengambil sampel dari distribusi kondisional. Artinya, alih-alih selalu memprediksi 1 setiap kali model menghasilkan probabilitas lebih besar dari 0,5, kita dapat mengambil prediksi dari distribusi binomial yang ditentukan oleh probabilitas yang dikembalikan model.
Anda akan bekerja pada kode yang telah Anda tulis di latihan sebelumnya. Baris berikut telah dihapus:
preds <- ifelse(preds >= 0.5, 1, 0)
Tugas Anda adalah menggantinya dengan pengambilan sampel dari distribusi binomial. Cukup satu baris kode!
Latihan ini adalah bagian dari kursus
Menangani Data Hilang dengan Imputasi di R
Petunjuk latihan
- Timpa
predsdengan mengambil sampel dari distribusi binomial. - Berikan panjang
predssebagai argumen pertama. - Atur size ke 1.
- Atur
probke probabilitas yang dikembalikan oleh model.
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 <- is.na(df[imp_var])
# Fit logistic regression mode
logreg_model <- glm(formula, data = df, family = binomial)
# Predict the response
preds <- predict(logreg_model, type = "response")
# Sample the predictions from binomial distribution
preds <- ___(___, size = ___, prob = ___)
# Impute missing values with predictions
df[missing_imp_var, imp_var] <- preds[missing_imp_var]
return(df)
}