Quel est le meilleur moyen d'identifier les valeurs aberrantes dans des données multivariées?

94

Supposons que j'ai un grand ensemble de données multivariées avec au moins trois variables. Comment puis-je trouver les valeurs aberrantes? Les diagrammes de dispersion par paires ne fonctionneront pas car il est possible qu'une valeur aberrante existe en 3 dimensions qui ne soit une valeur aberrante dans aucun des sous-espaces à 2 dimensions.

Je ne pense pas à un problème de régression, mais à de vraies données multivariées. Donc, les réponses impliquant une régression robuste ou un effet de levier informatique ne sont pas utiles.

Une possibilité serait de calculer les scores de la composante principale et de rechercher une valeur aberrante dans le diagramme de dispersion à deux variables des deux premiers scores. Cela serait-il garanti de fonctionner? Y a-t-il de meilleures approches?

Rob Hyndman
la source
3
Si une matrice de diagramme de dispersion ne l'attrape pas, vous pouvez essayer un diagramme de dispersion 3D. Bien sûr, cela ne fonctionnera pas pour 4D, mais vous pourrez alors créer une 4ème dimension et créer un film. :)
Shane
Qu'en est-il de l'analyse de cluster (hiérarchique)?
Andrej
11
5ème D en nuance de couleur, 6ème D en intensité de couleur, 7ème D en taille de points et on peut y aller ;-)

Réponses:

26

Jetez un coup d'œil au paquetage mvoutlier qui repose sur des distances mahalanobis robustes et ordonnées, comme suggéré par @drknexus.

chl
la source
4
Personnellement, je ne crois pas en ce forfait! Je pense que c'est juste le bruit de la science. Ces types de théories sont très utiles pour les données simulées alors que pffff pour les données réelles. Par exemple, j'ai utilisé ce paquet pour détecter les valeurs aberrantes :-) malheureusement, la moitié de mes données ont été détectées comme étant des données aberrantes :-D si vous avez des commentaires, je serai heureux de les voir. Nous avons plusieurs types de valeurs aberrantes, mais devrions-nous simplement les supprimer de nos données? Je ne crois pas.
Apprenant
1
Pourriez-vous expliquer quand et pourquoi cela fonctionne?
eric_kernfeld
19

Je pense que la réponse de Robin Girard fonctionnerait plutôt bien pour 3 et éventuellement 4 dimensions, mais la malédiction de la dimensionnalité l’empêcherait de fonctionner au-delà de cela. Cependant, sa suggestion m’a amené à une approche connexe consistant à appliquer l’estimation de la densité du noyau validée par recoupement aux trois premières notes en composantes principales. Ensuite, un ensemble de données de très haute dimension peut toujours être géré correctement.

En résumé, pour i = 1 à n

  1. Calculez une estimation de la densité des trois premières notes en composantes principales obtenues à partir de l'ensemble de données sans Xi.
  2. Calculez la probabilité de Xi pour la densité estimée à l'étape 1. Appelez-le Li.

fin pour

Triez Li (pour i = 1, .., n) et les valeurs aberrantes sont celles avec une probabilité inférieure à un seuil. Je ne suis pas sûr de ce qui constituerait un bon seuil - je laisserai cela à quiconque rédigera le papier à ce sujet! Une possibilité consiste à établir une boîte à moustaches des valeurs du journal (Li) et à voir quelles valeurs aberrantes sont détectées à l'extrémité négative.

Rob Hyndman
la source
Merci pour cette réponse (devrait être un commentaire?) Comme je l’ai déjà mentionné, en tant que commentaire à la réponse Rich de Rich answer ne pose pas de problème (même 1 000 pourrait fonctionner) si vous faites une hypothèse structurelle paramétrique.
robin girard
@rob "Je ne sais pas ce que serait un bon seuil", tel serait l'objectif de la procédure de test multiple que j'ai mentionnée ... mais je suis tout à fait d'accord pour dire que les choses doivent être complétées et j'aime beaucoup la détection des valeurs aberrantes dans la détection des valeurs aberrantes! qui veut écrire un papier :)?
robin girard
4
(-1) Il est un peu contrariant que la réponse acceptée à cette question ne soit ni utile (par exemple, trop vague et non appliquée) ni scientifiquement correcte (comme même pas faux: autant que je sache, cela n’est même pas mentionné dans le littérature pertinente).
user603
6
(-1) cela semble être une réponse incorrecte - cette méthode ne détectera pas les valeurs aberrantes! Il est facile d’imaginer un nuage de points ressemblant à des crêpes 3D projeté par PCA sur un plan 2D et un point aberrant qui est très éloigné du plan, mais sa projection est située au milieu du nuage projeté, d'où la "densité du noyau" de le point dans le plan 2D sera élevé bien que ce soit une valeur aberrante.
Kochede
1
Je pense que la PCA serait problématique ici. La PCA est une approximation qui considère les principales contributions à la variance. Mais ici, le but même est de trouver des personnes aberrantes - ne tomberaient-elles pas entre les mailles du filet?
Omry Atia
18

