J'ai un vecteur et je veux y détecter des valeurs aberrantes.
La figure suivante montre la distribution du vecteur. Les points rouges sont des valeurs aberrantes. Les points bleus sont des points normaux. Les points jaunes sont également normaux.
J'ai besoin d'une méthode de détection des valeurs aberrantes (une méthode non paramétrique) qui peut simplement détecter les points rouges comme des valeurs aberrantes. J'ai testé certaines méthodes comme l'IQR, l'écart type mais elles détectent également les points jaunes comme des valeurs aberrantes.
Je sais qu'il est difficile de détecter uniquement le point rouge, mais je pense qu'il devrait y avoir un moyen (même une combinaison de méthodes) de résoudre ce problème.
Les points sont des lectures d'un capteur pour une journée. Mais les valeurs du capteur changent à cause de la reconfiguration du système (l'environnement n'est pas statique). L'époque des reconfigurations est inconnue. Les points bleus correspondent à la période précédant la reconfiguration. Les points jaunes sont pour après la reconfiguration ce qui provoque des écarts dans la distribution des lectures (mais sont normaux). Les points rouges sont le résultat d'une modification illégale des points jaunes. En d'autres termes, ce sont des anomalies qui doivent être détectées.
Je me demande si l'estimation de la fonction de lissage du noyau ('pdf', 'survivant', 'cdf', etc.) pourrait aider ou non. Quelqu'un pourrait-il m'aider sur ses principales fonctionnalités (ou autres méthodes de lissage) et sa justification à utiliser dans un contexte pour résoudre un problème?
Réponses:
Vous pouvez visualiser vos données comme une série chronologique où une mesure ordinaire produit une valeur très proche de la valeur précédente et un recalibrage produit une valeur avec une grande différence par rapport au prédécesseur.
Voici des exemples de données simulées basées sur une distribution normale avec trois moyennes différentes similaires à votre exemple.
En calculant la différence avec la valeur précédente (une sorte de dérivation), vous obtenez les données suivantes:
Mon interprétation de votre description est que vous tolérez le recalibrage (c'est-à-dire des points sur une plus grande distance de zéro, le rouge dans le diagramme), mais ils doivent échanger entre des valeurs positives et négatives (c'est-à-dire correspondant au passage de l'état bleu au jaune et retour).
Cela signifie que vous pouvez configurer une alarme en voyant un deuxième point rouge du côté négatif ou positif .
la source
Si vous utilisez la journalisation, vous pouvez utiliser une moyenne mobile qui se réinitialise si la configuration change. Cependant, cela aura la faiblesse d'avoir besoin d'au moins certaines données avant de pouvoir détecter une telle valeur aberrante.
Vos données sont plutôt "sympas" (pas trop de bruit). Je recommanderais de prendre la moyenne des 10-20 derniers points dans la même configuration. Si ces valeurs sont une sorte de quantité comptée, vous pouvez prendre une erreur de poisson pour des points de données individuels et calculer l'erreur en moyenne.
De combien de données historiques disposez-vous? Si vous en avez beaucoup, vous pouvez l'utiliser pour affiner votre taux d'alarme de manière à obtenir un ratio acceptable de toutes les valeurs aberrantes réelles tout en obtenant un nombre minimal de fausses alertes. Ce qui est acceptable dépend du problème spécifique. (Coût des faux positifs ou valeurs aberrantes non détectées et leur abondance).
la source
Permet d'illustrer l'approche proposée dans l' autre réponse avec un exemple simple
Obtenir des données
Nous simulerons les données avec sept morceaux produits avec une distribution normale avec des moyennes différentes.
Ceci est important car il nous permet de bien distinguer les groupes et de détecter simplement les points de rupture. Cette réponse utilise une approche de seuil élémentaire, un moyen plus avancé pourrait être nécessaire pour vos données réelles.
Dérivez les points de rupture
Avec une simple différence par rapport au point précédent,
lag(y)
nous obtenons les valeurs aberrantes. Ils sont classés en utilisant un seuil.Changement de classification des comportements
Sur la base des règles que vous avez décrites, les points de rupture sont classés comme
OK
etproblem
.La règle stipule que deux changements dans la même direction ne sont pas autorisés. Le deuxième mouvement dans la direction previos est considéré comme un problème.
Vous devrez peut-être ajuster cette interprétation simple si votre logik est plus avancé.
Présentation
Enfin, vous projetez les valeurs aberrantes reconnues aux données d'origine
la source