Tratamiento de datos perdidos (Imputación Simple)
Tratar de forma adecuada los datos perdidos es muy importante para los análisis posteriores. Hay dos cosas que se pueden hacer:
Borrarlos
Imputarlos
La decisión muchas veces vendrá dada por el número de datos perdidos, los análisis posteriores que se quieran realizar, si queremos hacer análisis univariante o multivariante, etc...
Por lo general, cuando tenemos un número de datos perdidos muy elevado, no será buena idea conservar la variable e intentar imputarla. Un umbral máximo seguro es el 5% del total para conjuntos de datos grandes. Si los datos faltantes para una variable u observación específica son más del 5%, probablemente deberías excluir esa variable u observación. Pero esta dicisión va a depender de muchas cosas.
Borrar filas con datos perdidos
Para filtrar filas con datos perdidos, podemos usar la función complete.cases()
Pero cuidado como se filtran filas
El dataset completo tiene 5888 observaciones
Y el dataset si quitamos todas las filas con algún valor missing se reduce a 1382 observaciones
Si queremos ajustar una recta de regresión para predecir los días desde la aparición de síntomas (days_onset_hosp
) con la temperatura (temp
) en el ejemplo de la epidemia de Ebola (linelist
) usando los datos filtrados:
Usamos regresión de Poisson por como se distribuye la variable days_onset_hosp
Obtenemos un p-valor no significativo (asumiendo todos los supuestos para aplicar una regresión de Poisson)
Vemos como hemos borrado muchísimos datos y este modelo no nos sirve para nada, pero si solo borramos las filas correspondientes a esas dos variables:
Ya podemos intuir que hay un ajuste un poco mejor, con lo que cuidado borrar todos los datos perdidos cuando solo vas a trabajar con dos variables.
Imputación de datos perdidos
Aunque siempre puedes analizar un conjunto de datos después de eliminar todos los valores perdidos, esto puede causar varios problemas. Aquí tienes dos ejemplos:
Al eliminar todas las observaciones con valores perdidos o variables con una gran cantidad de datos perdidos, puedes reducir tu poder o capacidad para realizar algunos tipos de análisis, como acabamos de ver.
Dependiendo de por qué faltan tus datos, el análisis solo de datos no faltantes podría conducir a resultados sesgados o engañosos. Por ejemplo, como vimos anteriormente, nos faltan datos de algunos pacientes sobre si han tenido síntomas importantes como fiebre o tos. Pero, como posibilidad, tal vez esa información no se registró para personas que obviamente no estaban muy enfermas. En ese caso, si simplemente eliminamos esas observaciones, estaríamos excluyendo a algunas de las personas más saludables en nuestro conjunto de datos y eso podría sesgar realmente cualquier resultado.
Es importante pensar en por qué tus datos podrían faltar, además de ver cuánto falta. Hacer esto puede ayudarte a decidir qué tan importante podría ser imputar datos faltantes y también qué método de imputación de datos faltantes podría ser la mejor en tu situación.
Tipos de datos perdidos
Aquí hay tres tipos generales de datos perdidos:
Missing Completely at Random (MCAR): Son datos perdidos completamente aleatorios, es decir, la ausencia de valores en un conjunto de datos es independiente tanto de otras variables observadas como de las no observadas.
Ejemplo: la ausencia de la falta en la fecha que se produjo la infección no está relacionada con ninguna característica de los pacientes, la región, etc....sino que simplemente es un dato que no se sabe.
Missing at Random (MAR): Son datos perdidos aleatorios, es decir, la probabilidad de que un valor falte puede depender de otras variables observadas, pero no de las no observadas. El nombre puede confundir porque no son realmente aleatorios.
Ejemplo: la información sobre la fiebre (si,no) falta en aquellos individuos que la temperatura (fiebre) está por debajo de 37, se puede pensar que fueron individuos más sanos. En este caso, la ausencia de la información sobre la fiebre no es completamente al azar, ya que está relacionada con la falta de fiebre.
A pesar de que la ausencia no es completamente aleatoria, los datos MAR son más manejables que los datos "Missing Not at Random" (MNAR), ya que, en teoría, se puede modelar y abordar la falta de manera sistemática si se conocen las variables relacionadas con la ausencia. Este es un tipo común de datos faltantes.
Missing not at Random (MNAR): Datos perdidos de forma no aleatoria, es decir, la probabilidad de que falte un valor depende de la variable no observada. Esto puede introducir sesgos en los datos y es más complicado de manejar. En otras palabras, la falta de un valor está relacionada con la información que falta y no puede ser modelada únicamente en función de las variables observadas.
Ejemplo: la falta de información de un hospital es debida al nivel socioeconómico de la región o a la falta de acceso sanitario, etc... por lo que no podríamos tener acceso a esa información ni parece muy fácil de predecir con otras variables.
Tratar con datos MNAR (Missing not at Random) puede ser más complicado que tratar con datos MCAR (Missing Completely at Random) o MAR (Missing at Random) porque la falta de información está relacionada con la información que falta.
Tipos de missing en el ejemplo del Ébola:
MCAR
Los datos faltantes de
temp
youtcome
no parecen estar relacionados con nada
MAR
Los datos faltantes de
fever
están relacionados con los que no tienen fiebre en la variabletemp
Los datos faltantes de
age
ygender
están relacionados con fechas específicas
MNAR:
Los datos faltantes de
cough, chills, aches, vomit
están relacionado con temperaturas bajas, ya que son los mismos individuos, pero hay una diferencia sustancial y es que no todos los que tienen fever = No, corresponden con síntomas = No, por tanto hay algo no observado de los datos faltantes de los síntomas que no es solo tener baja temperatura.
Imputación simple:
Imputación usando la media (v.continuas) o moda (v.categóricas)
Esta es la forma más sencilla de imputación cuando puedes asumir que los datos son MCAR. Si las variables son continuas puedes simplemente establecer los valores perdidos usando la media de esa variable. Por ejemplo, asumamos que las mediciones de temperatura (temp
) faltantes en nuestro conjunto de datos son MCAR y por tanto los podemos imputar con la media.
¡Cuidado! en muchas situaciones reemplazar los datos con la media puede generar sesgos si el porcentaje de missing es elevado.
La variable temp
tiene un 3% de missing, podría ser una candidata a imputar por la media
pero vemos como la distribución se desplaza hacia el valor 38.5 que es el valor de la media.
En el caso de las variables categóricas la forma de imputar valores perdidos de forma sencilla es usando la moda. Por ejemplo, los valores faltantes de la variable gender
(variable categórica) tienen un 5% de missing y se pueden representar por la categoría más frecuente ("f" en este caso):
Regresión lineal
Un método algo más avanzado es utilizar algún tipo de modelo estadístico para predecir cuál podría ser el valor perdido y reemplazarlo con el valor predicho. Aquí un ejemplo de cómo crear valores predichos para todas las observaciones donde la temp
tiene datos perdidos, pero fever
no, utilizando una regresión lineal simple usando la fiebre como predictores.
Regresión lineal + error estocástico
A veces cuando los datos faltantes tienen mucha relación con algunos valores específicos de la variable que se va a usar para imputar, podemos querer añadir un error estocástico.
Este error lo añadimos como un término de error estocástico a nuestras predicciones. Este error estocástico es una variable aleatoria que sigue una distribución normal con media cero y desviación estándar para la que podemos usar el error estándar de la propia regresión lineal.
Last updated