Inne podejście (więcej słów, mniej kodu), które może pomóc:
Lokalizacje lokalnych maksimów i minimów są również lokalizacjami przejść przez zero pierwszej pochodnej. Na ogół znacznie łatwiej jest znaleźć przejście przez zero niż bezpośrednio znaleźć lokalne maksima i minima.
Niestety, pierwsza pochodna ma tendencję do „wzmacniania” szumu, więc gdy w oryginalnych danych obecny jest znaczny szum, pierwszą pochodną najlepiej jest zastosować dopiero po zastosowaniu pewnego stopnia wygładzenia oryginalnych danych.
Ponieważ wygładzanie jest, w najprostszym sensie, filtrem dolnoprzepustowym, wygładzanie jest często najlepsze (cóż, najłatwiej) przy użyciu jądra splotu, a "kształtowanie" tego jądra może zapewnić zaskakującą ilość możliwości zachowania / ulepszenia funkcji . Proces znajdowania optymalnego jądra można zautomatyzować za pomocą różnych środków, ale najlepszym może być zwykła brutalna siła (dużo szybka do znalezienia małych jąder). Dobre jądro będzie (zgodnie z przeznaczeniem) znacznie zniekształcić oryginalne dane, ale NIE wpłynie to na lokalizację interesujących nas szczytów / dolin.
Na szczęście dość często odpowiednie jądro można utworzyć za pomocą prostego pliku SWAG („wykształcone przypuszczenie”). Szerokość jądra wygładzającego powinna być nieco szersza niż najszerszy oczekiwany „interesujący” szczyt w oryginalnych danych, a jego kształt będzie przypominał ten pik (falka o pojedynczej skali). Dla jąder zachowujących średnią (czym powinien być każdy dobry filtr wygładzający), suma elementów jądra powinna być dokładnie równa 1,00, a jądro powinno być symetryczne względem swojego środka (co oznacza, że będzie miało nieparzystą liczbę elementów.
Biorąc pod uwagę optymalne jądro wygładzające (lub niewielką liczbę jąder zoptymalizowanych pod kątem różnej zawartości danych), stopień wygładzenia staje się współczynnikiem skalującym („zysk”) jądra splotu.
Określenie „prawidłowego” (optymalnego) stopnia wygładzenia (wzmocnienia jądra splotu) można nawet zautomatyzować: Porównaj odchylenie standardowe danych pierwszej pochodnej z odchyleniem standardowym wygładzonych danych. Sposób, w jaki stosunek dwóch odchyleń standardowych zmienia się wraz ze zmianami stopnia wygładzania krzywki, aby przewidzieć efektywne wartości wygładzania. Wystarczy kilka ręcznych uruchomień danych (które są naprawdę reprezentatywne).
Wszystkie wcześniejsze rozwiązania opublikowane powyżej obliczają pierwszą pochodną, ale nie traktują jej jako miary statystycznej, ani też powyższe rozwiązania nie próbują wykonywać wygładzania zachowującego / wzmacniającego funkcję (aby pomóc subtelnym skokom „przeskoczyć” nad szumem).
Na koniec zła wiadomość: znajdowanie „prawdziwych” szczytów staje się prawdziwym bólem, gdy szum ma również cechy, które wyglądają jak prawdziwe szczyty (nakładające się pasmo). Kolejnym bardziej złożonym rozwiązaniem jest generalnie użycie dłuższego jądra splotu („szersza apertura jądra”), które bierze pod uwagę zależność między sąsiednimi „rzeczywistymi” pikami (takimi jak minimalne lub maksymalne współczynniki występowania pików) lub użycie wielu splot przebiega przy użyciu jąder o różnych szerokościach (ale tylko wtedy, gdy jest szybszy: podstawową prawdą matematyczną jest to, że splot liniowy wykonywany w sekwencji zawsze może być razem splatany w pojedynczy splot). Często jednak o wiele łatwiej jest najpierw znaleźć sekwencję przydatnych jąder (o różnych szerokościach) i połączyć je razem, niż bezpośrednio znaleźć ostateczne jądro w jednym kroku.
Mamy nadzieję, że dostarczy to wystarczających informacji, aby umożliwić Google (i być może dobry tekst dotyczący statystyk) wypełnienie luk. Naprawdę chciałbym mieć czas, aby podać działający przykład lub link do niego. Jeśli ktoś natknie się na taki w Internecie, opublikuj go tutaj!