Détection des valeurs aberrantes dans les séries chronologiques: comment réduire les faux positifs?

11

J'essaie d'automatiser la détection des valeurs aberrantes dans les séries chronologiques et j'ai utilisé une modification de la solution proposée par Rob Hyndman ici .

Disons que je mesure les visites quotidiennes d'un site Web de divers pays. Pour certains pays où les visites quotidiennes sont de quelques centaines ou milliers, ma méthode semble fonctionner raisonnablement.

Cependant, dans les cas où un pays ne mène qu'à 1 ou 2 visites par jour, les limites de l'algorithme sont très étroites (par exemple 1 ± 0,001) et donc les 2 visites sont considérées comme aberrantes. Comment pourrais-je détecter automatiquement de tels cas et comment les traiter pour identifier les valeurs aberrantes? Je ne voudrais pas fixer un seuil manuel de, disons, 100 visites par jour.

Je vous remercie!

Stergios
la source
2
Un moyen naturel et simple qui pourrait résoudre votre problème - qui est dû (au moins en partie) à une variance très variable - consiste à appliquer une transformation stabilisatrice de variance, telle qu'une transformation Anscombe ou Freeman-Tukey , aux données avant de chercher des valeurs aberrantes.
whuber

Réponses:

3

Ne vous attendez pas à grand-chose pour les petits comptes discrets. Passer de 1 à 2 visites est une augmentation de 100% et passer de 0 à 1 visite est une augmentation infinie. À de faibles niveaux, vous pouvez avoir affaire à des modèles gonflés à zéro , et cela peut également être très bruyant là-bas.

D'après mon expérience, les données de comptage avec un mélange de grands et de petits nombres comme celui-ci entraînent deux problèmes avec vos petits nombres: 1) ils sont trop grossiers pour en faire beaucoup, 2) ils sont générés par des processus différents. (Pensez à un petit bureau de poste rural par rapport à un bureau de poste d'une grande ville). Vous devez donc au moins diviser votre modélisation en deux: faites ce que vous faites avec succès pour les plus grands comptes, et faites quelque chose de différent - plus grossier et plus approximatif - avec de petits comptes. Mais ne vous attendez pas à beaucoup de petits comptes.

La bonne nouvelle est que les grands comptes, par définition, incluent plus de vos transactions, donc votre meilleur modèle couvre plus de données, même s'il ne couvre pas la plupart de vos sites.

(Je dis que la «modélisation» est générale, mais bien sûr, la détection des valeurs aberrantes suppose un modèle particulier et trouve des points qui sont très peu probables avec les hypothèses de ce modèle.)

Wayne
la source
1

Chaque valeur de votre série chronologique est un échantillon d'une distribution de probabilité. Vous devez d'abord trouver quelle est la distribution de probabilité, puis définir ce que le mot rare signifie dans cette distribution.

Donc, calculez le cdf empirique et calculez l'intervalle de confiance à 95%. Chaque fois que quelque chose en dehors de cette région s'est produit, vous savez par définition que ce doit être un événement rare.

actuaire
la source
0

C'est une chose de détecter une valeur aberrante à un niveau de confiance particulier et encore une autre de placer une deuxième spécification qui restreindrait davantage l'acceptation de la valeur aberrante. On m'a posé une fois la question suivante: "AUTOBOX peut-il détecter un décalage moyen de xx unités à un niveau de confiance prédéfini". Ce qui était essentiellement requis, c'était un double test. AUTOBOX est un logiciel que j'ai aidé à développer et que vous pourriez trouver rentable car aucun logiciel gratuit n'a implémenté ce double test.

Merci Nick: J'utilisais un changement de niveau comme exemple particulier d'une "valeur aberrante" ou en général l'impact déterministe identifié empiriquement. Les autres formes de «valeurs aberrantes» sont les légumineuses, les légumineuses saisonnières et les tendances de l'heure locale ET les combinaisons particulières telles qu'un changement transitoire à un nouveau niveau. Le point principal était qu'il peut y avoir deux hypothèses en jeu reflétant la signification statistique et la signification du monde réel. Le client qui avait à l'origine porté ce problème à mon attention était intéressé par les deux.

IrishStat
la source
Une valeur aberrante n'implique pas nécessairement un changement moyen ... En fait, un changement progressif ou progressif entre des régimes avec des moyens différents ne doit pas du tout entraîner des valeurs aberrantes. Vous le savez très bien, mais ce que je pense que cela implique, c'est qu'il serait très utile aux autres de développer votre réponse.
Nick Cox
Merci à vous deux. Je m'intéresse à la signification du monde réel. Après avoir identifié une valeur aberrante, je pondère sa signification avec, disons, la proportion de visites par rapport au nombre total de visites pour obtenir sa signification finale. Bien que cette proportion soit vraiment faible dans le cas de 2 visites, puisque les valeurs attendues sont de 1 ± 0,001, la «distance» du point réel par rapport aux limites attendues est très élevée (par exemple 2 / 0,002 où 0,002 est le «iqr») . Donc, le problème devient finalement très important. Des idées?
Stergios
Je signalerais que l'utilisation étendue des «valeurs aberrantes» ici est beaucoup plus large que le sens généreux de quelque chose d'extrême qui est commun dans de nombreuses littératures. Les lecteurs chevronnés sauront que @IrishStat s'en tient à son forte analyse des séries chronologiques.
Nick Cox
0

Vous rencontrez ce problème car vos données sont loin d'une distribution normale. Si la distribution est très asymétrique, avec des bosses, des bosses ou des queues trop longues / courtes, vous rencontrerez des problèmes. Une bonne idée est d'appliquer une transformation comme Box Cox ou Yeo-Johnson avant d'utiliser votre méthode. Dans votre exemple, si vous utilisez F (x) = log (1 + x), vous évitez le problème de magnitude différente et vous pouvez reconvertir en utilisant: exp (z) -1

Il existe plusieurs procédures que vous pouvez utiliser pour trouver automatiquement un bon lambda pour la transformation Box-Cox. J'utilise personnellement la médiane de toutes les méthodes de la fonction boxcoxnc du package AID dans R. Si vos données ne sont pas strictement positives, vous devrez ajouter 1 ou un autre nombre positif avant de l'utiliser.

Acoustesh
la source