2010-12-10 35 views
1

J'ai un ensemble de valeurs en continu que je voudrais analyser pour des changements brusques et éventuellement ignorer les pics/le bruit dans les données. J'ai examiné les moyennes mobiles, les moyennes winsorisées et plusieurs autres solutions possibles, y compris les contrôleurs PID dans les systèmes de contrôle, la bibliothèque colt et numpy pour obtenir des indices sur la façon de résoudre ce problème.Détection de changement dans les données de diffusion en continu

Un exemple de jeu de données est ci-dessous.
22,0, 22,0, 22,0, 22,0 , 20,8806130178211, 20,8806130178211, 20,8806130178211, 20,8806130178211, 20,8806130178211, 20,8806130178211, 21,840329667841555, 21,840329667841555, 20,8806130178211, 20,8806130178211, 20.8806130178211,20.8806130178211, 20,8806130178211, 20,8806130178211, 21,840329667841555, 21,840329667841555, 21,840329667841555, 21.840329667841555, 22.80350850198276

Idéalement, je voudrais détecter que les valeurs changent dans les sections 1, 3 et 4 en gras. La deuxième section peut être traitée comme une pointe.

Vous cherchez une solution mathématique/algorithmique élégante qui fonctionne comme une moyenne mobile en ce sens que si les données ne changent pas pendant longtemps (une fenêtre qui est dynamique), elle ignorera les anciennes données. Dans le cas des données ci-dessus, les valeurs initiales de 22 sont ignorées lorsqu'on considère la fenêtre de données suivante qui est 20.8806130178211. La solution (programme/classe) doit pouvoir accepter une nouvelle valeur d'entrée de données (22.0232) et renvoyer une valeur vraie ou fausse si elle calcule que la valeur est dans la plage acceptable, c'est-à-dire qu'elle n'a pas beaucoup changé .

Merci
SFK

Répondre

1

Peut-être une meilleure approche que de regarder la moyenne mobile de vos données est à la recherche à la moyenne mobile du changement dans vos données. Vous pouvez donc prendre la première différence de votre ensemble de données et identifier les valeurs supérieures à un certain seuil.