series_periods_detect()
Busca los períodos más significativos que existen en una serie temporal.
Syntax
series_periods_detect(
Serie,
,
min_period,
max_periodnum_periods)
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Tipo | Requerido | Descripción |
---|---|---|---|
Serie | dynamic |
✔️ | Matriz de valores numéricos, normalmente la salida resultante de los operadores make-series o make_list . |
min_period | real |
✔️ | Período mínimo para el que se va a buscar. |
max_period | real |
✔️ | Período máximo para el que se va a buscar. |
num_periods | long |
✔️ | Número máximo necesario de períodos. Este número será la longitud de las matrices dinámicas de salida. |
Importante
- El algoritmo puede detectar períodos que contengan al menos 4 puntos y, como máximo, la mitad de la longitud de la serie.
- Establezca el min_period un poco por debajo y max_period un poco por encima de los períodos que espera encontrar en la serie temporal. Por ejemplo, si tiene una señal agregada por hora y busca períodos diarios y semanales (24 y 168 horas respectivamente), puede establecer min_period=0,8*24, max_period=1,2*168 y dejar un 20 % de márgenes alrededor de estos períodos.
- La serie temporal de entrada debe ser normal. Es decir, agregado en contenedores constantes, que siempre es el caso si se ha creado mediante make-series. En caso contrario, el resultado no tendrá sentido.
Devoluciones
La función genera una tabla con dos columnas:
- puntos: matriz dinámica que contiene los puntos que se han encontrado, en unidades del tamaño de la discretización, ordenadas por sus puntuaciones.
- scores: matriz dinámica que contiene valores entre 0 y 1. Cada matriz mide la importancia de un período en su posición respectiva en la matriz de períodos .
Ejemplo
La consulta siguiente inserta una instantánea de un mes del tráfico de una aplicación, agregada dos veces al día. El tamaño de la papelera es de 12 horas.
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
La ejecución series_periods_detect()
en esta serie da como resultado el período semanal, de 14 puntos de duración.
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)
Salida
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14.0, 0.0] | [0.84, 0.0] |
Nota
No se encontró el período diario que también se puede ver en el gráfico porque el muestreo es demasiado grueso (tamaño de intervalo de 12h), por lo que un período diario de 2 cubos está por debajo del tamaño mínimo del período de 4 puntos, requerido por el algoritmo.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de