¿Cuál es la mejor manera de identificar valores atípicos en datos multivariados?


94

Supongamos que tengo un gran conjunto de datos multivariados con al menos tres variables. ¿Cómo puedo encontrar los valores atípicos? Los diagramas de dispersión por pares no funcionarán, ya que es posible que exista un valor atípico en 3 dimensiones que no es un valor atípico en ninguno de los subespacios bidimensionales.

No estoy pensando en un problema de regresión, sino en datos multivariados verdaderos. Por lo tanto, las respuestas que implican una regresión robusta o apalancamiento informático no son útiles.

Una posibilidad sería calcular los puntajes del componente principal y buscar un valor atípico en el diagrama de dispersión bivariado de los dos primeros puntajes. ¿Eso estaría garantizado para trabajar? ¿Hay mejores enfoques?


3
Si una matriz de diagrama de dispersión no lo atrapa, puede probar un diagrama de dispersión 3D. Eso no funcionará con 4D, por supuesto, pero luego podría crear una cuarta dimensión como tiempo y hacer una película. :)
Shane

¿Qué pasa con el análisis de agrupamiento (jerárquico)?
Andrej

11
5º D en tono de color, 6º D en intensidad de color, 7º D en tamaño de punto y podemos ir ;-)

Respuestas:


26

Eche un vistazo al paquete mvoutlier que se basa en distancias mahalanobis robustas ordenadas, como lo sugiere @drknexus.


44
¡Personalmente no creo en este paquete! Creo que esto es solo ruido de la ciencia. Este tipo de teorías son muy buenas para datos simulados, mientras que solo son útiles para datos reales. Utilicé este paquete para, por ejemplo, detectar valores atípicos :-) lamentablemente la mitad de mis datos detectados son valores atípicos :-D Es curioso cómo la gente simplemente publica algunos (no sé cómo llamar a esto). Si tiene algún comentario, me alegrará verlo. Tenemos muchos tipos de valores atípicos, pero ¿deberíamos simplemente eliminarlos de nuestros datos? Yo no lo creo.
Estudiante

1
¿Podría explicar cuándo y por qué esto funciona?
eric_kernfeld

19

Creo que la respuesta de Robin Girard funcionaría bastante bien para 3 y posiblemente 4 dimensiones, pero la maldición de la dimensionalidad evitaría que funcione más allá de eso. Sin embargo, su sugerencia me llevó a un enfoque relacionado que consiste en aplicar la estimación de densidad de kernel con validación cruzada a los primeros tres puntajes de componentes principales. Entonces, un conjunto de datos de muy alta dimensión aún se puede manejar bien.

En resumen, para i = 1 a n

  1. Calcule una estimación de densidad de los primeros tres puntajes de componentes principales obtenidos del conjunto de datos sin Xi.
  2. Calcule la probabilidad de Xi para la densidad estimada en el paso 1. llámelo Li.

fin de

Ordene el Li (para i = 1, .., n) y los valores atípicos son aquellos con probabilidad por debajo de cierto umbral. No estoy seguro de cuál sería un buen umbral. ¡Lo dejaré para quien escriba el documento sobre esto! Una posibilidad es hacer un diagrama de caja de los valores de registro (Li) y ver qué valores atípicos se detectan en el extremo negativo.


Gracias por esta respuesta (¿debería ser un comentario?) Como ya mencioné, como comentario a la Dimensión alta de la respuesta de Rich no es un problema (incluso 1000 podrían funcionar) si realiza una suposición estructural paramétrica.
robin girard

@rob "No estoy seguro de cuál sería un buen umbral", este sería el propósito del procedimiento de prueba múltiple que mencioné ... pero estoy totalmente de acuerdo en que hay que completar las cosas y realmente me gusta la detección de valores atípicos en la detección de valores atípicos! ¿Quién quiere escribir un artículo :)?
robin girard

