series_periods_detect()

Ermittelt die signifikantesten Zeiträume in einer Zeitreihe.

Syntax

series_periods_detect(Serie,, min_period, max_periodnum_periods)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Serie dynamic ✔️ Ein Array numerischer Werte, in der Regel die resultierende Ausgabe der Make-Series- oder make_list-Operatoren .
min_period real ✔️ Der minimale Zeitraum, für den gesucht werden soll.
max_period real ✔️ Der maximale Zeitraum, für den gesucht werden soll.
num_periods long ✔️ Die maximal erforderliche Anzahl von Perioden. Diese Zahl entspricht der Länge der dynamischen Ausgabearrays.

Wichtig

  • Der Algorithmus kann Perioden erkennen, die mindestens 4 Punkte und höchstens die Hälfte der Reihenlänge enthalten.
  • Legen Sie die min_period ein wenig unten fest und max_period etwas über den Zeiträumen, die Sie in der Zeitreihe erwarten. Wenn Sie beispielsweise über ein stündlich aggregiertes Signal verfügen und nach täglichen und wöchentlichen Zeiträumen (24 bzw. 168 Stunden) suchen, können Sie min_period=0,8*24, max_period=1,2*168 festlegen und 20 % Margen um diese Zeiträume herum belassen.
  • Die Eingabezeitreihen müssen regelmäßig sein. Das heißt, aggregiert in konstanten Bins, was immer der Fall ist, wenn sie mithilfe von Make-Series erstellt wurde. Andernfalls ist die Ausgabe bedeutungslos.

Gibt zurück

Die Funktion gibt eine Tabelle mit zwei Spalten aus:

  • Perioden: Ein dynamisches Array, das die gefundenen Punkte in Einheiten der Bin-Größe nach ihren Bewertungen geordnet enthält.
  • Scores: Ein dynamisches Array mit Werten zwischen 0 und 1. Jedes Array misst die Bedeutung eines Zeitraums an seiner jeweiligen Position im Periodenarray .

Beispiel

Die folgende Abfrage bettet einen Momentaufnahme eines Monats des Datenverkehrs einer Anwendung ein, der zweimal täglich aggregiert wird. Die Bin-Größe beträgt 12 Stunden.

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

Reihenabschnitte.

Wenn diese Serie ausgeführt series_periods_detect() wird, ergibt sich der wöchentliche Zeitraum, 14 Punkte lang.

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)

Ausgabe

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

Hinweis

Der tägliche Zeitraum, der auch im Diagramm angezeigt werden kann, wurde nicht gefunden, da die Stichprobenentnahme zu grob ist (12h-Behältergröße), sodass ein täglicher Zeitraum von 2 Behältern unter der vom Algorithmus geforderten mindestdauerngröße von 4 Punkten liegt.