series_decompose()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Použije na řadu transformaci rozkladu.
Vezme výraz obsahující řadu (dynamickou číselnou matici) jako vstup a rozloží ho na sezónní, trendové a zbytkové komponenty.
Syntaxe
series_decompose(
Řada ,
[ Sezónnost,
Trend,
Test_points,
Seasonality_threshold ])
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
Řada | dynamic |
✔️ | Matice číselných hodnot, obvykle výsledný výstup operátorů make-series nebo make_list . |
Sezónnost | int |
Řídí sezónní analýzu. Možné hodnoty: - -1 : Automatické rozpoznávání sezónnosti pomocí series_periods_detect. Tato hodnota je výchozí.- Období: Kladné celé číslo určující očekávané období v počtu intervalů. Pokud je například řada v 1 - h intervalech, týdenní období je 168 intervalů.- 0 : Žádné sezónnosti, takže přeskočte extrahování této komponenty. |
|
Trend | string |
Řídí analýzu trendu. Možné hodnoty: - avg : Definujte komponentu trendu jako average(x) . Tato možnost je výchozí.- linefit : Extrahujte komponentu trendu pomocí lineární regrese.- none : Žádný trend, takže přeskočte extrahování této komponenty. |
|
Test_points | int |
Kladné celé číslo určující počet bodů na konci řady, které se mají vyloučit z procesu učení nebo regrese. Tento parametr by měl být nastavený pro účely prognózy. Výchozí hodnota je 0. | |
Seasonality_threshold | real |
Prahová hodnota pro sezónní skóre, když je sezónnost nastavená na automatické rozpoznávání. Výchozí prahová hodnota skóre je 0,6. Další informace najdete v tématu series_periods_detect. |
Návraty
Funkce vrátí následující odpovídající řadu:
baseline
: predikovaná hodnota řady (součet sezónních a trendových součástí, viz níže).seasonal
: řada sezónní součásti:- pokud se období nezjistí nebo je explicitně nastaveno na 0: konstanta 0.
- pokud bylo zjištěno nebo nastaveno na kladné celé číslo: medián bodů řady ve stejné fázi
trend
: řada komponenty trendu.residual
: řada zbytkové složky (to znamená x - směrný plán).
Poznámka:
- Pořadí provádění komponent:
- Extrahování sezónní řady
- Odečtěte ji od x a vygenerujte deseasonální řadu.
- Extrahování komponenty trendu z deseasonální řady
- Vytvoření směrného plánu = sezónní + trend
- Vytvoření reziduí = x – směrný plán
- Měla by být povolena sezónnost nebo trend. V opačném případě je funkce redundantní a pouze vrátí směrný plán = 0 a rezidua = x.
Další informace o rozkladu řad
Tato metoda se obvykle používá u časových řad metrik očekávaných k manifestu pravidelného chování nebo chování trendu. Metodu můžete použít k prognózování budoucích hodnot metrik a/nebo k detekci neobvyklých hodnot. Implicitní předpoklad tohoto regresního procesu je, že kromě sezónního a trendového chování je časová řada stochastická a náhodně rozdělená. Prognózovat budoucí hodnoty metrik ze sezónních a trendových komponent a současně ignorovat zbytkovou část. Detekce neobvyklých hodnot na základě detekce odlehlých hodnot pouze na zbytkové části. Další podrobnosti najdete v kapitole o rozkladu časové řady.
Příklady
Týdenní sezónnost
V následujícím příkladu vygenerujeme řadu s týdenní sezónností a bez trendu a pak do ní přidáme některé odlehlé hodnoty. series_decompose
vyhledá a automaticky zjistí sezónnost a vygeneruje směrný plán, který je téměř stejný jako sezónní komponenta. Odlehlé hodnoty, které jsme přidali, lze jasně vidět v komponentě reziduí.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 10.0, 15.0) - (((t%24)/10)*((t%24)/10)) // generate a series with weekly seasonality
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y)
| render timechart
Týdenní sezónnost s trendem
V tomto příkladu přidáme trend do řady z předchozího příkladu. Nejprve spustíme series_decompose
s výchozími parametry. Výchozí hodnota trendu avg
přebírá pouze průměr a nevypočítá trend. Vygenerovaný směrný plán neobsahuje trend. Při sledování trendu v reziduích se zjeví, že tento příklad je méně přesný než předchozí příklad.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y)
| render timechart
V dalším kroku znovu spustíme stejný příklad. Vzhledem k tomu, že očekáváme trend v řadě, určíme linefit
v parametru trendu. Vidíme, že je zjištěn pozitivní trend a směrný plán je mnohem blíž ke vstupní řadě. Rezidua jsou blízko nule a vyniknou pouze odlehlé hodnoty. Vidíme všechny komponenty v řadě v grafu.
let ts=range t from 1 to 24*7*5 step 1
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts
| extend series_decompose(y, -1, 'linefit')
| render timechart
Související obsah
- Vizualizace výsledků pomocí anomálií