44
(-1) Es un poco molesto que la respuesta aceptada a esta pregunta no sea útil (p. Ej., Demasiado vaga y no esté implementada) ni científicamente correcta (como si no estuviera mal: hasta donde yo sé, ni siquiera se menciona en el literatura relevante).
usuario603

66
(-1) esto parece una respuesta incorrecta: ¡este método no detectará valores atípicos! es fácil imaginar una nube de puntos en 3D similar a un panqueque proyectada por PCA en un plano 2D y 1 punto atípico que está lejos del plano pero su proyección está justo en el medio de la nube proyectada, por lo que la "densidad del núcleo" de el punto en el plano 2D será alto, aunque es un valor atípico.
Kochede

1
Creo que PCA sería problemático aquí. PCA es una aproximación que considera las principales contribuciones a la varianza. Pero aquí el objetivo es encontrar valores atípicos : ¿no "caerían entre las grietas"?
Omry Atia

18

Puede encontrar un resumen pedagógico de los diversos métodos disponibles en (1)

Para algunas comparaciones numéricas recientes de los diversos métodos enumerados allí, puede marcar (2) y (3) .

Hay muchas comparaciones numéricas más antiguas (y menos exhaustivas), que generalmente se encuentran en los libros. Encontrará uno en las páginas 142-143 de (4), por ejemplo.

Tenga en cuenta que todos los métodos discutidos aquí tienen una implementación de código abierto R, principalmente a través del paquete rrcov .

  • (1) P. Rousseeuw y M. Hubert (2013) Estimadores de desglose alto de ubicación y dispersión multivariante.
  • (2) M. Hubert, P. Rousseeuw, K. Vakili (2013). Sesgo de forma de estimadores de covarianza robustos: un estudio empírico. Documentos estadísticos.
  • (3) K. Vakili y E. Schmitt (2014). Encontrar valores atípicos multivariados con FastPCS. Estadística computacional y análisis de datos.
  • (4) Maronna RA, Martin RD y Yohai VJ (2006). Estadísticas robustas: teoría y métodos. Wiley, Nueva York.

No recomendaría documentos basados ​​en datos simulados, creo que los dos primeros documentos están basados ​​en datos simulados. Estoy trabajando en datos reales y, RARAMENTE, esos valores atípicos fuertes simulados se pueden encontrar en los datos. Personalmente nunca encontré un conjunto de datos con valores atípicos muy fuertes. Si conoce algún dato real, no dude en compartirlo
Estudiante

Hola Nemo: gracias por tu comentario. En realidad, resulta que para muchos (lamentablemente no todos) de esos modelos se conoce realmente la peor configuración posible de valores atípicos y estas son las configuraciones que normalmente se simularían y evaluarían esos modelos. ¿Quizás puedas formular esto como una pregunta? ¡Me encantaría señalar algunas referencias!
usuario603

1
Ya hice una pregunta general. Puede encontrar mi publicación aquí stats.stackexchange.com/questions/139645/…
Estudiante

13

Haría algún tipo de "dejar un algoritmo de prueba" (n es el número de datos):

para i = 1 a n

  1. calcular una estimación de densidad del conjunto de datos obtenido arrojando basuraXi . (Esta estimación de densidad debe hacerse con algún supuesto si la dimensión es alta, por ejemplo, un supuesto gaussiano para el cual la estimación de densidad es fácil: media y covarianza)
  2. Calcule la probabilidad de para la densidad estimada en el paso 1Xi . llámalo .Li

fin de

ordenar el (para i = 1, .., n) y usar un procedimiento de prueba de hipótesis múltiples para decir cuáles no son buenos ...Li

Esto funcionará si n es lo suficientemente grande ... también puede usar la "estrategia de dejar de lado", que puede ser más relevante cuando tiene "grupos" de valores atípicos ...


¿Cómo lidiaría con casos en los que no sabe cuántos valores atípicos tiene, es decir, cuando los puntos N-1 todavía tienen un sesgo, ya que incluyen valores atípicos?
Benjamin Bannier

