Próbuję zautomatyzować wykrywanie wartości odstających w szeregach czasowych i użyłem modyfikacji rozwiązania zaproponowanego przez Roba Hyndmana tutaj .
Powiedzmy, że mierzę codzienne wizyty na stronie z różnych krajów. W niektórych krajach, w których codzienne wizyty to kilka setek lub tysięcy, moja metoda wydaje się działać rozsądnie.
Jednak w przypadkach, gdy kraj prowadzi tylko 1 lub 2 wizyty dziennie, limity algorytmu są bardzo wąskie (np. 1 ± 0,001) i dlatego te 2 wizyty są uważane za wartości odstające. Jak automatycznie wykryć takie przypadki i jak je traktować, aby zidentyfikować wartości odstające? Nie chciałbym ustawiać ręcznego progu, powiedzmy, 100 wizyt dziennie.
Dziękuję Ci!
Odpowiedzi:
Nie oczekuj wiele za małe, dyskretne liczby. Przejście od 1 do 2 wizyt to wzrost o 100%, a przejście od 0 do 1 wizyt to nieskończony wzrost. Na niskich poziomach możesz mieć do czynienia z modelami o zerowym napełnieniu i tam też może być bardzo głośno.
Z mojego doświadczenia wynika, że liczenie danych przy użyciu kombinacji dużych i małych liczb, takich jak ta, powoduje dwa problemy z małymi liczbami: 1) są zbyt gruboziarniste, aby zrobić z nimi wiele, 2) są generowane przez różne procesy. (Pomyśl o małym wiejskim urzędzie pocztowym a dużym urzędzie pocztowym). Musisz więc przynajmniej podzielić swoje modelowanie na dwa: rób to, co z powodzeniem robisz dla większych liczb, i rób coś innego - grubsze i bardziej przybliżone - z małymi liczbami. Ale nie oczekuj wiele z tych małych liczb.
Dobrą wiadomością jest to, że duże liczby z definicji obejmują więcej transakcji, więc lepszy model obejmuje więcej danych, nawet jeśli nie obejmuje większości twoich witryn.
(Mówię, że „modelowanie” jest ogólne, ale oczywiście wykrywanie wartości odstających zakłada przyjęcie określonego modelu i znajdowanie punktów, które są bardzo mało prawdopodobne przy założeniach tego modelu).
źródło
Każda wartość z szeregów czasowych jest próbką z rozkładu prawdopodobieństwa. Najpierw musisz dowiedzieć się, jaki jest rozkład prawdopodobieństwa, a następnie zdefiniować, co oznacza słowo rzadkie w ramach tego rozkładu.
Oblicz więc empiryczny cdf i oblicz 95% przedział ufności. Ilekroć zdarzyło się coś poza tym regionem, z definicji wiesz, że musi to być rzadkie wydarzenie.
źródło
Jedną rzeczą jest wykrycie wartości odstającej na określonym poziomie ufności, a jeszcze inną - umieszczenie drugiej specyfikacji, która jeszcze bardziej ograniczy akceptację wartości odstającej. Kiedyś zadano mi następujące pytanie: „Czy AUTOBOX może wykryć średnie przesunięcie jednostek xx na wcześniej określonym poziomie ufności”. Zasadniczo wymagano podwójnego testu. AUTOBOX to oprogramowanie, które pomogłem opracować, które może okazać się opłacalne, ponieważ żadne wolne oprogramowanie nie wdrożyło tego podwójnego testu.
Dzięki Nick: Użyłem przesunięcia poziomu jako szczególnego przykładu „wartości odstającej” lub ogólnie zidentyfikowanego empirycznie wpływu deterministycznego. Inne formy „wartości odstających” to impulsy, impulsy sezonowe i trendy czasu lokalnego ORAZ poszczególne kombinacje, takie jak przejściowa zmiana na nowy poziom. Chodziło przede wszystkim o to, że mogą istnieć dwie hipotezy odzwierciedlające znaczenie statystyczne i znaczenie w świecie rzeczywistym. Klient, który pierwotnie zwrócił moją uwagę na ten problem, był zainteresowany obydwoma.
źródło
Masz ten problem, ponieważ Twoje dane są dalekie od normalnej dystrybucji. Jeśli rozkład jest wysoce asymetryczny, z nierównościami, garbami lub zbyt długimi / krótkimi ogonami, napotkasz problemy. Dobrym pomysłem jest zastosowanie transformacji takiej jak Box Cox lub Yeo-Johnson przed użyciem tej metody. W swoim przykładzie, jeśli użyjesz F (x) = log (1 + x), unikniesz problemu różnej wielkości i możesz dokonać konwersji z powrotem za pomocą: exp (z) -1
Istnieje kilka procedur, za pomocą których można automatycznie znaleźć dobrą lambda dla transformacji Box-Coxa. Ja osobiście używam mediany wszystkich metod funkcji boxcoxnc z pakietu AID w R. Jeśli twoje dane nie są ściśle pozytywne, musisz dodać 1 lub inną liczbę dodatnią przed użyciem.
źródło