Vous pouvez trouver un résumé pédagogique des différentes méthodes disponibles dans (1)

Pour certaines comparaisons numériques - récentes - des différentes méthodes énumérées ici, vous pouvez vérifier (2) et (3) .

il existe de nombreuses comparaisons numériques plus anciennes (et moins exhaustives) que l'on trouve généralement dans les livres. Vous en trouverez un aux pages 142-143 de (4), par exemple.

Notez que toutes les méthodes décrites ici ont une implémentation R open source, principalement via le paquet rrcov .

  • (1) P. Rousseeuw et M. Hubert (2013) Estimateurs par ventilation élevée de la localisation multivariée et de la dispersion.
  • (2) M. Hubert, P. Rousseeuw, K. Vakili (2013). Biais de forme d'estimateurs de covariance robustes: une étude empirique. Documents statistiques.
  • (3) K. Vakili et E. Schmitt (2014). Recherche de valeurs aberrantes multivariées avec FastPCS. Statistiques de calcul et analyse de données.
  • (4) Maronna RA, Martin RD et Yohai VJ (2006). Statistiques robustes: théorie et méthodes. Wiley, New York.
utilisateur603
la source
Je ne recommanderais pas de papiers basés sur des données simulées, je pense que les deux premiers papiers sont basés sur des données simulées. Je travaille sur des données réelles et RAREMENT I, ces données aberrantes fortes simulées peuvent être trouvées. Personnellement, je n'ai jamais trouvé un ensemble de données avec des valeurs aberrantes très fortes. Si vous connaissez des données réelles, n'hésitez pas à les partager
Apprenant le
Bonjour Nemo: merci pour votre commentaire. En fait, il s’avère que pour nombre de ces modèles (ce n’est pas tous), la pire configuration possible de valeurs aberrantes est réellement connue et il s’agit des configurations que l’on simulerait et évaluerait typiquement. Peut-être que vous pouvez formuler cela comme une question? Je serais plus qu'heureux de citer quelques références!
user603
1
J'ai déjà posé une question générale. Vous pouvez trouver mon article ici stats.stackexchange.com/questions/139645/…
Apprenant
13

Je ferais une sorte de "laisser un algorithme de test sur" (n est le nombre de données):

pour i = 1 à n

  1. Xje
  2. XjeLje

fin pour

Lje

Cela fonctionnera si n est suffisamment grand ... vous pouvez également utiliser la "stratégie d'exclusion", qui peut être plus pertinente lorsque vous avez des "groupes" de personnes éloignées ...

robin girard
la source
Comment cela se passerait-il dans les cas où vous ne savez pas combien de points aberrants vous avez, à savoir lorsque les points N-1 ont encore un biais, car ils incluent des points aberrants?
Benjamin Bannier
1
si n est suffisamment grand et que le nombre de valeurs aberrantes est faible, ce biais est négligeable. S'il y a un grand nombre de valeurs aberrantes, alors, ne le faites pas et de toute façon, comme je l'ai déjà mentionné, vous pouvez utiliser la stratégie d'exclusion (kk out) ... (dans ce cas, vous devez trouver une stratégie pour éviter de suivre toutes les configurations soyez NP dur ...) et si vous ne connaissez pas k, vous pouvez essayer plusieurs valeurs pour k et garder les plus pertinentes.
robin girard
1
C'est une bonne idée, mais si je l'ai bien comprise, il semble élargir l'idée de "valeur aberrante" pour inclure toute valeur dans un jeu de données distant des autres. Par exemple, dans le lot {-110 [1] -90, 0, 90 [1] 110} de 43 nombres entiers, votre procédure n’identifierait-elle pas le 0 (qui est la médiane de ces nombres!) Comme unique "valeur aberrante "?
whuber
@whuber bonne question! sans hypothèse structurelle, le zéro pourrait être supprimé. Cependant, vous pouvez supposer que la distribution est unimodale et calculer la densité en conséquence. Dans ce cas, l'hypothèse structurelle (unimodalité) aidera la procédure à voir zéro comme une valeur "normale". À la fin, vous pensez que c'est normal parce que vous avez ce type d '"hypothèse structurelle" dans votre tête :)?
robin girard
3
LjeLje
12

Vous pouvez trouver des candidats pour les "valeurs aberrantes" parmi les points de support de l'ellipsoïde de délimitation du volume minimal. ( Des algorithmes efficaces permettant de trouver ces points dans des dimensions assez élevées, à la fois exactement et approximativement, ont été inventés dans une série de documents dans les années 1970, car ce problème est intimement lié à une question de conception expérimentale.)