1
si n es suficientemente grande y el número de valores atípicos es pequeño, entonces este sesgo es insignificante. Si hay una gran cantidad de valores atípicos, entonces no se trata de valores atípicos y de todos modos, como mencioné, puede usar la estrategia de dejar de lado ... (en este caso, debe encontrar una estrategia para evitar el seguimiento de todas las configuraciones que pueden ser NP difícil ...) y si no conoce k, puede probar muchos valores para k y mantener el más relevante.
robin girard

1
Esta es una buena idea, pero si la he entendido correctamente, parece ampliar la idea de "valor atípico" para incluir cualquier valor en un conjunto de datos que esté alejado de los demás. Por ejemplo, en el lote {-110 [1] -90, 0, 90 [1] 110} de 43 enteros, ¿su procedimiento no identificaría el 0 (que es la mediana de estos números) como el único "valor atípico" "?
whuber

@whuber buena pregunta! sin suposición estructural, el cero podría eliminarse. Sin embargo, puede suponer que la distribución es unimodal y calcular la densidad en consecuencia. En este caso, el supuesto estructural (unimodalidad) ayudará al procedimiento a ver cero como un valor "normal". Al final, ¿crees que es normal porque tienes ese tipo de "suposición estructural" en tu cabeza :)?
robin girard

3
Me preocupan algunos aspectos de este procedimiento; mi ejemplo solo señala una de las razones por las cuales. Los son fuertemente interdependientes, por lo que no está claro qué "procedimiento de prueba de hipótesis múltiples" sería aplicable. Además, el dependerá del estimador de densidad, como usted señala, de modo que se abre una batería de preguntas sobre la mejor manera de estimar las densidades para este propósito. Estos son problemas incluso con los procedimientos de detección de valores atípicos univariados paramétricos, por lo que no espero que sean más fáciles de resolver en el caso multivariante. L iLiLi
whuber

12

Puede encontrar candidatos para "valores atípicos" entre los puntos de soporte del elipsoide de límite de volumen mínimo. (Los algoritmos eficientes para encontrar estos puntos en dimensiones bastante altas, exactamente y aproximadamente, se inventaron en una serie de documentos en la década de 1970 porque este problema está íntimamente relacionado con una pregunta en el diseño experimental).


12

El enfoque novedoso que vi fue por IT Jolliffe Principal Components Analysis . Ejecutas una PCA en tus datos (Nota: PCA puede ser una herramienta de exploración de datos bastante útil por derecho propio), pero en lugar de mirar los primeros Componentes principales (PC), trazas las últimas PC. Estas PC son las relaciones lineales entre sus variables con la menor variación posible. Por lo tanto, detectan relaciones multivariadas "exactas" o casi exactas en sus datos.

Una gráfica de las puntuaciones de PC para la última PC mostrará valores atípicos que no son fácilmente detectables al observar individualmente cada variable. Un ejemplo es para la altura y el peso: algunos que tienen una altura "superior al promedio" y un peso "inferior al promedio" serían detectados por la última PC de altura y peso (suponiendo que estos estén positivamente correlacionados), incluso si su altura y peso no estuvieran " extrema "individualmente (por ejemplo, alguien que tenía 180 cm y 60 kg).


11

No vi a nadie mencionar las funciones de influencia . La primera vez que vi esta idea en el libro multivariante de Gnanadesikan .

En una dimensión, un valor atípico es un valor extremadamente grande o extremadamente pequeño. En el análisis multivariante, es una observación eliminada del grueso de los datos. Pero, ¿qué métrica debemos usar para definir el extremo para el valor atípico? Hay muchas opciones La distancia de Mahalanobis es solo una. Creo que buscar todo tipo de valores atípicos es inútil y contraproducente. Preguntaría por qué te importa el valor atípico? Al estimar una media, pueden tener una gran influencia en esa estimación. Los estimadores robustos tienen poco peso y acomodan valores atípicos, pero no los prueban formalmente. Ahora en regresión, los valores atípicos, como los puntos de apalancamiento, podrían tener grandes efectos en los parámetros de pendiente del modelo. Con datos bivariados pueden influir indebidamente en el coeficiente de correlación estimado y en tres o más dimensiones en el coeficiente de correlación múltiple.

