series_periods_detect()
Находит наиболее значимые периоды, существующие во временном ряду.
Синтаксис
series_periods_detect(
num_periods серии,
min_period max_period,
,
)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
серия | dynamic |
✔️ | Массив числовых значений, как правило, результирующий результат операторов make-series или make_list . |
min_period | real |
✔️ | Минимальный период, для которого требуется выполнить поиск. |
max_period | real |
✔️ | Максимальный период, для которого следует искать. |
num_periods | long |
✔️ | Максимальное требуемое количество периодов. Это число будет длиной выходных динамических массивов. |
Внимание
- Алгоритм может обнаруживать периоды, содержащие по крайней мере 4 точки и не более половины длины ряда.
- Задайте min_period немного ниже и max_period чуть выше периодов, которые вы ожидаете найти в временных рядах. Например, если у вас есть почасовой агрегированный сигнал, и вы ищете как ежедневные, так и еженедельные периоды (24 и 168 часов соответственно), можно задать min_period=0,8*24, max_period=1,2*168 и оставить 20% полей вокруг этих периодов.
- Входной временный ряд должен быть регулярным. То есть, агрегированный в константных ячейках, который всегда является случаем, если он был создан с помощью make-series. В противном случае выходные данные не имеют смысла.
Возвраты
Функция выводит таблицу с двумя столбцами:
- периоды: динамический массив, содержащий найденные периоды в единицах размера ячейки, упорядоченных по их оценкам.
- оценки: динамический массив, содержащий значения от 0 до 1. Каждый массив измеряет значение периода в соответствующей позиции в массиве периодов .
Пример
Следующий запрос внедряет моментальный снимок месяца трафика приложения, агрегированный дважды в день. Размер ячейки составляет 12 часов.
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
Выполнение series_periods_detect()
в этой серии приводит к еженедельной периоду, 14 очков длину.
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)
Выходные данные
series_periods_detect_y_periods | series_periods_detect_y_periods_scores |
---|---|
[14.0, 0.0] | [0.84, 0.0] |
Примечание.
Ежедневный период, который также можно увидеть на диаграмме, не найден, так как выборка слишком грубо (размер 12h bin), поэтому ежедневный период 2 ячейки ниже минимального размера периода 4 пункта, необходимого алгоритму.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по