Pouvons-nous utiliser laisser une moyenne et l'écart-type pour révéler les valeurs aberrantes?


17

Supposons que j'ai des données normalement distribuées. Pour chaque élément des données, je veux vérifier combien de SD il est éloigné de la moyenne. Il peut y avoir une valeur aberrante dans les données (probablement une seule, mais peut-être aussi deux ou trois) ou non, mais cette valeur aberrante est essentiellement ce que je recherche. Est-il judicieux d'exclure temporairement l'élément que je regarde actuellement du calcul de la moyenne et de l'écart-type? Je pense que si elle est proche de la moyenne, elle n'a aucun impact. S'il s'agit d'une valeur aberrante, elle pourrait biaiser le calcul de la moyenne et de l'écart-type et réduire la probabilité qu'elle soit détectée. Je ne suis pas statisticien, donc toute aide est appréciée!


7
Il est parfaitement logique et constitue la base de nombreuses techniques de détection des valeurs aberrantes. Mais plutôt que d'inventer votre propre méthode, qui pourrait ou non fonctionner (et cette dernière est beaucoup plus probable même avec des méthodes nouvellement inventées par les statisticiens, c'est pourquoi elles nécessitent une étude approfondie), pourquoi ne pas en utiliser une qui a été théoriquement vérifié et testé empiriquement?
whuber

Merci d'avoir fait remarquer cela. Je vais rechercher ces techniques et voir si elles fonctionnent bien sur mes données!
Oliver

1
Consultez cette page sur les diagnostics de suppression de régression dans R: stat.ethz.ch/R-manual/R-patched/library/stats/html/…
Ben Ogorek

.... Et cette réponse pour illustrer pourquoi on ne peut pas compter sur eux pour trouver plus d'une seule valeur aberrante.
user603

Grandes réflexions ci-dessus sur l'idée de signaler les valeurs aberrantes. Il y a quelque temps, j'avais écrit un article sur l'idée de filtres passe-perte sur les anomalies de signalisation. J'espère que cela aidera à étendre l'idée présentée ci-dessus. Lien vers l'article: datascience.com/blog/python-anomaly-detection
Pramit

Réponses:


25

Cela peut sembler contre-intuitif, mais utiliser l'approche que vous décrivez n'a pas de sens (pour reprendre votre formulation, je préfère écrire "peut conduire à des résultats très différents de ceux prévus") et il ne faut jamais le faire: les risques de cela ne fonctionne pas sont conséquentes et en outre, il existe une alternative plus simple, beaucoup plus sûre et mieux établie disponible sans frais supplémentaires.

Premièrement, il est vrai que s'il y a une seule valeur aberrante, vous la trouverez finalement en utilisant la procédure que vous proposez. Mais, en général (lorsqu'il peut y avoir plus d'une seule valeur aberrante dans les données), l'algorithme que vous suggérez se décompose complètement, dans le sens de vous conduire potentiellement à rejeter un bon point de données comme une valeur aberrante ou à garder les valeurs aberrantes comme de bons points de données avec des conséquences potentiellement catastrophiques.

Ci-dessous, je donne un exemple numérique simple où la règle que vous proposez tombe en panne, puis je propose une alternative beaucoup plus sûre et plus établie, mais avant cela, j'expliquerai a) ce qui ne va pas avec la méthode que vous proposez et b) ce qui est généralement préféré alternative à elle est.

En substance, vous ne pouvez pas utiliser la distance entre une observation et la moyenne et l'écart-type de vos données pour détecter de manière fiable les valeurs aberrantes, car les estimations que vous utilisez (moyenne et écart-type de sortie) sont toujours susceptibles d'être tirées vers le reste. valeurs aberrantes: c'est ce qu'on appelle l'effet de masquage.

En résumé, une façon simple de détecter de façon fiable les valeurs aberrantes consiste à utiliser l'idée générale que vous avez suggérée (distance par rapport à l'estimation de l'emplacement et de l'échelle), mais en remplaçant les estimateurs que vous avez utilisés (en omettant une moyenne, sd) par des estimateurs robustes, c'est-à-dire des estimations conçu pour être beaucoup moins susceptible d'être influencé par des valeurs aberrantes.

