Détection des valeurs aberrantes dans de très petits ensembles


12

J'ai besoin d'obtenir une valeur aussi précise que possible pour la luminosité d'une source de lumière principalement stable étant donné douze valeurs de luminosité d'échantillon. Le capteur est imparfait, et la lumière peut parfois "scintiller" plus ou moins sombre, ce qui peut être ignoré, d'où mon besoin de détection des valeurs aberrantes (je pense?).

J'ai fait quelques lectures sur diverses approches ici et je ne peux pas décider de l'approche à suivre. Le nombre de valeurs aberrantes n'est jamais connu à l'avance et sera souvent nul. Le scintillement est généralement un très grand écart par rapport à la luminosité stable (suffisamment pour vraiment gâcher toute moyenne prise avec un gros présent), mais pas nécessairement.

Voici un échantillon de 12 mesures pour l'exhaustivité de la question:

295.5214, 277.7749, 274.6538, 272.5897, 271.0733, 292.5856, 282.0986, 275.0419, 273.084, 273.1783, 274.0317, 290.1837

Mon intuition est qu'il n'y a probablement pas de valeurs aberrantes dans cet ensemble particulier, bien que 292 et 295 semblent un peu élevés.

Donc, ma question est, quelle serait la meilleure approche ici? Je dois mentionner que les valeurs proviennent de la prise de la distance euclidienne des composants RG et B de la lumière à partir d'un point zéro (noir). Il serait difficile par programmation, mais possible, de revenir à ces valeurs si nécessaire. La distance euclidienne a été utilisée comme mesure de la "force globale" car je ne suis pas intéressé par la couleur, juste la force de la sortie. Cependant, il y a une chance raisonnable que les scintillements que j'ai mentionnés ont une composition RVB différente de la sortie habituelle.

Pour le moment, je joue avec une sorte de fonction qui se répétera jusqu'à ce qu'une adhésion stable aux mesures autorisées soit atteinte par:

  1. Trouver l'écart-type
  2. Tout mettre à l'extérieur, disons 2 SD dans une liste d'ignorance
  3. Recalculer la moyenne et l'écart-type avec la liste d'ignorance exclue
  4. Redécider qui ignorer en fonction de la nouvelle moyenne et de l'écart-type (évaluer les 12)
  5. Répétez jusqu'à stabilité.

Y a-t-il une valeur à cette approche?

Tous les commentaires sont acceptés avec reconnaissance!


Bien que cela soit douloureux, votre spéculation selon laquelle un scintillement pourrait avoir différents composants RVB (bien que parfois à une distance similaire du noir) mérite d'être poursuivie. Une autre option consiste à simplement utiliser la médiane au lieu de la moyenne, selon votre objectif.
Wayne

Réponses:


7

Les valeurs aberrantes dans les petits échantillons peuvent toujours être très difficiles à détecter. Dans la plupart des cas, en fait, je préconiserais que si vous estimez que vos données ne sont pas carrément corrompues, une valeur "aberrante" pourrait ne pas être problématique et son exclusion pourrait être déraisonnable. L'utilisation de techniques statistiques robustes sera probablement plus sensée et plus proche d'une solution intermédiaire. Vous avez un petit échantillon; essayez de faire en sorte que chaque point d'échantillonnage compte. :)

Concernant votre approche suggérée: je n'appliquerais pas à la hâte une hypothèse de normalité à vos données avec une règle 68-95-99.7 (comme vous semblez le faire avec votre règle heuristique 2SD). L'inégalité de Chebyshev suppose pour une fois une règle 75-88.9-93.8 qui est clairement moins rigide. D'autres « règles » existent également; la section Identification des valeurs aberrantes du lemme des valeurs aberrantes dans wikipedia contient un ensemble d'heuristiques.

En voici une autre: Une référence de livre gratuite que j'ai rencontrée à ce sujet, le e-Handbook of Statistical Methods du NIST / SEMATECH , présente l'idée suivante d'Iglewicz et Hoaglin (1993): Utiliser des scores modifiés tels que:ZM

Mi=.6745(xix~)/MAD

