series_periods_detect()
S’applique à : ✅Microsoft Fabric✅✅
Recherche les périodes les plus importantes dans une série chronologique.
La fonction series_periods_detect() est utile pour détecter les modèles périodiques dans les données, tels que les cycles quotidiens, hebdomadaires ou mensuels.
Syntaxe
series_periods_detect(
série,
min_period max_period num_periods ,
,
)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
série | dynamic |
✔️ | Tableau de valeurs numériques, généralement la sortie résultante des opérateurs make-series ou make_list . |
min_period | real |
✔️ | Longueur minimale de la période pour laquelle effectuer la recherche. |
max_period | real |
✔️ | Longueur maximale de la période pour laquelle effectuer la recherche. |
num_periods | long |
✔️ | Nombre maximal de périodes à retourner. Ce nombre est la longueur des tableaux dynamiques de sortie. |
Important
- L’algorithme peut détecter les périodes contenant au moins 4 points et la moitié de la longueur de la série.
- Définissez le min_period un peu plus bas et max_period un peu au-dessus des périodes que vous prévoyez de trouver dans la série chronologique. Par exemple, si vous avez un signal agrégé horaire et que vous recherchez des périodes quotidiennes et hebdomadaires (24 et 168 heures respectivement), vous pouvez définir min_period=0,8*24, max_period=1,2*168 et laisser 20 % de marges autour de ces périodes.
- La série chronologique d’entrée doit être régulière. Autrement dit, agrégé dans des bacs constants, c’est toujours le cas s’il a été créé à l’aide de make-series. Dans le cas contraire, le résultat n’est pas significatif.
Retours
La fonction retourne une table avec deux colonnes :
- périodes: tableau dynamique contenant les périodes trouvées, en unités de la taille du bac, classées par leurs scores.
- scores : tableau dynamique contenant des valeurs comprises entre 0 et 1. Chaque tableau mesure l’importance d’une période dans sa position respective dans le tableau des périodes .
Exemple
La requête suivante incorpore un instantané du trafic d’application pendant un mois. La quantité de trafic est agrégée deux fois par jour, ce qui signifie que la taille du bac est de 12 heures. La requête produit un graphique en courbes affichant clairement un modèle dans les données.
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
Vous pouvez exécuter la fonction series_periods_detect()
sur la même série pour identifier les modèles récurrents. La fonction recherche des modèles dans la plage de points spécifiée et retourne deux valeurs. La première valeur indique un modèle détecté de 14 points de long avec un score d’environ .84. L’autre valeur est zéro qui indique qu’aucun modèle supplémentaire n’a été trouvé.
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)
Sortie
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14, 0] | [0.84, 0] |
La valeur de series_periods_detect_y_periods_scores est tronquée.
Remarque
Il existe également un modèle quotidien visible dans le graphique, mais cela n’est pas retourné par la requête, car l’échantillonnage est trop grossière (taille de bac 12h). Une période quotidienne de 2 bacs est inférieure à la taille minimale de la période de 4 points, requise par l’algorithme.