10.7 Imputación por el vecino más cercano con regresión

A continuación, se presentan los pasos que se deben tener en cuenta para realizar la imputación utilizando el vecino más cercano con regresión:

  1. Ajustar un modelo de regresión entre la variable de interés y las covariables auxiliares.
  2. Realizar la predicción de los valores observados y no observados.
  3. Comparar las predicciones obtenidas para los valores observados y no observados.
  4. Para la \(i\)-ésima observación, identificar el donante con la menor distancia entre los valores predichos al receptor.
  5. Reemplazar el valor faltante con la información observada proveniente del donante.

A continuación, se ejemplifica la técnica imputando los ingresos en los hogares realizando un modelo en el cual se toman como covariables el sexo, la zona y los gastos:

encuesta$Income_imp <- encuesta$Income_missing
encuesta_obs <- filter(encuesta,!is.na(Income_missing))
encuesta_no_obs <- filter(encuesta, is.na(Income_missing))

mod <- lm(Income ~ Zone + Sex + Expenditure, data = encuesta_obs)

Luego, se predicen los valores observados y no observados con el modelo ajustado anteriormente y se imputa el valor faltante calculando las diferencias entre las predicciones de los datos observados y no observados:

pred_Obs <- predict(mod, encuesta_obs)
pred_no_Obs <- predict(mod, encuesta_no_obs)

for (ii in 1:nrow(encuesta_no_obs)) {
  don_ii <- which.min(abs(pred_no_Obs[ii] - pred_Obs))
  encuesta_no_obs$Income_imp[[ii]] <-
    encuesta_obs$Income_missing[[don_ii]]
}

encuesta <- bind_rows(encuesta_obs, encuesta_no_obs)

Por último, se calcula la media de los ingresos y su desviación estándar para los datos completos e imputado como se ha realizado anteriormente:

encuesta %>%
  summarise(
    Income_ = mean(Income),
    Income_sd = sd(Income),
    Income_imp_ = mean(Income_imp),
    Income_imp_sd = sd(Income_imp)
  )
Income_ Income_sd Income_imp_ Income_imp_sd
604.2494 513.1078 607.6411 515.432

De la anterior imputación se puede observar que, la diferencia entre los datos reales y los imputados es cercano a 4 unidades monetarias. A continuación, se presentan la gráfica distribucional del ingreso real y del ingreso imputado por el método del vecino más cercano mediante un modelo. Se puede observar que, las dos distribuciones con muy similares.

dat_plot9 <- tidyr::gather(
  encuesta %>%
    dplyr::select(Zone, Sex, Income, Income_imp),
  key = "Caso",
  value = "Income2",-Zone,-Sex
)

p1 <- ggplot(dat_plot9, aes(x = Income2, fill = Caso)) +
  geom_density(alpha = 0.2) + theme_bw() +
  theme(legend.position = "bottom") +
  geom_vline(xintercept = mean(encuesta$Income),
             col = "red") +
  geom_vline(xintercept = mean(encuesta$Income_imp),
             col = "blue")

p1