series_periods_detect()
Encontra os períodos mais significativos existentes em uma série temporal.
Sintaxe
series_periods_detect(
série,
min_period ,
max_period num_periods,
)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
série | dynamic |
✔️ | Uma matriz de valores numéricos, normalmente a saída resultante dos operadores make-series ou make_list . |
min_period | real |
✔️ | O período mínimo para pesquisar. |
max_period | real |
✔️ | O período máximo pelo qual pesquisar. |
num_periods | long |
✔️ | O número máximo necessário de períodos. Esse número será o comprimento das matrizes dinâmicas de saída. |
Importante
- O algoritmo pode detectar períodos contendo pelo menos 4 pontos e no máximo metade da duração da série.
- Defina o min_period um pouco abaixo e max_period um pouco acima dos períodos que você espera encontrar na série temporal. Por exemplo, se você tiver um sinal agregado por hora e procurar períodos diários e semanais (24 e 168 horas, respectivamente), poderá definir min_period=0,8*24, max_period=1,2*168 e deixar margens de 20% em torno desses períodos.
- A série temporal de entrada deve ser regular. Ou seja, agregado em caixas constantes, o que é sempre o caso se tiver sido criado usando make-series. Caso contrário, a saída é insignificante.
Devoluções
A função gera uma tabela com duas colunas:
- períodos: Uma matriz dinâmica contendo os períodos que foram encontrados, em unidades do tamanho do compartimento, ordenados por suas pontuações.
- scores: Uma matriz dinâmica contendo valores entre 0 e 1. Cada matriz mede a significância de um período em sua respectiva posição na matriz de períodos .
Exemplo
A consulta a seguir incorpora um instantâneo de um mês do tráfego de um aplicativo, agregado duas vezes por dia. O tamanho da lixeira é 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
Correndo series_periods_detect()
nesta série, resulta no período semanal, 14 pontos de duração.
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)
Saída
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14.0, 0.0] | [0.84, 0.0] |
Observação
O período diário que também pode ser visto no gráfico não foi encontrado porque a amostragem é muito grossa (tamanho de 12h de lixeira), então um período diário de 2 caixas está abaixo do tamanho mínimo de período de 4 pontos, exigido pelo algoritmo.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de