11.1 Imputación por la media no condicional.

La imputación por la media no condicional consiste en reemplazar los valores faltantes con la media aritmética de la variable completa, sin tener en cuenta ninguna otra variable. Es decir, la media se calcula a partir de todos los valores disponibles en la variable en cuestión, independientemente de las características de los demás datos.

Este método es bastante simple y rápido, y puede ser útil en ciertas situaciones, especialmente cuando la variable en cuestión no tiene una distribución muy sesgada o cuando los valores faltantes son relativamente pocos en comparación con el tamaño de la muestra. Sin embargo, el método de imputación por la media no condicional también tiene limitaciones y puede no ser adecuado en todas las situaciones, especialmente cuando hay sesgos o patrones en los datos faltantes o cuando los datos están altamente correlacionados. Adicionalmente, este método no afecta el promedio, pero si afecta la variabilidad, el sesgo y los percentiles. A continuación, se ejemplifica con los datos de ejemplo este método:

promedio <- mean(encuesta$Income_missin, na.rm = TRUE)
encuesta %<>% dplyr::mutate(
    Income_imp = ifelse(is.na(Income_missin), 
                           promedio, Income_missin))
sum(is.na(encuesta$Income_imp))
## [1] 0

En el código anterior la imputación se realiza utilizando la media aritmética de los valores no faltantes en Income_missin y se almacena en una nueva variable llamada Income_imp. A continuación, se describen cada una de las líneas del código:

  • promedio <- mean(encuesta$Income_missin, na.rm = TRUE): esta línea calcula la media aritmética de los valores no faltantes en la columna Income_missin de la base de datos encuesta y la almacena en una variable llamada promedio. El argumento na.rm = TRUE se utiliza para excluir los valores faltantes en el cálculo de la media.

  • encuesta %<>%: este operador de magrittr (%<>%) se utiliza para asignar el resultado de la siguiente operación al objeto encuesta. Es equivalente a utilizar encuesta <- encuesta %>%.

  • mutate: esta función de dplyr se utiliza para crear una nueva columna en la base de datos encuesta con la imputación de los valores faltantes.

  • Income_imp = ifelse(is.na(Income_missin), promedio, Income_missin): esta línea utiliza la función ifelse para asignar el valor imputado a la columna Income_imp en la base de datos encuesta. Si un valor en la columna Income_missin es NA (es decir, faltante), se reemplaza con el valor de promedio. Si no es NA, se mantiene el valor original.

  • sum(is.na(encuesta$Income_imp)): esta línea cuenta el número de valores faltantes en la nueva columna Income_imp de la base de datos encuesta utilizando la función sum y is.na.

## Ordenando la base para gráfica 
dat_plot4 <- tidyr::gather(
  encuesta %>% dplyr::select(Zone,Sex,Income, Income_imp),
  key = "Caso", value = "Income2", -Zone,-Sex)

p1 <- ggplot(dat_plot4, 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

En la gráfica anterior se puede observar que, a pesar de ser imputada la variable ingresos utilizando la media incondicional, la distribución real y la imputada cambia de manera significativa lo que demuestra que este método, para este conjunto de datos no es el más apropiado dado lo sesgado de la distribución de la variable ingresos.

Un caso similar al anterior ocurre si graficamos la variable ingreso por zona y sexo. A continuación, se muestra de manera gráfica los boxplot para revisar la distribución de los datos, arrojando nuevamente las conclusiones obtenidas con el gráfico anterior:

p1 <- ggplot(dat_plot4, aes(x= Caso, y = Income2)) + 
   geom_hline(yintercept = mean(encuesta$Income),
              col = "red") +  geom_boxplot() +
  facet_grid(Zone~Sex) + theme_bw()

p1