series_decompose()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Wendet eine Analysetransformation auf eine Datenreihe an.
Verwendet einen Ausdruck, der eine Datenreihe (dynamische numerische Matrix) enthält, als Eingabe und dekompiliert ihn in saisonale, Trend- und Restkomponenten.
Syntax
series_decompose(
Serie [ Saisonalitätstrend ,
,
Test_points,
Seasonality_threshold ] ,
)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
Reihen | dynamic |
✔️ | Ein Array numerischer Werte, in der Regel die resultierende Ausgabe von Make-Series - oder make_list Operatoren. |
Saisonalität | int |
Steuert die saisonale Analyse. Mögliche Werte sind: - -1 : Autodet die Saisonalität mithilfe von series_periods_detect. Dies ist der Standardwert.- Punkt: Eine positive ganze Zahl, die den erwarteten Zeitraum in der Anzahl der Bins angibt. Wenn sich die Datenreihe beispielsweise in 1 - h Fächern befindet, beträgt eine wöchentliche Periode 168 Bins.- 0 : Keine Saisonalität, also überspringen Sie das Extrahieren dieser Komponente. |
|
Trend | string |
Steuert die Trendanalyse. Mögliche Werte sind: - avg : Definieren der Trendkomponente als average(x) . Dies ist die Standardeinstellung.- linefit : Extrahieren Der Trendkomponente mithilfe der linearen Regression.- none : Kein Trend, also überspringen Sie das Extrahieren dieser Komponente. |
|
Test_points | int |
Eine positive ganze Zahl, die die Anzahl der Punkte am Ende der Datenreihe angibt, die vom Lern- oder Regressionsprozess ausgeschlossen werden sollen. Dieser Parameter sollte für Prognosezwecke festgelegt werden. Der Standardwert ist 0. | |
Seasonality_threshold | real |
Der Schwellenwert für die Saisonalitätsbewertung, wenn "Saisonalität " auf "autodetect" festgelegt ist. Der Schwellenwert für die Standardbewertung beträgt 0,6. Weitere Informationen finden Sie unter series_periods_detect. |
Gibt zurück
Die Funktion gibt die folgende Datenreihe zurück:
baseline
: der prognostizierte Wert der Datenreihe (Summe der saisonal und trendbedingten Komponenten, siehe unten).seasonal
: die Serie der saisonbedingten Komponente:- wenn der Punkt nicht erkannt wird oder explizit auf 0 festgelegt ist: Konstante 0.
- wenn erkannt oder auf eine positive ganze Zahl festgelegt: Median der Datenreihenpunkte in derselben Phase
trend
: die Reihe der Trendkomponente.residual
: die Reihe der Restkomponente (d. h. x - Basisplan).
Hinweis
- Ausführungsreihenfolge der Komponente:
- Extrahieren der saisonalen Serie
- Subtrahieren sie von x, wobei die deseasonale Serie generiert wird
- Extrahieren der Trendkomponente aus der Deseasonalreihe
- Erstellen des Basisplans = saisonal + Trend
- Erstellen des Restwerts = x - Basisplan
- Saisonalität und Trend sollten aktiviert werden. Andernfalls ist die Funktion redundant und gibt einfach den Basiswert = 0 und rest = x zurück.
Weitere Informationen zur Analyse von Serien
Diese Methode wird in der Regel auf Zeitreihen von Metriken angewendet, die erwartet werden, um periodisches und/oder Trendverhalten zu manifestieren. Mit der Methode können Sie zukünftige Metrikwerte prognostizieren und/oder anomale Werte erkennen. Die implizite Annahme dieses Regressionsprozesses besteht darin, dass die Zeitreihe abgesehen von saisonalem und Trendverhalten stochastisch und zufällig verteilt ist. Prognostizieren Sie zukünftige Metrikwerte aus den saisonalen und Trendkomponenten, während sie den Restteil ignorieren. Erkennen Sie anomaliele Werte basierend auf der Ausreißererkennung nur auf dem Restteil. Weitere Details finden Sie im Kapitel "Analyse der Zeitreihen".
Beispiele
Wöchentliche Saisonalität
Im folgenden Beispiel generieren wir eine Serie mit wöchentlicher Saisonalität und ohne Trend, dann fügen wir ihnen einige Ausreißer hinzu. series_decompose
findet und erkennt automatisch die Saisonalität und generiert einen Basisplan, der fast identisch mit dem saisonalen Bestandteil ist. Die von uns hinzugefügten Ausreißer lassen sich in der Restkomponente deutlich erkennen.
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
Wöchentliche Saisonalität mit Trend
In diesem Beispiel fügen wir der Datenreihe aus dem vorherigen Beispiel einen Trend hinzu. Zuerst werden die Standardparameter verwendet series_decompose
. Der Trendstandardwert avg
nimmt nur den Mittelwert und berechnet den Trend nicht. Der generierte Basisplan enthält nicht den Trend. Bei der Beobachtung des Trends in den Resten wird deutlich, dass dieses Beispiel weniger genau ist als das vorherige Beispiel.
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
Als Nächstes führen wir dasselbe Beispiel erneut aus. Da wir einen Trend in der Datenreihe erwarten, geben wir im Trendparameter an linefit
. Wir können sehen, dass der positive Trend erkannt wird und der Basisplan viel näher an der Eingabereihe liegt. Die Reste liegen nahe null, und nur die Ausreißer heben sich hervor. Wir können alle Komponenten der Datenreihe im Diagramm sehen.
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
Zugehöriger Inhalt
- Visualisieren von Ergebnissen mit einem Anomaliediagramm