Перейти к основному содержимому
Перейти к основному содержимому

Функции для анализа временных рядов

Ниже представлены функции, используемые для анализа серии данных.

seriesOutliersDetectTukey

Обнаруживает выбросы в серии данных с использованием ящиков Тьюки.

Синтаксис

seriesOutliersDetectTukey(series);
seriesOutliersDetectTukey(series, min_percentile, max_percentile, K);

Аргументы

  • series - Массив числовых значений.
  • min_percentile - Минимальный процентиль, используемый для вычисления интерквартильного размаха (IQR). Значение должно находиться в диапазоне [0.02,0.98]. По умолчанию 0.25.
  • max_percentile - Максимальный процентиль, используемый для вычисления интерквартильного размаха (IQR). Значение должно находиться в диапазоне [0.02,0.98]. По умолчанию 0.75.
  • K - Ненегативное постоянное значение для обнаружения легких или более сильных выбросов. Значение по умолчанию 1.5.

Для обнаружения выбросов в series требуется как минимум четыре точки данных.

Возвращаемое значение

  • Возвращает массив той же длины, что и входной массив, где каждое значение представляет собой оценку возможной аномалии соответствующего элемента в серии. Ненулевое значение указывает на возможную аномалию. Массив.

Примеры

Запрос:

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0;

Результат:

┌───────────print_0─────────────────┐
│[0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0] │
└───────────────────────────────────┘

Запрос:

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4.50, 5, 12, 45, 12, 3.40, 3, 4, 5, 6], 0.2, 0.8, 1.5) AS print_0;

Результат:

┌─print_0──────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,19.5,0,0,0,0,0,0] │
└──────────────────────────────────────┘

seriesPeriodDetectFFT

Находит период заданной серии данных с использованием ФФТ - быстрого преобразования Фурье.

Синтаксис

seriesPeriodDetectFFT(series);

Аргументы

  • series - Массив числовых значений.

Возвращаемое значение

  • Реальное значение, равное периоду серии данных. NaN, если количество точек данных меньше четырех. Float64.

Примеры

Запрос:

SELECT seriesPeriodDetectFFT([1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6]) AS print_0;

Результат:

┌───────────print_0──────┐
│                      3 │
└────────────────────────┘
SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0;

Результат:

┌─print_0─┐
│       6 │
└─────────┘

seriesDecomposeSTL

Декомпозирует серию данных с использованием STL (процедура декомпозиции сезонных и трендовых процессов на основе Loess) на сезонную, трендовую и остаточную компоненты.

Синтаксис

seriesDecomposeSTL(series, period);

Аргументы

  • series - Массив числовых значений.
  • period - Положительное целое число.

Количество точек данных в series должно быть как минимум в два раза больше значения period.

Возвращаемое значение

  • Массив из четырех массивов, где первый массив включает сезонные компоненты, второй массив - тренд, третий массив - остаточная компонента, и четвертый массив - базовая (сезонная + тренд) компонента. Массив.

Примеры

Запрос:

SELECT seriesDecomposeSTL([10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34], 3) AS print_0;

Результат:

┌───────────print_0──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [[
        -13.529999, -3.1799996, 16.71,      -13.53,     -3.1799996, 16.71,      -13.53,     -3.1799996,
        16.71,      -13.530001, -3.18,      16.710001,  -13.530001, -3.1800003, 16.710001,  -13.530001,
        -3.1800003, 16.710001,  -13.530001, -3.1799994, 16.71,      -13.529999, -3.1799994, 16.709997
    ],
    [
        23.63,     23.63,     23.630003, 23.630001, 23.630001, 23.630001, 23.630001, 23.630001,
        23.630001, 23.630001, 23.630001, 23.63,     23.630001, 23.630001, 23.63,     23.630001,
        23.630001, 23.63,     23.630001, 23.630001, 23.630001, 23.630001, 23.630001, 23.630003
    ],
    [
        0, 0.0000019073486, -0.0000019073486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0000019073486, 0,
        0
    ],
    [
        10.1, 20.449999, 40.340004, 10.100001, 20.45, 40.34, 10.100001, 20.45, 40.34, 10.1, 20.45, 40.34,
        10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.100002, 20.45, 40.34
    ]]                                                                                                                   │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