¿Qué hacer cuando tenemos valores faltantes?

Una situación a la que se enfrenta frecuentemente cualquier científico de datos es el tratamiento de los valores perdidos. Los valores faltantes son aquellos que para una variable determinada no constan en algunas filas o patrones. El motivo por el cual se produce esto puede ir desde fallos en los instrumentos de medida hasta sujetos que no asisten a la entrevista o no contestan a determinadas preguntas.

Los 3 motivos principales por los que se suelen tratar los valores perdidos son: pueden introducir un sesgo considerable (una diferencia notable entre los datos observados y los no observados), hacen el análisis y el manejo de los datos más complicado y la pérdida de información que éstos producen.

No es tan importante la cantidad de valores faltantes como el patrón que éstos siguen. Puesto que si su distribución no fuese aleatoria a lo largo de todo el conjunto de datos la representatividad de la muestra sobre la que estaríamos trabajando se vería seriamente mermada. Por lo tanto, en función de la aleatoriedad de los valores perdidos se suele establecer la siguiente clasificación:

  • Missing At Random (MAR): ocurre cuando la ausencia de los datos podría depender de los valores observados.
  • Missing Not At Random (MNAR): si el ser un dato faltante depende del valor de los datos no observados.
  • Missing Completely At Random (MCAR): si el evento de que cierto valor sea faltante es independiente de las variables observadas y no observadas, y ocurre de forma completamente aleatoria. Se trata de un caso especial de MAR.

La principal ventaja de que los valores perdidos sean de tipo MCAR es que los datos no están sesgados. Ocurre de igual forma con los de tipo MAR.

Hay que tener especial cuidado con los valores perdidos de tipo MNAR, ya que los datos observados están sesgados. Destacar que este tipo de valores faltantes no se puede ignorar y debe ser tratado junto al experto.

 

Técnicas para el tratamiento de valores faltantes

Existen multitud de procedimientos para aplicar cuando tenemos valores perdidos. Aunque básicamente existen dos aproximaciones posibles:

  • Eliminar muestras o variables que tienen datos faltantes.
  • Imputar los valores perdidos, es decir, sustituirlos por estimaciones.

Para explicar los procedimientos, a modo de ejemplo, partiremos del siguiente conjunto de datos que muestra medidas sobre la altura, peso, sexo y edad de distintos individuos:

Nº Muestra Altura (cm) Peso (kg) Sexo Edad
1 185 90 V 29
2 60 M 34
3 174 70 V 23
4 162 55 M 21
5 183 85 50
6 179 84 V 64

En él se puede observar como disponemos de 3 variables numéricas: altura, peso y edad, y de una variable categórica nominal: sexo. Además, tenemos 2 valores faltantes: la variable altura para la muestra nº 2 y la variable sexo para la muestra nº 5.

El código en R para crear un dataframe con estos datos sería:

a <- c(185, NA, 174, 162, 183, 179)
p <- c(90, 60, 70, 55, 85, 84)
s <- c(0, 1, 0, 1, NA, 0)
e <- c(29, 34, 23, 21, 50, 64)
df <- as.data.frame(list(a, p, s, e))
colnames(df) <- c("Altura", "Peso", "Sexo", "Edad")

Eliminación

Eliminación de muestras

Este procedimiento consiste en eliminar aquellas muestras que no están completas, es decir, descartar aquellas que tienen valores perdidos. Este método presenta dos incovenientes principalmente:

  • Si la recogida de datos no se ha realizado de forma aleatoria introduce sesgo.
  • En el caso de que haya mucho patrones con datos faltantes, podría reducir considerablemente la cantidad de filas disponibles.

Si aplicamos este método en el ejemplo planteado, descartaríamos las muestras número 2 y 5, quedando el conjunto de datos de la siguiente manera:

Nº Muestra Altura (cm) Peso (kg) Sexo Edad
1 185 90 V 29
3 174 70 V 23
4 162 55 M 21
6 179 84 V 64

En R se procedería de la siguiente manera:

df <- df[complete.cases(df), ]

Eliminación de variables

Tal y como su propio nombre indica, el procedimiento consiste en solo escoger aquellas variables que no tienen valores faltantes. Hay que tener especial cuidado al aplicar esta técnica ya que, dependiendo del objetivo del estudio, las variables «descartadas» podrían contener información de vital importancia.

En nuestro ejemplo, se corresponde con eliminar las variables Altura y Sexo:

Nº Muestra Peso (kg) Edad
1 90 29
2 60 34
3 70 23
4 55 21
5 85 50
6 84 64

Imputación

Las técnicas de imputación son procedimientos que estiman el valor del dato faltante. Por lo tanto, al tratarse de una estimación no se debe abusar de ellas.

Sustitución por la media

El método de sustitución por la media, como es de esperar, solo se puede aplicar sobre variables que sean de tipo numérico. Existen otras alternativas como sustituir por la mediana. Utilizando nuestro ejemplo, la media de la variable «Altura» es 176.6 entonces imputaremos este valor en la muestra número 2:

