Začněte nyníZačněte zdarma

Imputace logistickou regresí

Oblíbenou volbou pro imputaci binárních proměnných je logistická regrese. Bohužel neexistuje funkce podobná impute_lm(), která by to udělala za tebe. Proto si takovou funkci napíšeš sám!

Funkci budeme nazývat impute_logreg(). Jejím prvním argumentem bude datový rámec df, jehož chybějící hodnoty byly inicializovány a který obsahuje chybějící hodnoty pouze ve sloupci, který chceme imputovat. Druhým argumentem bude formula pro model logistické regrese.

Funkce provede následující kroky:

  • Zaznamená pozice chybějících hodnot.
  • Sestaví model.
  • Vytvoří předpovědi.
  • Nahradí chybějící hodnoty předpověďmi.

Nedělej si starosti s řádkem, který vytváří imp_var – jde jen o způsob, jak z formule extrahovat název sloupce k imputaci. Pojďme na funkcionální programování!

Toto cvičení je součástí kurzu

Práce s chybějícími daty pomocí imputace v R

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř booleovskou masku pro místa, kde df[imp_var] obsahuje chybějící hodnoty, a přiřaď ji do missing_imp_var.
  • Pomocí formule a dat, které funkce dostane jako argumenty, natrénuj model logistické regrese; nezapomeň nastavit správnou hodnotu family, aby se natrénovala logistická regrese (předej ji bez uvozovek); model přiřaď do logreg_model.
  • Předpověz odpověď pomocí modelu a výsledek přiřaď do preds; nezapomeň nastavit odpovídající type předpovědi.
  • Pomocí preds a missing_imp_var imputuj chybějící hodnoty.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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)
}
Upravit a spustit kód