Hampel introdujo las funciones de influencia como una herramienta en la estimación robusta y Mallows escribió un buen artículo inédito abogando por su uso. La función de influencia es una función del punto en el que se encuentra en el espacio n-dimensional y el parámetro. Básicamente mide la diferencia entre la estimación del parámetro con el punto en el cálculo y con el punto omitido. En lugar de tomarse la molestia de hacer el cálculo de las dos estimaciones y tomar la diferencia, a menudo puede derivar una fórmula para ello. Luego, los contornos de influencia constante le indican la dirección que es extrema con respecto a la estimación de este parámetro y, por lo tanto, le indican en qué parte del espacio n-dimensional debe buscar el valor atípico.

Para más información, puede consultar mi artículo de 1983 en el American Journal of Mathematical and Management Sciences titulado "La función de influencia y su aplicación a la validación de datos". En la validación de datos, queríamos buscar valores atípicos que afectaran el uso previsto de los datos. Creo que debe dirigir su atención a valores atípicos que afecten en gran medida los parámetros que le interesan estimar y que no se preocupe tanto por otros que no lo hacen.


1
+1 Muy buena idea, especialmente por el enfoque constante en el propósito del análisis.
Whuber

Una idea similar es el consenso de muestra aleatoria ( RANSAC ).
GeoMatt22


7

Para dimensiones moderadas, como 3, entonces algún tipo de técnica de validación cruzada del núcleo, como se sugiere en otra parte, parece razonable y es lo mejor que se me ocurre.

Para dimensiones superiores, no estoy seguro de que el problema sea solucionable; aterriza bastante directamente en el territorio de la "maldición de la dimensionalidad". El problema es que las funciones de distancia tienden a converger a valores muy grandes muy rápidamente a medida que aumenta la dimensionalidad, incluidas las distancias derivadas de las distribuciones. Si está definiendo un valor atípico como "un punto con una función de distancia relativamente grande en relación con los demás", y todas sus funciones de distancia están comenzando a converger porque está en un espacio de alta dimensión, bueno, está en problemas .

Sin algún tipo de suposición de distribución que le permita convertirlo en un problema de clasificación probabilística, o al menos alguna rotación que le permita separar su espacio en "dimensiones de ruido" y "dimensiones informativas", creo que la geometría de los espacios de alta dimensión prohibirá cualquier identificación fácil, o al menos robusta, de valores atípicos.


El procedimiento que ya di puede aplicarse en gran dimensión, como dije, utilizando una suposición gaussiana. Si la dimensión es realmente grande con respecto al tamaño de la muestra (es decir, p >> n), entonces puede hacer una suposición de escasez (suponga que los parámetros de su distribución gaussiana se encuentran en un espacio dimensional bajo, por ejemplo) y utilice un procedimiento de estimación de umbral para la estimación de los parámetros ...
robin girard

1
Muy perspicaz que la maldición de la dimensionalidad impide una solución sin supuestos de distribución (a menos que simplemente tenga cantidades increíbles de datos o la dimensión sea pequeña)
John Robertson

6

No estoy seguro de lo que quiere decir cuando dice que no está pensando en un problema de regresión sino en "datos multivariados verdaderos". Mi respuesta inicial sería calcular la distancia de Mahalanobis, ya que no requiere que especifique un IV o DV en particular, pero en esencia (hasta donde yo entiendo) está relacionado con una estadística de apalancamiento.


Sí, podría calcular la distancia de Mahalanobis de cada observación a partir de la media de los datos. Pero las observaciones con la mayor distancia de la media no son necesariamente valores atípicos multivariantes. Piense en un diagrama de dispersión bivariado con alta correlación. Un valor atípico puede estar fuera de la nube principal de puntos, pero no tan lejos de la media.
Rob Hyndman


