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:
- Ajustar un modelo de regresión entre la variable de interés y las covariables auxiliares.
- Realizar la predicción de los valores observados y no observados.
- Comparar las predicciones obtenidas para los valores observados y no observados.
- Para la \(i\)-ésima observación, identificar el donante con la menor distancia entre los valores predichos al receptor.
- 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