No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

2D
4H
41M
50S

MCAR, MAR, MNAR en Python

12/21
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Es importante saber que tipo de mecanismo es el que esta ocasionando que nuestros datos falten, en este ejemplo de wikipedia

Se trata el ejemplo de un cuestionario sobre depresión, y basicamente se sabía que si la falta de datos era:

.

MAR: An example is that males are less likely to fill in a depression survey but this has nothing to do with their level of depression, after accounting for maleness.

Básicamente si eran hombres era mas probable que faltara ese valor (indicador de depresión).
Aquí la localización del valor faltante dependia de la variable male/female

.

MNAR: This would occur if men failed to fill in a depression survey because of their level of depression.

Y en este otro caso faltaban esos valores debido a la misma variable o indicador de “depresión”, las personas estaban tan deprimidas que por esta misma razón no podian ir y tomar la encuesta.


Y la conclusión fue:

The more data is missing (MNAR), the more biased are the estimations. We underestimate the intensity of depression in the population.


Si no se toman en cuenta los datos faltantes MNAR, entonces se pueden caer en sesgos.
Y como dice el proverbio:

.

Garbage in, garbage out.

.

MCAR, MAR, MNAR en Python

Tenemos un conjunto de datos llamado diabetes_df en el que aparentemente no hay datos faltantes (nan). Lo podemos verificar como sigue:

diabetes_df
diabetes_df.missing_variable_plot()

Por otro lado, sabemos que si existen datos faltantes pero estan escrito en otro formato, en este caso por cero. Ahora lo que se hace es remplazar tales valores por nan para que sean detectados como valores faltantes.

diabetes_df[diabetes_df.columns[1:6]] = diabetes_df[diabetes_df.columns[1:6]].replace(0,np.nan)
diabetes_df.missing.missing_variable_plot()
  • Caso MCAR
# ordena las columnas desde la que mas tiene valores faltantes a la que menos tiene
(
    diabetes_df
    .missing.sort_variables_by_missingness()
    .pipe(missingno.matrix) # muestra los datos en una matriz de sombra
)

Para las variables bmi y glucose hay tan pocos valores faltantes que se pueden considerar valores faltantes al azar

  • Caso MAR
(
    diabetes_df
    .missing.sort_variables_by_missingness()
    .sort_values(by='blood_pressure') # ordena los valores segun una columna
    .pipe(missingno.matrix)
)

Los valores faltantes de la variable blood_presure pueden estar relacionado a algunos valores de la insulina o de la skin_thickness por lo que son de tipo MAR

  • Caso MNAR
(
    diabetes_df
    .missing.sort_variables_by_missingness()
    .sort_values(by='insulin') # ordena los valores segun una columna
    .pipe(missingno.matrix)
)

Hay un rango de valores de insulina en la que estan la mayoria de los valores faltantes de las demas variables de lo que podemos concluir que es de tipo MNAR

En está clase aprendí algo nuevo, algo que ahora en adelante va a agregarle contenido a mis analisis exploratorios