Strona głównaData Science i StatystykaDekompozycja szeregów czasowych: trend, sezonowość i reszty

📊 Dekompozycja szeregów czasowych: trend, sezonowość i reszty

Rozłóż syntetyczny szereg czasowy na trend, sezonowość i reszty w czasie rzeczywistym: ekstrakcja trendu średnią kroczącą, sezonowość uśredniana po cyklach, żywy periodogram DFT oraz STL jako współczesny, solidny standard.

Data Science i Statystyka2DUmiarkowany60 FPS
time-series-decomposition ↗ Otwórz samodzielnie

O dekompozycji szeregów czasowych

Dekompozycja szeregów czasowych rozbija obserwowaną sekwencję Y(t) na trzy interpretowalne części: trend obejmujący długoterminowy kierunek, składową sezonową obejmującą wzorzec powtarzający się w stałym okresie oraz resztę — wszystko, co pozostaje po usunięciu obu tych elementów. Klasyczny model addytywny to Y(t) = Trend(t) + Sezonowość(t) + Reszta(t). Gdy wielkość wahań sezonowych rośnie proporcjonalnie do poziomu trendu (np. sprzedaż detaliczna, której grudniowy skok rośnie wraz z rozwojem firmy), lepiej pasuje model multiplikatywny Y(t) = Trend(t) × Sezonowość(t) × Reszta(t) — jest on matematycznie równoważny zastosowaniu modelu addytywnego do log Y(t).

Ten symulator generuje syntetyczny szereg na podstawie kontrolowanego przez ciebie trendu (liniowego lub zakrzywionego), sinusoidalnego wzorca sezonowego o regulowanej amplitudzie i długości okresu oraz szumu gaussowskiego — dzięki czemu prawdziwa wartość jest zawsze znana i możesz dokładnie ocenić, jak dobrze dekompozycja ją odtwarza. Trend jest wyodrębniany za pomocą prawdziwej wyśrodkowanej średniej kroczącej (o regulowanym rozmiarze okna); składowa sezonowa jest wyodrębniana przez uśrednianie po cyklach — uśrednianie wartości po usunięciu trendu, które przypadają na tę samą fazę cyklu, a następnie centrowanie tego uśrednionego wzorca do zerowej średniej; reszta to po prostu to, co pozostaje: Y − Trend − Sezonowość.

Niewielki panel periodogramu wykonuje prawdziwą dyskretną transformatę Fouriera (DFT) na szeregu po usunięciu trendu i wykreśla amplitudę każdej składowej częstotliwościowej względem odpowiadającej jej długości okresu. Najwyższy pik oznacza dominującą długość cyklu faktycznie obecną w danych — porównaj ją z suwakiem prawdziwego okresu sezonowego, aby zobaczyć, jak szum, krótki szereg lub źle dobrane okno średniej kroczącej mogą obciążyć naiwną dekompozycję. Współczesnym, bardziej solidnym standardem jest STL (dekompozycja sezonowo-trendowa metodą Loess), która zastępuje średnią kroczącą o stałym oknie iteracyjnym, lokalnie ważonym wygładzaczem regresyjnym (Loess) i pozwala samemu wzorcowi sezonowemu stopniowo zmieniać się w czasie, zamiast zakładać, że powtarza się on identycznie w nieskończoność.

Najczęściej zadawane pytania

Jaka jest różnica między dekompozycją addytywną a multiplikatywną?

W modelu addytywnym, Y(t) = Trend(t) + Sezonowość(t) + Reszta(t), wahania sezonowe pozostają w przybliżeniu stałe pod względem wielkości bezwzględnej, niezależnie od poziomu trendu. W modelu multiplikatywnym, Y(t) = Trend(t) × Sezonowość(t) × Reszta(t), wahania sezonowe skalują się z trendem — odpowiednie na przykład wtedy, gdy świąteczne skoki sprzedaży rosną proporcjonalnie wraz z rozwojem firmy. Zlogarytmowanie zamienia szereg multiplikatywny w addytywny: log Y(t) = log Trend(t) + log Sezonowość(t) + log Reszta(t), dlatego wiele implementacji po prostu najpierw logarytmuje dane.

Jak właściwie działa ekstrakcja trendu za pomocą średniej kroczącej?

Wyśrodkowana średnia krocząca zastępuje każdą wartość średnią wartości w symetrycznym oknie wokół niej — dla okna o rozmiarze w = 2k+1, TrendHat(t) to średnia z Y(t−k) … Y(t+k). Uśrednia to zarówno oscylację sezonową (jeśli okno obejmuje całkowitą liczbę cykli), jak i krótkoterminowy szum, pozostawiając wolniej zmieniający się trend. W pobliżu krańców szeregu, gdzie pełne symetryczne okno nie jest dostępne, ten symulator zmniejsza okno do dostępnych po każdej stronie danych zamiast pozostawiać trend niezdefiniowany.

Jak szacowana jest składowa sezonowa na podstawie danych po usunięciu trendu?

Po odjęciu oszacowania trendu od szeregu to, co pozostaje (szereg „po usunięciu trendu”), nadal zawiera wzorzec sezonowy plus szum. Uśrednianie po cyklach grupuje wszystkie punkty pozbawione trendu, które dzielą tę samą pozycję w cyklu — np. wszystkie punkty „tydzień 3 cyklu” — i uśrednia je razem. Uśrednianie po wielu cyklach znosi szum, pozostawiając czyste oszacowanie powtarzającego się kształtu sezonowego, które następnie centruje się tak, by miało zerową średnią, by nie przenikało do poziomu trendu.

Co dokładnie oblicza panel periodogramu?

Wykonuje bezpośrednio dyskretną transformatę Fouriera (DFT) — dla każdej kandydackiej częstotliwości k sumuje Y(t)·e^(−2πikt/N) po wszystkich t — na szeregu po usunięciu trendu i wykreśla wynikową amplitudę względem odpowiadającej długości okresu N/k. Piki na tym „periodogramie” oznaczają długości cykli silnie obecne w danych. Wcześniejsze usunięcie trendu pozwala uniknąć ogromnego piku niskoczęstotliwościowego, jaki wytworzyłby surowy szereg z trendem, który w przeciwnym razie zagłuszyłby prawdziwy pik sezonowy.

Dlaczego wykryty okres może różnić się od prawdziwego okresu sezonowego, który ustawiłem?

Przy krótkim szeregu, dużym poziomie szumu lub okresie sezonowym, który nie jest czystym dzielnikiem długości próbki, rozdzielczość częstotliwościowa periodogramu (Δokres ≈ N/k²) jest na tyle gruba, że pik może wylądować kilka kroków od prawdziwej wartości. Bardzo wysoki szum może też sprawić, że fałszywa częstotliwość chwilowo przewyższy prawdziwą. To autentyczne, dobrze znane ograniczenie wykrywania okresu na podstawie periodogramu, a nie błąd symulatora — to dokładnie ten rodzaj niepewności, z którym muszą liczyć się prawdziwi analitycy.

Jak wybrać dobry rozmiar okna średniej kroczącej?

Okno powinno idealnie odpowiadać (lub być wielokrotnością) prawdziwego okresu sezonowego, tak aby każde okno uśredniało całkowitą liczbę cykli, a fala sezonowa czysto znosiła się z oszacowania trendu. Zbyt krótkie okno pozostawia sezonowe wahania w „trendzie”, a zbyt długie wygładza rzeczywistą krzywiznę trendu — spróbuj ustawić okno równe prawdziwemu okresowi sezonowemu i zobacz, jak panel trendu staje się zauważalnie gładszy.

Czym jest STL i jak poprawia metodę tego symulatora?

STL (dekompozycja sezonowo-trendowa metodą Loess) iteruje między wygładzaczem Loess (lokalnie ważoną regresją wielomianową) dla trendu a wygładzaniem podszeregów cyklicznych dla składowej sezonowej, doskonaląc obie w kilku przejściach. W przeciwieństwie do średniej kroczącej o stałym oknie i pojedynczego, statycznego wzorca sezonowego, STL pozwala kształtowi sezonowemu powoli dryfować w czasie, jest odporna na wartości odstające dzięki opcjonalnemu ważeniu i daje gładsze, bardziej uzasadnione statystycznie oszacowania trendu i sezonowości — to standardowe narzędzie w produkcyjnych potokach prognozowania (np. `stl()` w R, `statsmodels.tsa.seasonal.STL` w Pythonie).

Co oznacza tutaj „wyjaśniona wariancja”?

To 1 − Wariancja(Reszta)/Wariancja(Y), wyrażone w procentach — ułamek wariancji oryginalnego szeregu, który wspólnie wyjaśniają trend i składowa sezonowa. Wartość bliska 100% oznacza, że reszta jest niemal czystym szumem (dobra dekompozycja); niska wartość oznacza albo naprawdę wysoki poziom szumu, albo słabe dopasowanie ekstrakcji trendu/sezonowości do prawdziwego wzorca leżącego u podstaw danych.

Dlaczego stosować dyskretną transformatę Fouriera zamiast po prostu patrzeć na wykres?

Dla czystego sygnału o niskim szumie z oczywistym okresem samo patrzenie działa dobrze. Ale wraz ze wzrostem szumu lub gdy nakłada się kilka okresowości, ludzkie oko ma trudności z niezawodnym wskazaniem dominującego cyklu. DFT rozkłada sygnał na dokładną sumę sinusoid przy każdej możliwej częstotliwości, dając obiektywne, ilościowe uszeregowanie tego, które długości cykli faktycznie niosą najwięcej energii — ten sam aparat matematyczny stoi za analizatorami widma dźwięku i kompresją JPEG.

⚙ Pod maską

Rozłóż syntetyczny szereg czasowy na trend, sezonowość i reszty w czasie rzeczywistym — ekstrakcja trendu średnią kroczącą, sezonowość uśredniana po cyklach oraz żywy periodogram DFT.

time-seriesstl-decompositionseasonalitymoving-averagefourier-transformperiodogram

2D · HTML5 Canvas 2D · cel 60 FPS · działa w całości po stronie klienta, bez instalacji

Co znalazłeś/aś?

Dodaj kroki odtworzenia (opcjonalnie)