Un enfoque estadístico para determinar si faltan datos al azar

21

Tengo un gran conjunto de vectores de características que usaré para atacar un problema de clasificación binaria (usando scikit learn en Python). Antes de comenzar a pensar en la imputación, estoy interesado en tratar de determinar, a partir de las partes restantes de los datos, si los datos faltantes 'faltan al azar' o no faltan al azar.

¿Cuál es una forma sensata de abordar esta pregunta?


Resulta que una mejor pregunta es preguntar si los datos 'faltan completamente al azar' o no. ¿Cuál es una forma sensata de hacer eso?

Lembik
fuente
Si no hay asociación entre el indicador faltante y cualquier variable observada, entonces el mecanismo de datos faltantes es MCAR.
Randel
@Randel ¿Cuál es una buena prueba para aplicar en la práctica para probar esto?
Lembik
Nada especial que una prueba de correlación o regresión.
Randel
3
No es algo que pruebes, es algo que asumes .
Tim
3
Para ser claros: fallar completamente al azar significa que la probabilidad de falta es una constante, no depende de nada. Perder al azar significa que la falta depende de algunos factores medidos, como la edad o el sexo, por lo que puede usar algunos modelos para completar los patrones faltantes. Perder no al azar significa que la falta depende de cosas que no midió. En la pregunta OP dice NMAR vs. MAR pero OP significa MAR vs MCAR.
AdamO

Respuestas:

8

Encontré la información de la que estaba hablando en mi comentario.

Del libro de van Buurens , página 31, escribe

"Se han propuesto varias pruebas para evaluar MCAR versus MAR. Estas pruebas no se usan ampliamente, y su valor práctico no está claro. Ver Enders (2010, pp. 17-21) para una evaluación de dos procedimientos. No es posible evaluar MAR versus MNAR ya que falta la información necesaria para tal prueba ".

RayVelcoro
fuente
La pregunta se refiere a MAR vs MNAR, pero su respuesta es sobre MCAR vs MAR. MCAR es completamente diferente a MNAR.
Tim
Si puede determinar que los datos son MAR, entonces eso debería ser suficiente. Como dice Bjorn, no es posible saber si es MAR / MNAR, pero esta respuesta es un buen representante de su pregunta, creo. Si hicieras la prueba Enders y descubrieras que es MCAR, entonces no necesitarías imputación. Si descubre que es MAR, puede imputar o analizar detenidamente sus datos para ver si hay razones para creer que puede ser MNAR.
RayVelcoro
@RayVelcoro Es un problema de identificación: es posible que los datos NMAR aparezcan MCAR. Tim tiene razón en que NMAR (o lo contrario) no es algo para lo que probamos, es algo que suponemos. Según su punto de vista MCAR vs MAR, lo más importante (¿más?) Es: si los datos son MCAR y usted usa métodos MAR, ¿existe realmente algún efecto neto en los datos? No lo creo. Dada la penetración, la disponibilidad y la facilidad de uso de los métodos MAR, tal vez sea mejor usar la ponderación no paramétrica o el procedimiento de imputación que participar en una búsqueda retórica de pruebas y pruebas.
AdamO
17

Esto no es posible, a menos que haya logrado recuperar los datos faltantes. No puede determinar a partir de los datos observados si los datos faltantes faltan al azar (MAR) o no al azar (MNAR). Solo puede decir si los datos claramente no faltan completamente al azar (MCAR). Más allá de eso, solo apele a la plausibilidad de MCAR o MAR en lugar de MNAR en función de lo que sabe (por ejemplo, razones informadas de por qué faltan datos). Alternativamente, podría argumentar que no importa demasiado, porque la proporción de datos faltantes es pequeña y, bajo MNAR, tendrían que suceder situaciones muy extremas para que se anulen sus resultados (consulte "análisis del punto de inflexión").

Björn
fuente
1
Muchas gracias. ¿Cuál es una buena manera de saber si los datos son MCAR?
Lembik
@ Björn, es posible que sea necesario volver a redactar lo anterior para reflejar las asimetrías esenciales en lo que podemos aprender de los datos. Aunque es posible falsificar una hipótesis de que los datos son MCAR (es decir, al construir un modelo que explota las covariables observadas para dar cuenta de alguna parte de la falta), no es posible confirmar MCAR ni ninguna otra hipótesis similar.
David C. Norris
Buen punto. Lo hice más claro.
Björn
4

Esto suena bastante factible desde el punto de vista de la clasificación.

Desea clasificar los datos perdidos frente a los que no faltan utilizando todas las demás características. Si obtiene resultados significativamente mejores que los resultados aleatorios, sus datos no faltan al azar.

Firebug
fuente
2

Desea saber si existe alguna correlación entre un valor perdido en la función y el valor de cualquier otra función.

Para cada una de las características, cree una nueva característica que indique si falta el valor o no (llamémoslas característica "is_missing"). Calcule su medida de correlación favorita (sugiero usar aquí información mutua) de las características is_missing y el resto de las características.

Tenga en cuenta que si no encuentra ninguna correlación entre dos características, aún es posible tener una correlación debido al grupo de características (falta un valor en función de XOR de otras diez características).

Si tiene un gran conjunto de características y una gran cantidad de valores, obtendrá correlaciones falsas debido a la aleatoriedad. Aparte de las formas habituales de hacer frente a eso (conjunto de validación, umbral suficientemente alto) Puede verificar si las correlaciones son simétricas y transitivas. Si lo son, es probable que sean ciertas y debe verificarlas más a fondo.

DaL
fuente
1

Un método que uso es una matriz de sombra, en la que el conjunto de datos consiste en variables indicadoras donde se da un 1 si hay un valor y 0 si no lo está. Correlacionarlos entre sí y los datos originales pueden ayudar a determinar si las variables tienden a faltar juntas (MAR) o no (MCAR). Usando Rpara un ejemplo (tomado del libro "R en acción" de Robert Kabacoff):

#Load dataset
data(sleep, package = "VIM")

x <- as.data.frame(abs(is.na(sleep)))

#Elements of x are 1 if a value in the sleep data is missing and 0 if non-missing.
head(sleep)
head(x)

#Extracting variables that have some missing values.
y <- x[which(sapply(x, sd) > 0)]
cor(y)

#We see that variables Dream and NonD tend to be missing together. To a lesser extent, this is also true with Sleep and NonD, as well as Sleep and Dream.

#Now, looking at the relationship between the presence of missing values in each variable and the observed values in other variables:
cor(sleep, y, use="pairwise.complete.obs")

#NonD is more likely to be missing as Exp, BodyWgt, and Gest increases, suggesting that the missingness for NonD is likely MAR rather than MCAR.
Phil
fuente
1
En VIM , también puede consultar spinoplots. Dan un histograma de dos variables con la falta en cada una. Podemos trazar dos variables y ver cómo la falta en una varía con la otra. Por ejemplo, si graficamos el tiempo de supervivencia y la asignación del tratamiento, si vemos una distribución sesgada correcta de la falta, podemos postular que los tiempos de supervivencia más bajos se asocian con más falta ... es decir, que la falta de tratamiento es MAR porque depende de tiempo de supervivencia variable observado.
RayVelcoro
1
La pregunta se refiere a MAR vs MNAR, pero su respuesta es sobre MCAR vs MAR. MCAR es completamente diferente a MNAR.
Tim
@Tim Como AdamO declaró en un comentario debajo de la pregunta, OP significaba MAR vs MCAR.
Phil