Share via


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

Períodos de serie.

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.