Detección de datos perdidos
El problema de los datos perdidos (missing data)
Uno de los problemas que aparece en el análisis de datos con frecuencia es la existencia de datos faltantes o ausentes, también llamados datos missing (en inglés).
Se producen cuando las observaciones de nuestros datos no están completas. La presencia de datos missing en una muestra puede ser debida a numerosas causas:
Ausencia natural de la información que se busca
Una observación errónea o dato atípico que habremos convertido en missing en el proceso de detección y tratamiento
Una falta de respuesta, por ejemplo en una encuesta
Será importante un buen diseño de la muestra para impedir en lo posible esta información faltante. Por ejemplo, si se trabaja con cuestionarios, es fundamental además de elaborarlos adecuadamente, enseñar al personal para que todas las preguntas sean respondidas.
Datos missing en R
NA
Es como se representa en R los datos perdidos o missing. Recuerda que en el Tema 1 vimos que los datos missing pueden estar representados de muchas formas ("99", "Missing", "Unknown", " ") y hay que detectarlos y convertirlos en NA
Versiones especiales de NA:
NULL
Es un valor especial que se utiliza para representar la ausencia de un valor o la falta de datos. Se trata de un objeto nulo, y se puede utilizar en diversas situaciones para indicar que una variable o expresión no tiene un valor asignado.
NaN
Son valores imposibles, por ejemplo cuando fuerzas a R a dividir 0 por 0.
Inf
Representa un valor infinito, como por ejemplo si fuerzas a R a dividir un número por 0
Ejemplo ilustrativo de como esto puede afectar a tus análisis:
“NAs introduced by coercion” es un warning común en R. Por ejemplo, si intenta convertir en numérico un vector que tiene caracteres:
Funciones útiles en R
is.na()
y !is.na()
is.na()
y !is.na()
Estas funciones devuelven un valor lógico (TRUE
or FALSE
)
na.omit()
na.omit()
Esta función quitará los datos missing, si lo aplicas a un vector quitará los datos NA
y si es sobre un data frame quitará las filas donde haya un valor missing.
na.rm = TRUE
na.rm = TRUE
Cuando se utilizan funciones matemáticas como
max()
, min()
, sum()
or mean()
si hay valores NA los eliminara para hacer el cálculo
Cuantificar y visualizar datos missing en una base de datos
Para ello vamos a usar una base de datos de simulación de una epidemia de Ebola
y un paquete de R que se llama naniar
Cuantificación
Para saber el número y porcentaje de valores que son missing usamos las funciones pct_miss()
, n_miss()
y pct_complete_case()
Visualización
Para visualizar los datos missing podemos hacer uso de la función gg_miss_var() o vis_miss()
que nos muestra el % de valores missing que hay en cada columna. Con esta función se puede:
Si queremos visualizar los datos missing por sexo haríamos uso del arguemnto facet =
Una cosa interesante que vemos al clasificar los datos por sexo, es que los valores perdidos de la variable edad corresponden a los valores perdidos de la variable sexo.
Puedes utilizar vis_miss()
para visualizar el dataframe como un heatmap donde se muestra en forma de matiz de datos si cada valor está ausente o no. También puedes usar select()
para elegir ciertas columnas del dataframe y proporcionar solo esas columnas a la función.
Exploración y visualización de datos missing entre dos variables
Dos variables cuantitativas
¿Cómo visualizamos algo que está perdido? ggplot()
por ejemplo elimina las observaciones con valores missing.
Si creo un gráfico de dispersión entre dos variables cuantitativas, por ejemplo age y temp con ggplot()
El paquete naniar
ofrece una solución con geom_miss_point()
. Al crear un gráfico de dispersión de dos columnas, los registros con uno de los valores faltantes y el otro valor presente se muestran configurando los valores faltantes en un 10% menos que el valor más bajo en la columna, y se les asigna un color distintivo.
En el gráfico de dispersión a continuación, los puntos rojos representan registros donde el valor de una columna está presente, pero el valor de la otra columna falta. Esto permite visualizar la distribución de los valores faltantes en relación con los valores no faltantes.
Estratificado por una variable categórica
Para evaluar la ausencia de datos estratificados por otra variable, podemos utilizar gg_miss_fct()
, que devuelve un heatmap del porcentaje de datos faltantes según la variable categórica que le digamos:
Esta función también la podemos usar para ver la evolución de los datos missing en el tiempo si tenemos variables que nos indiquen fechas:
También se puede hacer uso de la funciónbind_shadow()
para ver la proporción de missing de una variable respecto a la distribución de otra variable. Esta función crea una columna binaria NA/no_NA
para cada columna existente y une todas estas nuevas columnas al conjunto de datos original con el apéndice "_NA"
.
Estas variables "shadow" se pueden utilizar para representar la proporción de valores que faltan en relación con otra columna.
Por ejemplo, el gráfico a continuación muestra la proporción de registros que faltan según el valor del registro del día de hospitalización (date_hospitalisation) estratificando los resultados (color =
) según una columna sombra de interés. En este caso la edad de los pacientes (age). Este análisis funciona mejor si el eje x es una columna numérica o de fechas.
Last updated