Lojistik regresyon ile atama
İkili (binary) değişkenleri atamak için popüler bir seçenek lojistik regresyondur. Ne yazık ki bunu yapan impute_lm() benzeri bir fonksiyon yok. Bu yüzden böyle bir fonksiyonu kendin yazacaksın!
Fonksiyonun adı impute_logreg() olsun. İlk argümanı, eksik değerleri başlatılmış ve yalnızca atanacak sütunda eksik değerler bulunan bir veri çerçevesi df olacak. İkinci argüman ise lojistik regresyon modeli için bir formula olacak.
Fonksiyon şunları yapacak:
- Eksik değerlerin konumlarını sakla.
- Modeli kur.
- Tahminleri yap.
- Eksik değerleri tahminlerle değiştir.
imp_var oluşturan satır hakkında endişelenme - bu sadece formülden atanacak sütunun adını çıkarmanın bir yolu. Hadi biraz fonksiyonel programlama yapalım!
Bu egzersiz
R'de Atamaya Dayalı Eksik Veri Doldurma
kursunun bir parçasıdırEgzersiz talimatları
df[imp_var]içinde eksik olan yerler için bir boolean maske oluştur vemissing_imp_var'a ata.- Fonksiyonun argüman olarak alacağı formül ve veriyi kullanarak bir lojistik regresyon modeli kur; lojistik regresyonun kurulmasını sağlamak için doğru
familydeğerini ayarlamayı unutma (tırnaksız geçir); modelilogreg_model'e ata. - Modelle yanıtı tahmin et ve
preds'e ata; uygun tahmintypedeğerini ayarlamayı unutma. - Eksik değerleri atamak için
preds'imissing_imp_varile birlikte kullan.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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)
}