series_periods_detect()

Vyhledá nejvýznamnější období, která existují v časové řadě.

Syntax

series_periods_detect(Série,, min_period, max_periodnum_periods)

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Série dynamic ✔️ Pole číselných hodnot, obvykle výsledný výstup řady make-series nebo make_list operátorů.
min_period real ✔️ Minimální doba, po kterou se má hledat.
max_period real ✔️ Maximální doba, po kterou se má hledat.
num_periods long ✔️ Maximální požadovaný počet období. Toto číslo bude délka výstupních dynamických polí.

Důležité

  • Algoritmus dokáže rozpoznat tečky obsahující alespoň 4 body a maximálně polovinu délky řady.
  • Nastavte min_period o něco níže a max_period trochu nad očekávanou časovou řadou. Pokud máte například hodinový agregovaný signál a hledáte denní i týdenní období (24 hodin a 168 hodin), můžete nastavit min_period=0,8*24, max_period=1,2*168 a ponechat kolem těchto období 20% marži.
  • Vstupní časová řada musí být pravidelná. To znamená agregované v konstantních intervalech, což je vždy případ, pokud byl vytvořen pomocí řady make-series. V opačném případě je výstup bezvýznamný.

Návraty

Funkce vypíše tabulku se dvěma sloupci:

  • periods: Dynamické pole obsahující nalezené tečky v jednotkách velikosti intervalu seřazené podle jejich skóre.
  • scores: Dynamické pole obsahující hodnoty mezi 0 a 1. Každé pole měří význam tečky v příslušné pozici v poli period.

Příklad

Následující dotaz vloží snímek měsíce provozu aplikace agregovaný dvakrát denně. Velikost přihrádky je 12 hodin.

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

Období řad.

Spuštění series_periods_detect() na této sérii má za následek týdenní období dlouhé 14 bodů.

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)

Výstup

series_periods_detect_y_periods series_periods_detect_y_periods_scores
[14.0, 0.0] [0.84, 0.0]

Poznámka

Denní období, které je vidět také v grafu, nebylo nalezeno, protože vzorkování je příliš hrubé (velikost intervalu 12 hodin), takže denní interval 2 intervaly je nižší než minimální velikost 4 bodů vyžadovaná algoritmem.