4

Mi primera respuesta sería que si puede hacer una regresión multivariada en los datos, entonces usar los residuos de esa regresión para detectar valores atípicos. (Sé que dijiste que no es un problema de regresión, así que esto podría no ayudarte, ¡lo siento!)

Estoy copiando algo de esto de una pregunta de Stackoverflow que he respondido anteriormente y que tiene algún código R de ejemplo

Primero, crearemos algunos datos y luego los contaminaremos con un valor atípico;

> testout<-data.frame(X1=rnorm(50,mean=50,sd=10),X2=rnorm(50,mean=5,sd=1.5),Y=rnorm(50,mean=200,sd=25)) 
> #Taint the Data 
> testout$X1[10]<-5 
> testout$X2[10]<-5 
> testout$Y[10]<-530 

> testout 
         X1         X2        Y 
1  44.20043  1.5259458 169.3296 
2  40.46721  5.8437076 200.9038 
3  48.20571  3.8243373 189.4652 
4  60.09808  4.6609190 177.5159 
5  50.23627  2.6193455 210.4360 
6  43.50972  5.8212863 203.8361 
7  44.95626  7.8368405 236.5821 
8  66.14391  3.6828843 171.9624 
9  45.53040  4.8311616 187.0553 
10  5.00000  5.0000000 530.0000 
11 64.71719  6.4007245 164.8052 
12 54.43665  7.8695891 192.8824 
13 45.78278  4.9921489 182.2957 
14 49.59998  4.7716099 146.3090 
<snip> 
48 26.55487  5.8082497 189.7901 
49 45.28317  5.0219647 208.1318 
50 44.84145  3.6252663 251.5620 

A menudo es más útil examinar los datos gráficamente (su cerebro es mucho mejor para detectar valores atípicos que las matemáticas)

> #Use Boxplot to Review the Data 
> boxplot(testout$X1, ylab="X1") 
> boxplot(testout$X2, ylab="X2") 
> boxplot(testout$Y, ylab="Y") 

Luego puede usar estadísticas para calcular valores críticos de corte, aquí usando la Prueba de Lund (Ver Lund, RE 1975, "Tablas para una prueba aproximada de valores atípicos en modelos lineales", Technometrics, vol. 17, no. 4, pp. 473 -476. Y Prescott, P. 1975, "Una prueba aproximada para valores atípicos en modelos lineales", Technometrics, vol. 17, no. 1, pp. 129-132.)

> #Alternative approach using Lund Test 
> lundcrit<-function(a, n, q) { 
+ # Calculates a Critical value for Outlier Test according to Lund 
+ # See Lund, R. E. 1975, "Tables for An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 4, pp. 473-476. 
+ # and Prescott, P. 1975, "An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 1, pp. 129-132. 
+ # a = alpha 
+ # n = Number of data elements 
+ # q = Number of independent Variables (including intercept) 
+ F<-qf(c(1-(a/n)),df1=1,df2=n-q-1,lower.tail=TRUE) 
+ crit<-((n-q)*F/(n-q-1+F))^0.5 
+ crit 
+ } 

> testoutlm<-lm(Y~X1+X2,data=testout) 

> testout$fitted<-fitted(testoutlm) 

> testout$residual<-residuals(testoutlm) 

> testout$standardresid<-rstandard(testoutlm) 

> n<-nrow(testout) 

> q<-length(testoutlm$coefficients) 

> crit<-lundcrit(0.1,n,q) 

> testout$Ynew<-ifelse(testout$standardresid>crit,NA,testout$Y) 

> testout 
         X1         X2        Y    newX1   fitted    residual standardresid 
