La imputación es el proceso conversión de los datos faltantes en datos simulados, de manera de intentar no interferir o minimizar de la mejor forma la incidencia en el resultado esperado.

El proceso de imputación genera uno o más versiones de los datos imputados (“simulados”) basado en la cantidad de iteraciones especificadas. Cada iteración genera una versión de los datos que deben ser analizadas y estimadas según el interés sobre los datos. Finalmente, la totalidad de estimaciones iteradas son agrupados en un solo conjunto que permita la validación de ese dato imputado en relación al conjunto de datos totales.

kNN imputation

El modelo de imputación kNN parte de la librería vim (Kowarik and Templ 2016) es la del k-esimo vecino más cercano. Establece el valor faltante sobre la media de todos los valores situados a k-distancias de la celda que contiene el faltante. Utiliza una distancia euclideana para determinar el valor faltante.

Esto funciona para valores numéricos exclusivamente. Por tanto las variables de tipo texto deben ser modificadas a un valor binario. Se utiliza para variables numéricas, categóricas y semicontinuas.

Cuando se utiliza KNN, hay que tener en cuenta muchos parámetros. A continuación algunos:

  • El número de vecinos a buscar. Tomar un “k” bajo aumentará la influencia del ruido y los resultados van a ser menos generalizables. Por otro lado, tomar un k alto tenderá a difuminar los efectos locales que son exactamente lo que estamos buscando. También se recomienda tomar una k impar para las clases binarias para evitar los empates.
  • El método de agregación a utilizar. Aquí se establece la media aritmética, la mediana y la moda para las variables numéricas y la moda para las categóricas.

Distancia euclideana

kNN se basa en la distancia euclideana, que es un número positivo que establece la separación entre dos puntos en un espacio que cumple la geometría de Euclides. Esto es que esta distancia es el largo de un vector AB que corresponde a una recta que pasa por los puntos A y B.

Los espacios euclídeos son de 1 o más dimensiones y poseen planos y rectas.

\[d(A,B) = \sqrt{(X*B - X*A)^2}\]

El uso de las medidas al cuadrado garantiza qu siempre sean valores positivos y que la distancia sea igual entre A y B que entre B y A.

# carga de library VIM para obtener función kNN
library(VIM)

Estableciendo inicialmente donde se encuentran las variables con valores faltantes usando summary.

summary(airquality)

Lo que muestra que Ozone tiene 37 valores ausentes y Solar.R posee 7 valores ausentes. con kNN estableceremos nuevos valores imputados para esas variables.

newdata <-  kNN(airquality, variable = c("Ozone", "Solar.R"), k = 6)
summary(newdata)
##      Ozone           Solar.R           Wind             Temp      
##  Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00  
##  1st Qu.: 19.00   1st Qu.:115.0   1st Qu.: 7.400   1st Qu.:72.00  
##  Median : 32.00   Median :203.0   Median : 9.700   Median :79.00  
##  Mean   : 41.12   Mean   :185.3   Mean   : 9.958   Mean   :77.88  
##  3rd Qu.: 59.00   3rd Qu.:259.0   3rd Qu.:11.500   3rd Qu.:85.00  
##  Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00  
##      Month            Day       Ozone_imp       Solar.R_imp    
##  Min.   :5.000   Min.   : 1.0   Mode :logical   Mode :logical  
##  1st Qu.:6.000   1st Qu.: 8.0   FALSE:116       FALSE:146      
##  Median :7.000   Median :16.0   TRUE :37        TRUE :7        
##  Mean   :6.993   Mean   :15.8                                  
##  3rd Qu.:8.000   3rd Qu.:23.0                                  
##  Max.   :9.000   Max.   :31.0

Ahora no se ven valores NA en las columnas Ozone y Solar.R .

MICE

Mice (Multivariate Imputation by Chained Equations) (van Buuren and Groothuis-Oudshoorn 2011) es una librería que ofrece una serie de funciones orientadas a la visualización e imputación de datos perdidos. Crea múltiples imputaciones para datos multivariados, donde cada variable puede ser imputada con un modelo estadístico particular.

