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
Instruções do exercício
- Crie uma máscara booleana indicando onde
df[imp_var]está ausente e atribua amissing_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
familycorreto para garantir que uma regressão logística seja ajustada (passe sem aspas); atribua o modelo alogreg_model. - Prediga a resposta com o modelo e atribua a
preds; lembre-se de definir otypede previsão apropriado. - Use
predsjunto commissing_imp_varpara 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)
}