Nº Muestra Altura (cm) Peso (kg) Sexo Edad
1 185 90 V 29
2 176.6 60 M 34
3 174 70 V 23
4 162 55 M 21
5 183 85 50
6 179 84 V 64

Para calcular la media de la variable «Altura» e imputarla en los valores faltantes en R se procedería de la siguiente forma:

df[is.na(df$Altura), "Altura"] <- mean(df$Altura, na.rm=T)

Sustitución por la moda

El procedimiento de sustitución por la moda es especialmente útil cuando estamos ante variables de tipo categórico. En nuestro ejemplo, tenemos 3 varones frente a 2 mujeres. Entonces la moda serán los varones y será el valor imputado en la variable «Sexo»:

Nº Muestra Altura (cm) Peso (kg) Sexo Edad
1 185 90 V 29
2 60 M 34
3 174 70 V 23
4 162 55 M 21
5 183 85 V 50
6 179 84 V 64

Una posible forma para imputar la variable «Sexo» con la moda en R sería:

getmode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

df[is.na(df$Sexo), "Sexo"] <- getmode(df$Sexo)

K-Vecinos más próximos

El algoritmo de los K-Vecinos más próximos para la imputación de datos se basa en buscar las K muestras más próximas al patrón que queremos imputar. Una vez encontradas las muestras más cercanas se podría imputar, por ejemplo, la media o la moda del valor de los vecinos.

Para entender mejor esta técnica, vamos a aplicarla a nuestro ejemplo. Para ello, normalizamos los datos para que tengan media 0 y desviación típica 1. Además, codificamos la variable Sexo de forma que los Varones tendrán el valor 0 y las Mujeres tendrán el valor 1:

Nº Muestra Altura Peso Sexo Edad
1 0.9148829 1.1041049 -0.7302967 -0.4643598
2 -0.9660918 1.0954451 -0.1679599
3 -0.2831780 -0.2760262 -0.7302967 -0.8200396
4 -1.5901536 -1.3111246 1.0954451 -0.9385995
5 0.6970536 0.7590721 0.7805196
6 0.2613951 0.6900656 -0.7302967 1.6104392

Para simplificar la explicación vamos a establecer que K = 1, es decir, imputaremos el valor de la muestra más próxima. Como función de distancia vamos a utilizar la distancia euclídea.

La distancia de todas las muestras con 2 es:
d(2, 1) = 3.2055994
d(2, 3) = 2.3761963
d(2, 4) = 0.9749756
d(2, 6) = 3.5097757

Al ser la muestra 4 la más cercana, imputamos con el valor de la altura de la misma, es decir, 162 cm.

Distancia de la muestra 5 con todas:
d(5, 1) = 1.5127114
d(5, 3) = 2.4749606
d(5, 4) = 4.0779736
d(5, 6) = 1.0852507

La muestra más cercana a 5 es 6, por lo tanto imputamos como el sexo de 6: varón.

Tras realizar las dos imputaciones mostradas anteriormente, el resultado obtenido es:

Nº Muestra Altura (cm) Peso (kg) Sexo Edad
1 185 90 V 29
2 162 60 M 34
3 174 70 V 23
4 162 55 M 21
5 183 85 V 50
6 179 84 V 64

En R existe una librería llamada DMwR que ya implementa el procedmimento de los K-Vecinos más próximos. Su uso es el siguiente:

library(DMwR)
knnImputation(df,k=1)

Conclusiones

El primer paso, antes de aplicar cualquier tipo de procedimiento sobre los datos faltantes, es el de analizar su naturaleza. Esto es de suma importancia, ya que de no ser de origen aleatorio tendrían sesgo inadmisible por lo que los valores perdidos no podrían ser ignorados.

Una vez tenemos claro su origen, se debe decidir si eliminar completamente aquellos patrones con datos perdidos o aplicar técnicas de imputación de datos. Siempre y cuando se tenga la suficiente cantidad de muestras, se recomienda eliminarlos ya que con los procedimientos de imputación estamos realizando estimaciones de cual sería el valor del dato faltante. Existen multitud de técnicas para la imputación de datos perdidos y dependiendo del conjunto de datos sobre el que se esté trabajando será más adecuado aplicar unas u otras.

Bibliografía

  • SCHAFER, Joseph L.; GRAHAM, John W. Missing data: our view of the state of the art. Psychological methods, 2002, vol. 7, no 2, p. 147.
  • SEGURA, E. O.; TORRES, Verena. Tratamiento de valores perdidos y atípicos en la aplicación del Modelo Estadístico de Medición de Impacto en un estudio de 90 fincas lecheras en la provincia de Pastaza, Ecuador. 2014.
  • BARBARA, G. Tabachnick; LINDA, S. FIDELL. Using multivariate statistics. California State University, Nortoridge, 1996.
  • TORGO, Luis; TORGO, Luís. Data mining with R: learning with case studies. Boca Raton, FL:: Chapman & Hall/CRC, 2011.
  • GRAHAM, John W. Missing data analysis: Making it work in the real world. Annual review of psychology, 2009, vol. 60, p. 549-576.

Por: Federico Zomeño BreitensteinLinkedIn

Deja un comentario