Statystyczne podobieństwo szeregów czasowych

15

Załóżmy, że istnieje szereg czasowy, z którego można wykonać różne pomiary, takie jak okres, maksimum, minimum, średnia itp., A następnie użyć ich do stworzenia modelowej fali sinusoidalnej o tych samych atrybutach, czy można zastosować metody statystyczne, które można by obliczyć jak bardzo rzeczywiste dane pasują do założonego modelu? Liczba punktów danych w szeregu wynosiłaby od 10 do 50 punktów.

Bardzo uproszczoną moją pierwszą myślą było przypisanie wartości kierunkowemu ruchowi fali sinusoidalnej, tj. +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1 -1 +1 +1 +1 +1, zrób to samo z rzeczywistymi danymi, a następnie oszacuj stopień podobieństwa ruchu kierunkowego.

Edycja: Po głębszym przemyśleniu tego, co naprawdę chcę zrobić z moimi danymi, oraz w świetle odpowiedzi na moje pierwotne pytanie, potrzebuję algorytmu decyzyjnego do wyboru między konkurującymi założeniami: mianowicie, że moje dane są zasadniczo liniowe (lub trendowanie) z hałasem, który może mieć elementy cykliczne; moje dane są w zasadzie cykliczne bez tendencji kierunkowej; dane są w zasadzie tylko szumem; lub przechodzi z jednego z tych stanów.

Teraz myślę o połączeniu pewnej formy analizy bayesowskiej i metryki Euclidean / LMS. Kroki w tym podejściu byłyby

Utwórz założoną falę sinusoidalną na podstawie pomiarów danych

Dopasuj linię LMS do danych

Wyprowadź metrykę euklidesową lub LMS dla odejść od oryginalnych danych dla każdego z powyższych

Utwórz Bayesian przed każdym dla każdego w oparciu o tę metrykę, tj. 60% połączonych odlotów przypisuje się do jednego, 40% do drugiego, stąd faworyzuj 40%

przesuń okno o jeden punkt danych wzdłuż danych i powtórz powyższe, aby uzyskać nowe% metryki dla tego nieznacznie zmienionego zestawu danych - to nowy dowód - wykonaj analizę bayesowską, aby utworzyć pozycję późniejszą i zmienić prawdopodobieństwa, które sprzyjają każdemu założeniu

powtarzaj wzdłuż całego zestawu danych (ponad 3000 punktów danych) w tym przesuwanym oknie (długość okna 10-50 punktów danych). Nadzieją / intencją jest identyfikacja dominującego / uprzywilejowanego założenia w dowolnym punkcie zbioru danych i tego, jak zmienia się to z czasem

Wszelkie uwagi dotyczące tej potencjalnej metodologii byłyby mile widziane, szczególnie na temat tego, w jaki sposób mógłbym faktycznie wdrożyć część analizy bayesowskiej.

czytnik babelproofreader
źródło

Odpowiedzi:

5

Jeśli masz konkretny model, z którym chcesz porównać: zaleciłbym najmniejsze kwadraty jako miarę, aby zminimalizować i ocenić możliwe wartości parametrów w odniesieniu do określonego zestawu danych. Wystarczy, że podłączysz swoje oszacowania parametrów, użyjesz ich do wygenerowania przewidywanych wartości i obliczysz średnie odchylenie kwadratowe od prawdziwych wartości.

Możesz jednak zastanowić się nad nieco większym pytaniem: „Który model najlepiej pasuje do moich danych?” W takim przypadku sugerowałbym przyjęcie założenia o rozkładzie błędu normalnie ~ coś, co można by argumentować, jest podobne do założenia najmniejszych kwadratów. Następnie, w zależności od wybranego modelu, możesz założyć, w jaki sposób sądzisz, jak inne parametry modelu są dystrybuowane (przypisując wcześniejszy Bayesian) i użyć czegoś w rodzaju pakietu MCMC od R do próbkowania z rozkładu parametrów. Następnie możesz spojrzeć na tylne środki i wariancje, aby dowiedzieć się, który model ma najlepsze dopasowanie.

M. Tibbits
źródło
Jeśli mam dwa możliwe modele dopasowania do moich danych, falę sinusoidalną opisaną w moim pierwotnym pytaniu i dopasowanie liniowe LMS, czy mogę po prostu porównać średnie kwadratowe odchylenie od rzeczywistych wartości danych fali sinusoidalnej z resztami Linia dopasowania LMS, a następnie wybierz model o niższej ogólnej wartości ze względu na to, że ten model wykazuje dokładniejsze dopasowanie do danych? Jeśli tak, to czy uzasadnione byłoby również podzielenie danych na połowy i zrobienie tego samego z każdą połową oddzielnie, przy użyciu tego samego dopasowania fali sinusoidalnej / LMS, aby zobaczyć, jak każdy model może się poprawiać / pogarszać z czasem?
czytnik babelproof
Nie jestem pewny. Moją sugestią było użycie metryki najmniejszych kwadratów, ale nie mówiłem, aby uruchomić regresję liniową. Możesz sprawdzić okresową regresję .
M. Tibbits,
Jeśli chodzi o twoje drugie pytanie, czy możesz przeciąć dane na pół, byłbym bardzo ostrożny - ponieważ podwoiłoby to minimalną częstotliwość, którą możesz wziąć pod uwagę. Myślę, że możesz potrzebować spojrzeć na współczynniki Fouriera (weź FFT lub DCT i zrezygnuj z nich?!? - Nie jestem pewien ). A może okresowa regresja, jak wspomniano powyżej.
M. Tibbits,
3

Twoja „uproszczona pierwsza myśl” polegająca na jakościowym przedstawieniu jedynie ruchu kierunkowego jest podobna w duchu do algorytmu SAX Keogha do porównywania szeregów czasowych. Polecam przyjrzeć się temu: Eamonn Keogh i Jessica Lin: SAX .

Z twojej edycji wygląda na to, że teraz myślisz o rozwiązaniu problemu w inny sposób, ale może się okazać, że SAX zapewnia kawałek układanki.

Bufor irlandzki
źródło
0

Chociaż nieco spóźniam się na przyjęcie, jeśli myślisz o czymś sinusoidalnym, transformacje falkowe są dobrym narzędziem, które możesz mieć również w kieszeni. Teoretycznie można użyć transformacji falkowej do rozłożenia sekwencji na różne „części” (np. Fale o różnych kształtach / częstotliwościach, komponenty niefalowe, takie jak trendy itp.). Specyficzną formą transformacji fali, która jest używana w tonie, jest transformata Fouriera, ale w tej dziedzinie jest dużo pracy. Chciałbym móc polecić aktualny pakiet, ale od dłuższego czasu nie przeprowadzałem analizy sygnału. Pamiętam jednak niektóre pakiety Matlaba obsługujące funkcjonalność w tym stylu.

Kolejnym kierunkiem, jeśli próbujesz znaleźć trendy w cyklicznych danych, jest coś w rodzaju testu trendów Manna-Kendalla. Jest często używany do wykrywania zmian pogody lub jakości wody, która ma silny wpływ na sezon. Nie ma w nim dzwonków i gwizdów niektórych bardziej zaawansowanych podejść, ale ponieważ jest to sprawdzony test statystyczny, dość łatwo go interpretować i zgłaszać.

Imiennie
źródło