whuber
la source
12

L’approche novatrice que j’ai vue était celle de l’ analyse en composantes principales de Jolliffe d’IT . Vous exécutez une PCA sur vos données (Remarque: la PCA peut être un outil d'exploration de données très utile en soi), mais au lieu de regarder les premiers composants principaux (PC), vous tracez les derniers PC. Ces PC sont les relations linéaires entre vos variables avec la plus petite variance possible. Ils détectent ainsi des relations multivariées «exactes» ou proches d’exactes dans vos données.

Un graphique des scores PC du dernier PC indiquera les valeurs éloignées difficilement détectables en examinant chaque variable individuellement. Un exemple concerne la taille et le poids - certains qui ont une taille "supérieure à la moyenne" et un poids "inférieur à la moyenne" seraient détectés par le dernier PC de taille et de poids (en supposant que ceux-ci soient positivement corrélés), même si leur taille et leur poids n'étaient pas ". extrême "individuellement (par exemple, une personne de 180 cm et 60 kg).

probabilislogic
la source
11

Je n'ai vu personne mentionner les fonctions d'influence . J'ai d'abord vu cette idée dans le livre multivarié de Gnanadesikan .

Dans une dimension, une valeur aberrante est une valeur extrêmement grande ou extrêmement petite. En analyse multivariée, il s’agit d’une observation retirée de l’essentiel des données. Mais quelle métrique devrions-nous utiliser pour définir l’extrême pour les valeurs aberrantes? Il y a beaucoup de choix. La distance de Mahalanobis n'en est qu'une. Je pense que rechercher chaque type de valeur aberrante est inutile et contre-productif. Je voudrais demander pourquoi vous vous souciez de la valeur aberrante? En estimant une moyenne, ils peuvent avoir une grande influence sur cette estimation. Les estimateurs robustes réduisent le poids et s’adaptent aux valeurs aberrantes, mais ils ne les testent pas formellement. Désormais, en régression, les points aberrants - comme les points de levier - pourraient avoir des effets importants sur les paramètres de pente du modèle. Avec les données bivariées, ils peuvent indûment influencer le coefficient de corrélation estimé et, dans trois dimensions ou plus, le coefficient de corrélation multiple.

Hampel a introduit les fonctions d’influence en tant qu’outil d’estimation robuste et Mallows a rédigé un beau document non publié prônant leur utilisation. La fonction d'influence est une fonction du point où vous vous trouvez dans un espace à n dimensions et du paramètre. Il mesure essentiellement la différence entre l'estimation du paramètre avec le point dans le calcul et avec le point laissé de côté. Plutôt que de prendre la peine de faire le calcul des deux estimations et de prendre la différence, vous pouvez souvent en déduire une formule. Ensuite, les contours d’influence constante vous indiquent la direction extrême par rapport à l’estimation de ce paramètre et vous indiquent donc où, dans l’espace à n dimensions, rechercher la valeur aberrante.

Pour plus d'informations, vous pouvez consulter mon article de 1983 paru dans l'American Journal of Mathematical Sciences and Management Sciences intitulé "La fonction d'influence et son application à la validation des données". Lors de la validation des données, nous voulions rechercher les valeurs aberrantes qui affectaient l'utilisation prévue des données. Mon sentiment est que vous devriez porter votre attention sur les valeurs aberrantes qui affectent grandement les paramètres que vous souhaitez estimer et ne pas vous préoccuper autant des autres qui ne le font pas.

Michael Chernick
la source
1
+1 Très bonne idée, en particulier pour la cohérence des objectifs de l'analyse.
whuber
Une idée similaire est Randans Sample Consensus ( RANSAC ).
GeoMatt22
8

Il peut s'agir d'un dépassement, mais vous pouvez former une forêt aléatoire non supervisée sur les données et utiliser la mesure de proximité de l'objet pour détecter les valeurs éloignées. Plus de détails ici .


la source
4
Découvrez la fonction des valeurs aberrantes dans le paquet randomForest lib.stat.cmu.edu/R/CRAN/web/packages/randomForest/…
George Dontas le
7

Pour les dimensions modérées, comme 3, une technique de validation croisée du noyau, suggérée par ailleurs, semble raisonnable et constitue la meilleure solution que je puisse trouver.

Pour les dimensions supérieures, je ne suis pas sûr que le problème puisse être résolu. il atterrit assez carrément dans un territoire de «malédiction de dimensionnalité». Le problème est que les fonctions de distance ont tendance à converger très rapidement vers de très grandes valeurs à mesure que vous augmentez la dimensionnalité, y compris les distances dérivées de distributions. Si vous définissez une valeur aberrante comme "un point avec une fonction de distance relativement grande par rapport aux autres", et que toutes vos fonctions de distance commencent à converger car vous vous trouvez dans un espace de grande dimension, eh bien, vous avez des problèmes. .

Sans une sorte d’hypothèse de répartition qui vous permettra de le transformer en problème de classification probabiliste, ou du moins une rotation qui vous permettra de séparer votre espace en "dimensions de bruit" et "dimensions informatives", je pense que la géométrie des espaces de grande dimension va interdire toute identification - ou du moins robuste - des valeurs aberrantes.

Riches
la source
La procédure que j'ai déjà donnée peut être appliquée en grande dimension, comme je l'ai dit, en utilisant une hypothèse gaussienne. Si la dimension est vraiment grande par rapport à la taille de l’échantillon (c.-à-d. P >> n), vous pouvez alors faire une hypothèse de rareté (supposez que les paramètres de votre distribution gaussienne se situent dans un espace de petite dimension, par exemple) et utilisez une procédure d’estimation par seuillage. pour l'estimation des paramètres ...
robin girard
1
Très perspicace que la malédiction de la dimensionnalité exclut une solution sans hypothèses de distribution (sauf si vous avez simplement une quantité de données insensée ou si la dimension est petite)
John Robertson
6

Je ne suis pas sûr de comprendre ce que vous voulez dire lorsque vous dites que vous ne pensez pas à un problème de régression mais à des "données multivariées vraies". Ma réponse initiale serait de calculer la distance de Mahalanobis car elle n’exige pas que vous spécifiiez un IV ou un DV particulier, mais elle est essentiellement liée à une statistique de levier.

russellpierce
la source
Oui, je pourrais calculer la distance de Mahalanobis de chaque observation à partir de la moyenne des données. Mais les observations les plus éloignées de la moyenne ne sont pas nécessairement des valeurs aberrantes multivariées. Pensez à un diagramme de dispersion à deux variables avec une corrélation élevée. Une valeur aberrante peut se trouver en dehors du nuage de points principal mais pas très loin de la moyenne.
Rob Hyndman
4

Ma première réponse serait que si vous pouvez effectuer une régression multivariée sur les données, utilisez les résidus de cette régression pour identifier les valeurs aberrantes. (Je sais que vous avez dit que ce n'était pas un problème de régression, alors cela pourrait ne pas vous aider, désolé!)

Je copie une partie de ceci d'une question de Stackoverflow, à laquelle j'ai déjà répondu, qui contient quelques exemples de code R

Nous allons d’abord créer des données, puis les altérer avec une valeur aberrante;

> 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 

Il est souvent plus utile d’examiner graphiquement les données (votre cerveau est beaucoup mieux à même de détecter les valeurs aberrantes que les calculs).

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

Vous pouvez ensuite utiliser les statistiques pour calculer les valeurs critiques critiques, ici en utilisant le test de Lund (voir Lund, RE 1975, "Tableaux pour un test approximatif des valeurs éloignées dans les modèles linéaires", Technometrics, vol. 17, n ° 4, p. 473 -476. Et Prescott, P. 1975, "Un test approximatif des valeurs aberrantes dans les modèles linéaires", Technometrics, vol 17, n ° 1, pages 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 

Évidemment, il existe d’autres tests que le test de Lund (Grubbs me vient à l’esprit), mais je ne suis pas sûr de ceux qui conviennent le mieux aux données à plusieurs variables.

PaulHurleyuk
la source
1
Les boîtes à moustaches univariées sont utiles pour repérer les valeurs aberrantes univariées. Mais ils peuvent complètement rater des valeurs aberrantes multivariées. L'idée de régression est acceptable si j'avais un Y et un groupe de variables X. Mais comme je l'ai dit dans la question, il n'y a pas de Y, la régression est inappropriée.
Rob Hyndman
@RobHyndman - on peut corriger Y (en faire une constante) et essayer de modéliser une régression multiple sans interception . Cela fonctionne à merveille dans la pratique. En substance, cela transforme un problème fondamentalement non supervisé, qu’est une détection d’anomalie typique, en un problème supervisé.
arielf
@arielf Intéressant. Avez-vous une référence pour cela?
Rob Hyndman
@RobHyndman n'est pas un article académique, mais peut-être mieux, vous pouvez l'essayer vous-même. Voir ma page github sur vw-top-errors@ goo.gl/l7SLlB (notez que les exemples ici ont un Y, mais j'ai utilisé la même technique, avec beaucoup de succès sur les problèmes non supervisés aussi en corrigeant Y.)
2016
1

L'une des réponses ci-dessus concerne les distances de mahalanobis .... un pas supplémentaire peut-être plus loin et le calcul d'intervalles de confiance simultanés aiderait à détecter les valeurs aberrantes!

Mojo
la source