Considérez cet exemple, où j'ajoute 3 valeurs aberrantes à 47 observations authentiques tirées d'un 0,1 normal:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

Le code ci-dessous calcule l'indice d'extériorité sur la base de la moyenne et de l'écart-type (un par exemple l'approche que vous proposez).

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

et ce code produit l'intrigue que vous voyez ci-dessous.

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

L'image 1 illustre la valeur de votre indice de périphérie en fonction de la valeur des observations (le plus éloigné des valeurs aberrantes est en dehors de la plage de ce graphique, mais les deux autres sont représentés par des points rouges). Comme vous pouvez le voir, à l'exception du plus extrême, un indice de périphérie construit comme vous le suggérez ne révélerait pas les valeurs aberrantes: en effet, les deuxième et troisième valeurs aberrantes (plus douces) ont désormais même une valeur (sur votre indice de périphérie) plus petite que toutesles observations authentiques! ... Sous l'approche que vous proposez, on garderait ces deux valeurs extrêmes dans l'ensemble des observations authentiques, vous amenant à utiliser les 49 observations restantes comme si elles provenaient du même processus homogène, vous donnant une finale estimation de la moyenne et du sd sur la base de ces 49 points de données de 0,45 et 2,32, une très mauvaise description de l'une ou l'autre partie de votre échantillon!

image2

XjeX

O(Xje,X)=|Xje-med(X)|furieux(X)

med(X)Xfurieux(X)

Dans R, ce deuxième indice de périphérie peut être calculé comme:

out_2 <- abs( x-median(x) )/mad(x)

et tracé (comme précédemment) en utilisant:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

image2

L'image 2 trace la valeur de cet autre indice d'éloignement pour le même ensemble de données. Comme vous pouvez le voir, les trois valeurs aberrantes sont maintenant clairement révélées comme telles. De plus, cette règle de détection des valeurs aberrantes a des propriétés statistiques établies. Cela conduit, entre autres, à des règles de coupure utilisables. Par exemple, si la partie authentique des données peut être supposée provenir d'une distribution symétrique avec un second moment fini, vous pouvez rejeter tous les points de données pour lesquels

|Xje-med(X)|furieux(X)>3,5

comme des valeurs aberrantes. Dans l'exemple ci-dessus, l'application de cette règle vous conduirait à signaler correctement les observations 1, 2 et 3. Si vous les rejetez, la moyenne et le sd des observations restantes sont de 0,021 et 0,93 réceptivement, une bien meilleure description de la partie authentique de l'échantillon. !


2
+1 en dépit de la première phrase, qui vous contredirai immédiatement (la proposition de l'OP ne font sens quand au plus une valeur aberrante suppose, votre objection concerne des problèmes avec cette procédure lorsque cette hypothèse est violée).
whuber

1
Je vous remercie. En attendant, j'ai supprimé mon commentaire précédent, prévoyant qu'il deviendra obsolète après vos modifications.
whuber

3
Le phénomène où plusieurs valeurs aberrantes rendent aveugle la détection d'une seule valeur aberrante est souvent appelé masquage . Cela peut aider les utilisateurs à trouver plus d'informations sur le problème.
Glen_b -Reinstate Monica

1
@ user603 Beau travail de création d'un scénario illustratif mais je pense que vous jetez le bébé avec l'eau du bain. Les diagnostics de suppression de régression ne sont pas parfaits mais ils sont largement applicables et ont résisté à l'épreuve du temps. Prendre la médiane est bien, mais je me demande comment vous pourriez étendre votre approche à des modèles plus complexes basés sur les probabilités.
Ben Ogorek

2
+6, c'est une très bonne réponse - clairement et complètement expliquée, illustrée par du code, des chiffres et des formules. J'ai légèrement modifié la mise en forme du code pour le rendre un peu plus facile à lire. Si vous ne l'aimez pas, faites-le revenir en arrière avec mes excuses.
gung - Rétablir Monica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.