series_periods_detect()
Trova i periodi più significativi presenti in una serie temporale.
Sintassi
series_periods_detect(
serie,
min_period max_period num_periods ,
,
)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
serie | dynamic |
✔️ | Matrice di valori numerici, in genere l'output risultante degli operatori make-series o make_list . |
min_period | real |
✔️ | Periodo minimo per il quale eseguire la ricerca. |
max_period | real |
✔️ | Periodo massimo per il quale eseguire la ricerca. |
num_periods | long |
✔️ | Numero massimo di periodi richiesti. Questo numero sarà la lunghezza delle matrici dinamiche di output. |
Importante
- L'algoritmo può rilevare periodi contenenti almeno 4 punti e al massimo la metà della lunghezza della serie.
- Impostare il min_period un po ' sotto e max_period un po 'sopra i periodi che si prevede di trovare nella serie temporale. Ad esempio, se si dispone di un segnale aggregato orario e si cercano periodi giornalieri e settimanali (rispettivamente 24 e 168 ore), è possibile impostare min_period=0,8*24, max_period=1,2*168 e lasciare il 20% dei margini intorno a questi periodi.
- La serie temporale di input deve essere regolare. Ovvero, aggregato in contenitori costanti, che è sempre il caso se è stato creato usando make-series. In caso contrario, l'output è privo di significato.
Valori restituiti
La funzione restituisce una tabella con due colonne:
- periodi: matrice dinamica contenente i periodi trovati, in unità di dimensione del contenitore, ordinati in base ai punteggi.
- punteggi: matrice dinamica contenente valori compresi tra 0 e 1. Ogni matrice misura il significato di un punto nella rispettiva posizione nella matrice di periodi.
Esempio
La query seguente incorpora uno snapshot di un mese del traffico di un'applicazione, aggregato due volte al giorno. La dimensione del contenitore è di 12 ore.
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
In esecuzione series_periods_detect()
in questa serie, si ottiene il periodo settimanale, 14 punti di lunghezza.
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)
Output
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14,0, 0,0] | [0.84, 0.0] |
Nota
Il periodo giornaliero che può essere visualizzato anche nel grafico non è stato trovato perché il campionamento è troppo grossolano (dimensioni bin 12h), quindi un periodo giornaliero di 2 bin è inferiore alla dimensione minima del periodo di 4 punti, richiesto dall'algoritmo.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per