series_periods_detect()
Dotyczy: ✅Microsoft Fabric✅✅
Znajduje najbardziej znaczące okresy w szeregach czasowych.
Funkcja series_periods_detect() jest przydatna do wykrywania okresowych wzorców w danych, takich jak cykle dzienne, tygodniowe lub miesięczne.
Składnia
series_periods_detect(
num_periods max_period serii min_period,
,
)
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
seria | dynamic |
✔️ | Tablica wartości liczbowych, zazwyczaj wynikowe dane wyjściowe operatorów make-series lub make_list . |
min_period | real |
✔️ | Minimalna długość okresu do wyszukania. |
max_period | real |
✔️ | Maksymalna długość okresu, dla którego należy wyszukiwać. |
num_periods | long |
✔️ | Maksymalna liczba okresów do zwrócenia. Ta liczba jest długością wyjściowych tablic dynamicznych. |
Ważne
- Algorytm może wykrywać okresy zawierające co najmniej 4 punkty i co najwyżej połowę długości serii.
- Ustaw min_period nieco poniżej i max_period nieco powyżej okresów, które można znaleźć w szeregach czasowych. Jeśli na przykład masz zagregowany sygnał godzinowy i szukasz odpowiednio okresów dziennych i tygodniowych (odpowiednio 24 i 168 godzin), możesz ustawić min_period=0,8*24, max_period=1,2*168 i pozostawić 20% marginesów wokół tych okresów.
- Szereg czasowy wejściowy musi być regularny. Oznacza to, że agregowane w pojemnikach stałych, czyli zawsze w przypadku utworzenia przy użyciu serii make-series. W przeciwnym razie dane wyjściowe są bez znaczenia.
Zwraca
Funkcja zwraca tabelę z dwiema kolumnami:
- okresy: tablica dynamiczna zawierająca okresy znalezione w jednostkach rozmiaru pojemnika uporządkowane według ich wyników.
- scores: tablica dynamiczna zawierająca wartości z zakresu od 0 do 1. Każda tablica mierzy znaczenie okresu w odpowiedniej pozycji w tablicy okresów .
Przykład
Poniższe zapytanie osadza migawkę ruchu aplikacji przez jeden miesiąc. Ilość ruchu jest agregowana dwa razy dziennie, co oznacza, że rozmiar pojemnika wynosi 12 godzin. Zapytanie tworzy wykres liniowy wyraźnie pokazujący wzorzec w danych.
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| render linechart
Możesz uruchomić funkcję series_periods_detect()
w tej samej serii, aby zidentyfikować wzorce cykliczne. Funkcja wyszukuje wzorce w określonym zakresie okresów i zwraca dwie wartości. Pierwsza wartość wskazuje wykryty wzorzec o długości 14 punktów z wynikiem około .84. Druga wartość to zero, która wskazuje, że nie znaleziono żadnego dodatkowego wzorca.
print y=dynamic([80, 139, 87, 110, 68, 54, 50, 51, 53, 133, 86, 141, 97, 156, 94, 149, 95, 140, 77, 61, 50, 54, 47, 133, 72, 152, 94, 148, 105, 162, 101, 160, 87, 63, 53, 55, 54, 151, 103, 189, 108, 183, 113, 175, 113, 178, 90, 71, 62, 62, 65, 165, 109, 181, 115, 182, 121, 178, 114, 170])
| project x=range(1, array_length(y), 1), y
| project series_periods_detect(y, 0.0, 50.0, 2)
Wyjście
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14, 0] | [0.84, 0] |
Wartość w series_periods_detect_y_periods_scores jest obcięta.
Uwaga
Na wykresie widoczny jest również dzienny wzorzec, ale nie jest zwracany przez zapytanie, ponieważ próbkowanie jest zbyt grube (rozmiar pojemnika 12 godzin). Dzienny okres 2 pojemników jest niższy od minimalnego rozmiaru 4 punktów, wymaganego przez algorytm.