où est votre médiane et MAD est l' écart absolu médian de votre échantillon. Supposons ensuite que les valeurs absolues de supérieures à 3,5 sont des valeurs aberrantes potentielles. Il s'agit d'une suggestion semi-paramétrique (comme la plupart d'entre eux, le paramètre ici étant le ). Dans votre cas d'exemple, cela exclurait marginalement votre 295,5 mais conserverait clairement votre mesure 292,6 ... (Pour ce qui vaut, je n'exclurais aucune valeur de votre cas d'exemple.)x~M3.5

Encore une fois, étant donné que vous avez un très petit échantillon, si vous pensez que votre échantillon n'est pas manifestement corrompu (un humain de 9'4 "de hauteur), je vous conseillerais de ne pas exclure les données à la hâte. Vos" valeurs suspectes "pourraient être des données non corrompues; leur utilisation pourrait en fait aider plutôt que nuire à votre analyse.


1
Un petit point, mais qui pourrait très probablement mordre, surtout si votre documentation est lue ou citée négligemment: je déconseille fortement la notation pour la médiane étant donné son utilisation très courante pour la moyenne. Curieusement, ou non, aucune notation ne semble couramment utilisée pour la médiane, mais presque tout serait mieux que , par exemple med ou . x¯x¯x~
Nick Cox

1
+1 pour un fort accent sur la valeur des résumés robustes. Voir aussi d'autres discussions sur ce site.
Nick Cox

1
@NickCox: Bon point, je ne sais pas à quoi je pensais en premier lieu. Je l'ai changé maintenant. Merci pour la suggestion.
usεr11852


0

Pointez le premier - il peut être utile de revenir à la couleur RVB. Il est rarement bon de jeter des données, et l'ampleur du vecteur RVB n'est pas le seul moyen de représenter la luminosité - la luminosité perçue est différente, tout comme la valeur en HSV.

Mais en mettant cela de côté et en traitant les données dont vous disposez, avez-vous envisagé de former cela comme un problème de classification plutôt que de modélisation et de faire un apprentissage automatique? Vous avez une entrée, qui est un vecteur contenant 12 valeurs réelles (les lectures de luminosité). Vous avez une sortie, qui est un vecteur de 12 valeurs binaires (1 = inlier, 0 = outlier). Obtenez plusieurs jeux de lecture de luminosité et étiquetez-les vous-même à la main, en indiquant quelle lecture de luminosité dans chaque jeu est une valeur aberrante / aberrante. Quelque chose comme ça:

x1 = {212,0, 209,6, 211,5, , 213,0}, y1 = {1,0,1, , 1}

x2 = {208,1, 207,9, 211,2, , 208,2}, y2 = {1,1,0, , 1}

x3 = {223.4, 222.9, 222.8, , 223.0}, y3 = {1,1,1, , 1}

Ensuite, exécutez le tout à travers un classificateur d'une sorte:

  • Vous pouvez utiliser un classificateur unique qui génère 12 valeurs binaires différentes - un réseau de neurones vous permettrait de configurer cela assez facilement.
  • Ou, vous pouvez utiliser un classificateur binaire standard (par exemple SVMlite ) et former 12 modèles différents, un classifiant si chaque élément de la sortie est une valeur aberrante / aberrante.

Et tu as fini! Pas la peine de chercher à trouver la «règle» qui sépare les valeurs aberrantes des valeurs aberrantes vous-même. Obtenez simplement quelques ensembles de données qui semblent raisonnables et laissez la machine le faire pour vous :)

~~~

EDIT: Incidemment, votre méthode proposée, où vous ajustez itérativement un gaussien puis classifiez chaque échantillon plus de 2 écarts-types comme une valeur aberrante, ressemble beaucoup à un algorithme de maximisation des attentes. Quelque chose comme ça:

  • Une seule composante gaussienne (modélisation des inliers)
  • Un composant d'arrière-plan uniforme (les valeurs aberrantes)
  • Une certaine probabilité antérieure de chacun qui dépend de manière non évidente de la largeur du gaussien (la règle «classer à 2 écarts-types»).
  • Classification difficile à l'étape de l'attente.

Si vous suivez cette voie, il peut être utile de rechercher les algorithmes EM et de vérifier les hypothèses que vous construisez dans votre modèle.

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.