ComeçarComece de graça

Imputação com regressão logística

Uma escolha popular para imputar variáveis binárias é a regressão logística. Infelizmente, não existe uma função semelhante à impute_lm() que faça isso. Por isso, você vai escrever essa função!

Vamos chamar a função de impute_logreg(). Seu primeiro argumento será um data frame df, cujos valores ausentes já foram inicializados e que só contenha valores ausentes na coluna a ser imputada. O segundo argumento será uma formula para o modelo de regressão logística.

A função fará o seguinte:

  • Guardar as posições dos valores ausentes.
  • Construir o modelo.
  • Fazer previsões.
  • Substituir os valores ausentes pelas previsões.

Não se preocupe com a linha que cria imp_var — é apenas uma forma de extrair o nome da coluna a imputar a partir da fórmula. Vamos fazer um pouco de programação funcional!

Este exercício faz parte do curso

Tratamento de Dados Ausentes com Imputações em R

Ver curso

Instruções do exercício

  • Crie uma máscara booleana indicando onde df[imp_var] está ausente e atribua a missing_imp_var.
  • Ajuste um modelo de regressão logística usando a fórmula e os dados que a função receberá como argumentos, lembrando de definir o family correto para garantir que uma regressão logística seja ajustada (passe sem aspas); atribua o modelo a logreg_model.
  • Prediga a resposta com o modelo e atribua a preds; lembre-se de definir o type de previsão apropriado.
  • Use preds junto com missing_imp_var para imputar os valores ausentes.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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)
}
Editar e executar o código