1  44.20043  1.5259458 169.3296 44.20043 209.8467 -40.5171222  -1.009507695 
2  40.46721  5.8437076 200.9038 40.46721 231.9221 -31.0183107  -0.747624895 
3  48.20571  3.8243373 189.4652 48.20571 203.4786 -14.0134646  -0.335955648 
4  60.09808  4.6609190 177.5159 60.09808 169.6108   7.9050960   0.190908291 
5  50.23627  2.6193455 210.4360 50.23627 194.3285  16.1075799   0.391537883 
6  43.50972  5.8212863 203.8361 43.50972 222.6667 -18.8306252  -0.452070155 
7  44.95626  7.8368405 236.5821 44.95626 223.3287  13.2534226   0.326339981 
8  66.14391  3.6828843 171.9624 66.14391 148.8870  23.0754677   0.568829360 
9  45.53040  4.8311616 187.0553 45.53040 214.0832 -27.0279262  -0.646090667 
10  5.00000  5.0000000 530.0000       NA 337.0535 192.9465135   5.714275585 
11 64.71719  6.4007245 164.8052 64.71719 159.9911   4.8141018   0.118618011 
12 54.43665  7.8695891 192.8824 54.43665 194.7454  -1.8630426  -0.046004311 
13 45.78278  4.9921489 182.2957 45.78278 213.7223 -31.4266180  -0.751115595 
14 49.59998  4.7716099 146.3090 49.59998 201.6296 -55.3205552  -1.321042392 
15 45.07720  4.2355525 192.9041 45.07720 213.9655 -21.0613819  -0.504406009 
16 62.27717  7.1518606 186.6482 62.27717 169.2455  17.4027250   0.430262983 
17 48.50446  3.0712422 228.3253 48.50446 200.6938  27.6314695   0.667366651 
18 65.49983  5.4609713 184.8983 65.49983 155.2768  29.6214506   0.726319931 
19 44.38387  4.9305222 213.9378 44.38387 217.7981  -3.8603382  -0.092354925 
20 43.52883  8.3777627 203.5657 43.52883 228.9961 -25.4303732  -0.634725264 
<snip> 
49 45.28317  5.0219647 208.1318 45.28317 215.3075  -7.1756966  -0.171560291 
50 44.84145  3.6252663 251.5620 44.84145 213.1535  38.4084869   0.923804784 
       Ynew 
1  169.3296 
2  200.9038 
3  189.4652 
4  177.5159 
5  210.4360 
6  203.8361 
7  236.5821 
8  171.9624 
9  187.0553 
10       NA 
11 164.8052 
12 192.8824 
13 182.2957 
14 146.3090 
15 192.9041 
16 186.6482 
17 228.3253 
18 184.8983 
19 213.9378 
20 203.5657 
<snip> 
49 208.1318 
50 251.5620 

Obviamente, hay otras pruebas atípicas que la prueba de Lund (me viene a la mente Grubbs), pero no estoy seguro de cuáles son las más adecuadas para los datos multivariados.


1
Los diagramas de caja univariados son útiles para detectar valores atípicos univariantes. Pero pueden perderse por completo los valores atípicos multivariados. La idea de regresión está bien si tuviera una Y y un montón de variables X. Pero como dije en la pregunta, no hay Y, entonces la regresión es inapropiada.
Rob Hyndman el

@RobHyndman: se puede corregir Y (convertirlo en una constante) e intentar modelar una regresión múltiple sin intercepción . Funciona muy bien en la práctica. En esencia, esto transforma un problema fundamentalmente sin supervisión, que es una detección de anomalías típica, en uno supervisado.
arielf

@arielf Interesante. Tienes una referencia para eso?
Rob Hyndman,

@RobHyndman no es un trabajo académico, pero quizás mejor, puedes probarlo tú mismo. Ver mi página de GitHub en vw-top-errors@ goo.gl/l7SLlB (tenga en cuenta que los ejemplos allí sucede que tiene una Y, pero usan la misma técnica, con mucho éxito en los problemas sin supervisión también mediante la fijación de Y.)
arielf

1

Una de las respuestas anteriores tocó en distancias mahalanobis ... ¡quizás un paso más adelante y calcular intervalos de confianza simultáneos ayudaría a detectar valores atípicos!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.