Megosztás a következőn keresztül:


series_decompose()

Felbontásátalakítást alkalmaz egy sorozatra.

Bemenetként egy adatsort (dinamikus numerikus tömböt) tartalmazó kifejezést használ, és szezonális, trend és reziduális összetevőkké bontja.

Syntax

series_decompose(Sorozat, [ Szezonalitás,Trend,, Test_pointsSeasonality_threshold ])

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
Adatsorozat dynamic ✔️ Numerikus értékek tömbje, általában a make-series vagy make_list operátorok eredményül kapott kimenete.
Szezonalitás int Szabályozza a szezonális elemzést. Lehetséges értékek:

- -1: A szezonalitás automatikus észlelése series_periods_detect használatával. Ez az alapértelmezett érték.
- Időszak: Pozitív egész szám, amely a intervallumok számában adja meg a várt időszakot. Ha például a sorozat intervallumokban 1 - h van, a heti időszak 168 doboz.
- 0: Nincs szezonalitás, ezért hagyja ki ezt az összetevőt.
Trend string Szabályozza a trendelemzést. Lehetséges értékek:

- avg: Trendösszetevő meghatározása a következőként average(x): . Ez az alapértelmezett beállítás.
- linefit: Trendösszetevő kinyerése lineáris regresszióval.
- none: Nincs trend, ezért hagyja ki ezt az összetevőt.
Test_points int Pozitív egész szám, amely a sorozat végén a tanulási vagy regressziós folyamatból kizárandó pontok számát adja meg. Ezt a paramétert előrejelzési célokra kell beállítani. Az alapértelmezett érték a 0.
Seasonality_threshold real A szezonalitási pontszám küszöbértéke, ha a szezonalitás automatikus észlelésre van beállítva. Az alapértelmezett pontszám küszöbértéke 0,6.

További információ: series_periods_detect.

Válaszok

A függvény a következő sorozatot adja vissza:

  • baseline: az adatsor előrejelzett értéke (szezonális és trendösszetevők összege, lásd alább).
  • seasonal: a szezonális összetevő sorozata:
    • ha az időszak nem észlelhető, vagy explicit módon 0: 0 állandóra van állítva.
    • ha észlelik vagy pozitív egész számra állítják be: az adatsorpontok mediánja ugyanabban a fázisban
  • trend: a trendösszetevő sorozata.
  • residual: a reziduális összetevő sorozata (azaz x - alapkonfiguráció).

Megjegyzés

  • Összetevő végrehajtási sorrendje:
  1. A szezonális sorozat kinyerése
  2. Kivonja az x-ből, és létrehozza a deszeazonális sorozatot
  3. A trendösszetevő kinyerése a deseasonal sorozatból
  4. Alapterv létrehozása = szezonális + trend
  5. A reziduális létrehozása = x – alapkonfiguráció
  • Engedélyezni kell a szezonalitást és a trendet. Ellenkező esetben a függvény redundáns, és csak alapkonfigurációt = 0 és reziduális = x értéket ad vissza.

További információ a sorozat felbontásáról

Ezt a módszert általában olyan metrikák idősorozatára alkalmazzák, amelyeket az időszakos és/vagy trendi viselkedés nyilvánul meg. A metódussal előrejelzheti a jövőbeli metrikaértékeket és/vagy észlelheti a rendellenes értékeket. Ennek a regressziós folyamatnak az implicit feltételezése az, hogy a szezonális és trendviselkedésen kívül az idősor sztochasztikus és véletlenszerűen elosztott. A szezonális és trendösszetevők jövőbeli metrikaértékeinek előrejelzése a reziduális rész figyelmen kívül hagyásával. A rendellenes értékeket csak a reziduális rész kiugró észlelése alapján észleli. További részletek a Time Series Felbontás fejezetben találhatók.

Példák

Heti szezonalitás

A következő példában heti szezonalitással és trendek nélkül hozunk létre egy sorozatot, majd hozzáadunk hozzá néhány kiugró értékeket. series_decompose megkeresi és automatikusan észleli a szezonalitást, és olyan alapkonfigurációt hoz létre, amely majdnem megegyezik a szezonális összetevővel. A hozzáadott kiugró értékek egyértelműen láthatók a reziduálisok összetevőben.

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  

Sorozat felbontása 1.

Heti szezonalitás trenddel

Ebben a példában egy trendet adunk hozzá az előző példából származó sorozathoz. Először az alapértelmezett paraméterekkel futtatjuk a parancsot series_decompose . A trend avg alapértelmezett értéke csak az átlagot veszi figyelembe, és nem számítja ki a trendet. A létrehozott alapterv nem tartalmazza a trendet. A reziduálisok trendjének megfigyelésekor nyilvánvalóvá válik, hogy ez a példa kevésbé pontos, mint az előző példa.

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  

Sorozat felbontása 2.

Ezután újrafuttatjuk ugyanazt a példát. Mivel trendet várunk a sorozatban, a trendparaméterben határozzuk meg linefit . Láthatjuk, hogy a pozitív trend észlelhető, és az alapkonfiguráció sokkal közelebb van a bemeneti adatsorhoz. A reziduálisok közel nulla, és csak a kiugró értékek tűnnek ki. A diagramon az adatsor összes összetevője látható.

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  

Sorozat felbontása 3.