library("mice")
marginplot(airquality[c("Ozone","Solar.R")])

Los puntos en azul indican valores existentes y en rojo los registros con valores ausentes. La interpretación de este gráfico es como sigue:

  • El eje x presenta el valor “37” como el número de registros NA en Ozone.
  • El valor “7” en eje Y es el número de registros con valor NA de la columna Solar.R
  • El “2” es la cantidad de registros con valores Na tanto en Ozone como Solar.R

Si se asume que la pérdida de datos es completamente aleatoria (MCAR), los boxplot debiesen ser similares en su distribución en los valores ausente como en los observados.

Imputación de media

Una medida rápida y eficiente es el reemplazo de los valores perdidos por la media de estos. Cuando se trate de datos categóricos se utilizará la moda. Este método va variar la distribución de los datos ya que altera los valores previos.

imputacion <- mice(airquality[c("Ozone","Solar.R")], m = 3, maxit = 10, print = FALSE)
summary(imputacion)
## Class: mids
## Number of multiple imputations:  3 
## Imputation methods:
##   Ozone Solar.R 
##   "pmm"   "pmm" 
## PredictorMatrix:
##         Ozone Solar.R
## Ozone       0       1
## Solar.R     1       0

La función utiliza por defecto “pmm” (Predictive Mean Matching) y en variables categóricas “polyreg” (Multinomial Logistic Regression) para el cálculo de los valores imputados.

Para más información vea la documentación de “mice.”

# primera matriz completada con los datos imputados
complete(imputacion) # opcional m = 1 ó n
# muestra datos observados e imputados en cada iteración (3 en el ejemplo)
stripplot(imputacion, pch = 20 )

Evaluación de imputación

Es bastante simple aplicar algunas de las metodologías disponibles de imputación, sin embargo evaluar cuál es la más eficaz en cada caso es ya más complejo.

El proceso completo de imputación implica realizar la imputación, estimar los parámetros y el agrupamiento (“pooling”) de los resultados. Sin embargo el proceso de estimación de los parámetros puede o debería implicar una serie de etapas, a saber:

  • Búsqueda del modelo de imputación adecuado.
  • Optimización.
  • Validación.
  • Predicción.
  • Evaluación de la calidad del ajuste del modelo.

Pasos principales en el proceso de imputación múltiple. (Buuren 2018)

Referencias

Buuren, Stef van. 2018. Flexible Imputation of Missing Data. 2nd ed. Chapman & Hall/CRC. https://stefvanbuuren.name/fimd/.
Efromovich, Sam. 2018. Missing and Modified Data in Nonparametric Estimation. 1st ed. Boca Raton, Florida: CRC Press.
Gelman, Andrew. 2006. Data Analysis Using Regression and Multilevel/Hierarchical Models. 1st ed. Cambridge University Press.
Kowarik, Alexander, and Matthias Templ. 2016. “Imputation with the R Package VIM.” Journal of Statistical Software 74 (7): 1–16. https://doi.org/10.18637/jss.v074.i07.
Molenberghs, Geert. 2015. Handbook of Missing Data Methodology. 1st ed. Chapman & Hall/CRC Press.
Raghunathan, Trivellore. 2016. Missing Data Analysis in Practice. 1st ed. Chapman & Hall/CRC.
Schafer, Joseph L., and John W. Graham. 2002. “Missing Data: Our View of the State of the Art.” Psychological Methods 7 (2): 147–77. https://doi.org/10.1037/1082-989x.7.2.147.
van Buuren, Stef, and Karin Groothuis-Oudshoorn. 2011. mice: Multivariate Imputation by Chained Equations in r.” Journal of Statistical Software 45 (3): 1–67. https://www.jstatsoft.org/v45/i03/.
Wiley, Matt, and Joshua F. Wiley. 2019. Advanced r Statistical Programming and Data Models. 1st ed. APress.