Ich versuche, die Erkennung von Ausreißern in Zeitreihen zu automatisieren, und habe eine Modifikation der hier von Rob Hyndman vorgeschlagenen Lösung verwendet .
Angenommen, ich messe die täglichen Besuche einer Website aus verschiedenen Ländern. In einigen Ländern, in denen die täglichen Besuche einige Hundert oder Tausende betragen, scheint meine Methode vernünftig zu funktionieren.
In Fällen, in denen ein Land nur zu 1 oder 2 Besuchen pro Tag führt, sind die Grenzen des Algorithmus jedoch sehr eng (z. B. 1 ± 0,001), und daher werden die 2 Besuche als Ausreißer betrachtet. Wie kann ich solche Fälle automatisch erkennen und wie kann ich sie behandeln, um Ausreißer zu identifizieren? Ich möchte keinen manuellen Schwellenwert von beispielsweise 100 Besuchen pro Tag festlegen.
Vielen Dank!
Antworten:
Erwarten Sie nicht viel für kleine, diskrete Zählungen. Von 1 auf 2 Besuche zu gehen ist eine 100% ige Zunahme, und von 0 auf 1 Besuche zu gehen ist eine unendliche Zunahme. Bei niedrigen Pegeln haben Sie es möglicherweise mit Modellen ohne Luftdruck zu tun , und es kann auch dort unten sehr laut sein.
Nach meiner Erfahrung führt das Zählen von Daten mit einer Mischung aus großen und kleinen Zählungen wie dieser zu zwei Problemen mit Ihren kleinen Zählungen: 1) Sie sind zu grob, um viel damit zu tun, 2) sie werden durch unterschiedliche Prozesse erzeugt. (Denken Sie an ein kleines, ländliches Postamt im Vergleich zu einem Großstadtpostamt). Sie müssen Ihre Modellierung also mindestens in zwei Teile aufteilen: Machen Sie das, was Sie erfolgreich für größere Zählungen tun, und machen Sie etwas anderes - gröber und näherungsweise - mit kleinen Zählungen. Aber erwarten Sie nicht viel von den kleinen Zahlen.
Die gute Nachricht ist, dass die großen Zahlen per Definition mehr Ihrer Transaktionen umfassen, sodass Ihr besseres Modell mehr Daten abdeckt, auch wenn es möglicherweise nicht die meisten Ihrer Websites abdeckt.
(Ich sage "Modellierung" als allgemein, aber natürlich setzt die Ausreißererkennung ein bestimmtes Modell voraus und findet Punkte, die mit den Annahmen dieses Modells höchst unwahrscheinlich sind.)
quelle
Jeder Wert aus Ihrer Zeitreihe ist eine Stichprobe aus einer Wahrscheinlichkeitsverteilung. Sie müssen zuerst die Wahrscheinlichkeitsverteilung ermitteln und dann definieren, was das Wort "selten" in dieser Verteilung bedeutet.
Berechnen Sie also das empirische PDF und das 95% -Konfidenzintervall. Wann immer etwas außerhalb dieser Region aufgetreten ist, wissen Sie per Definition, dass es ein seltenes Ereignis sein muss.
quelle
Es ist eine Sache, einen Ausreißer auf einem bestimmten Vertrauensniveau zu erkennen und eine andere, eine zweite Spezifikation zu platzieren, die die Akzeptanz des Ausreißers weiter einschränken würde. Mir wurde einmal die folgende Frage gestellt: "Kann AUTOBOX eine mittlere Verschiebung von xx Einheiten bei einem vorgegebenen Vertrauensniveau erkennen?". Im Wesentlichen war ein Doppeltest erforderlich. AUTOBOX ist eine Software, die ich mitentwickelt habe und die Sie möglicherweise als kostengünstig empfinden, da keine freie Software diesen Doppeltest implementiert hat.
Danke Nick: Ich habe eine Pegelverschiebung als besonderes Beispiel für einen "Ausreißer" oder allgemein die empirisch identifizierten deterministischen Auswirkungen verwendet. Andere Formen von "Ausreißern" sind Impulse, saisonale Impulse und lokale Zeittrends UND bestimmte Kombinationen wie ein vorübergehender Wechsel auf ein neues Niveau. Der Hauptpunkt war, dass es möglicherweise zwei Hypothesen gibt, die statistische Signifikanz und reale Signifikanz widerspiegeln. Der Kunde, der mich ursprünglich auf dieses Problem aufmerksam gemacht hatte, war an beiden interessiert.
quelle
Sie haben dieses Problem, weil Ihre Daten weit von einer normalen Verteilung entfernt sind. Wenn die Verteilung stark asymmetrisch ist, mit Unebenheiten, Buckeln oder zu langen / kurzen Schwänzen, treten Probleme auf. Eine gute Idee ist es, eine Transformation wie Box Cox oder Yeo-Johnson anzuwenden, bevor Sie Ihre Methode anwenden. Wenn Sie in Ihrem Beispiel F (x) = log (1 + x) verwenden, vermeiden Sie das Problem der unterschiedlichen Größe und können mit exp (z) -1 zurückkonvertieren
Es gibt verschiedene Verfahren, mit denen Sie automatisch ein gutes Lambda für die Box-Cox-Transformation finden können. Ich persönlich verwende den Median aller Methoden der boxcoxnc-Funktion aus dem AID-Paket in R. Wenn Ihre Daten nicht streng positiv sind, müssen Sie 1 oder eine andere positive Zahl hinzufügen, bevor Sie sie verwenden.
quelle