series_periods_detect()
Hiermee vindt u de belangrijkste perioden die bestaan in een tijdreeks.
Syntax
series_periods_detect(
Serie,
,
min_period,
max_periodnum_periods)
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
Serie | dynamic |
✔️ | Een matrix met numerieke waarden, meestal de resulterende uitvoer van de operatoren make-series of make_list . |
min_period | real |
✔️ | De minimale periode waarin moet worden gezocht. |
max_period | real |
✔️ | De maximale periode waarnaar moet worden gezocht. |
num_periods | long |
✔️ | Het maximale aantal vereiste perioden. Dit getal is de lengte van de dynamische uitvoermatrices. |
Belangrijk
- Het algoritme kan perioden met ten minste 4 punten en maximaal de helft van de reekslengte detecteren.
- Stel de min_period iets hieronder in en max_period iets boven de perioden die u verwacht te vinden in de tijdreeks. Als u bijvoorbeeld een geaggregeerd signaal per uur hebt en u zoekt naar zowel dagelijkse als wekelijkse perioden (respectievelijk 24 en 168 uur), kunt u min_period=0,8*24, max_period=1,2*168 instellen en 20% marges laten rond deze perioden.
- De invoertijdreeks moet regelmatig zijn. Dat wil gezegd, geaggregeerd in constante opslaglocaties, wat altijd het geval is als het is gemaakt met make-series. Anders is de uitvoer zinloos.
Retouren
Met de functie wordt een tabel met twee kolommen uitgevoerd:
- perioden: een dynamische matrix met de gevonden perioden, in eenheden van de bin-grootte, geordend op hun scores.
- scores: een dynamische matrix met waarden tussen 0 en 1. Elke matrix meet de significantie van een periode op de respectieve positie in de matrix met punten .
Voorbeeld
Met de volgende query wordt een momentopname ingesloten van een maand van het verkeer van een toepassing, die tweemaal per dag wordt geaggregeerd. De grootte van de opslaglocatie is 12 uur.
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
Als deze reeks wordt uitgevoerd series_periods_detect()
, resulteert dit in de wekelijkse periode, die 14 punten lang is.
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)
Uitvoer
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14.0, 0.0] | [0.84, 0.0] |
Notitie
De dagelijkse periode die ook in de grafiek kan worden weergegeven, is niet gevonden omdat de steekproef te grof is (12 uur bin-grootte), dus een dagelijkse periode van 2 bins is lager dan de minimale periodegrootte van 4 punten, vereist door het algoritme.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor