Jak znaleźć, kiedy wykres osiąga szczyt i płaskowyże?

9

Może to zabrzmieć bardzo prosto, ale mam ten problem: mam kolejkę danych o rozmiarze okna 300. Nowe dane są dodawane z jednego końca, stare wartości są usuwane z drugiego końca.

Oczekuję, że dane w kolejce pozostaną mniej więcej spójne, np .: 10,12,15,10,20, a następnie zaczną gwałtownie rosnąć: 15,10,20,22,25,28,28,30,32 ... aż do około 150. Tam dane mogą się nieco wahać, a następnie spadną z podobnym nachyleniem (120,118,116,115 ...) aż do około 20.

Próbuję programowo określić punkt zwrotny w tej serii danych, ale mój kod wykrywa szczyty częściej niż chciałbym. Jak mogę określić, kiedy wykres rośnie, kiedy osiąga ostateczny punkt zwrotny i kiedy zaczyna spadać? Czy powinienem spróbować spojrzeć na tempo zmian?

Alex Stone
źródło
Jeśli masz rozsądne wyczucie nachylenia i wysokości szczytu, czy możesz wziąć pod uwagę zarówno wysokość, jak i czas wspinania się, a także aktualne nachylenie? Ile masz wcześniejszych danych na temat pików i czy możesz użyć ich do dopasowania modelu?
Karl
2
Niezależnie od metody będziesz musiał poprawnie zdefiniować, co jest szczytem, ​​a co płaskowyżem. Czy dwie kolejne „wysokie” wartości są szczytem czy płaskowyżem? A może pięć? Niektóre metody mogą nie wymagać takich informacji, ale są one ukryte za kulisami. Jak zawsze sprowadza się to do prawidłowego zdefiniowania problemu i optymalizacji jego parametrów (i / lub algorytmu).
Nick Sabbe

Odpowiedzi:

2

Jeśli wiesz, że jest to dokładnie taki wzór, jakiego możesz się spodziewać, możesz poszukać tego dokładnego wzoru, ale wtedy przegapisz inne wzory. Więc. Jeśli wiesz, że szczyt będzie wynosił 150, możesz poszukać 2, 3 lub 4 lub (jak wiele) kolejnych wartości 150. Ale mówisz „około” - jak duże jest „około”? Być może szczyt jest zdefiniowany jako „3 kolejne wartości powyżej 130”, a może „3 z 5 kolejnych wartości powyżej 140”. To do ciebie należy decyzja.

Z drugiej strony, jeśli szukasz jakiegoś ogólnego programu do wykrywania szczytów - to zostało sprawdzone. Istnieje wiele metod wygładzania (np. Less, splajny różnego rodzaju, średnie ruchome itp.). Nie jest to dziedzina, w której jestem ekspertem, ale jest na ten temat mnóstwo literatury.

Peter Flom
źródło
4

Spójrz na SiZer (wspaniałe przejścia przez ZERO ... lub zbocza, nie pamiętam), chociaż zapewne jest to bardziej narzędzie przekrojowe niż szeregowe. Chodzi o to, aby wygładzić dane w różnych szerokościach pasma (różniących się o około trzy rzędy wielkości) i zastosować lokalne testy, aby sprawdzić, czy nachylenie lokalnej regresji jest znacząco dodatnie czy ujemne (lub niezdecydowane). Daje przekonujący obraz, który pomoże ci określić, które funkcje są dostępne. (Dziwię się, że nie ma implementacji R, tylko Matlab.)

StasK
źródło