Работа с компонентом Автокорреляция

При анализе и моделировании временных рядов аналитики сталкиваются с необходимостью подтвердить наличие трендов и сезонности, т.к. без учета этих факторов возможны серьезные ошибки в результатах анализа данных и прогнозах.

Автокорреляция успешно решает подобные проблемы, помогая отслеживать устойчивые и регулярные изменения в данных за выбранный промежуток времени.

В данном демопримере показан автокорреляционный анализ объёма продаж. Это позволяет определить силу влияния прошлых значений на будущие, выявить возможные тренды и сезонность.

Запустить демо

Установить локально

Описание алгоритма

1. Импорт данных

Таблица Данные для анализа:

Имя Метка
id Артикул
period Дата
volume_of_sales Объем продаж

2. Автокорреляция

а) Фильтр по одному артикулу

Для отбора одного артикула из списка используется узел Фильтр строк, в котором заданы следующие настройки:

  • Поле — Артикул
  • Условие — =
  • Значение для сравнения — 1
б) Автокорреляция по одному артикулу

В узле Автокорреляция на первой странице мастера настроек выбраны следующие параметры:

  • для поля Объем продаж установлено назначение Используемое
  • для полей Артикул и Дата установлено назначение Не задано

На следующей странице заданы настройки:

  • Количество отсчетов — 13
  • Область расчета АКФ — Автоматически
  • Рассчитывать ЧАКФ — поставлена галочка

Примечание: Следует учитывать, что с увеличением лага на единицу число пар значений, по которым рассчитывается коэффициент автокорреляции, уменьшается на 1. Поэтому обычно рекомендуют максимальный порядок коэффициента автокорреляции, равный n/4.

в) Автокорреляция по всем артикулам

Расчет по всем артикулам выполняется с помощью узла Цикл, который настроен на Автокорреляция по одному артикулу. В настройках задан следующий способ итерации цикла:

  • Вид цикла — Групповая обработка
  • Вид групповой обработки — Разбиение по уникальным значениям полей по полю Артикул

Результаты обработки можно посмотреть в узле Полученные данные с помощью визуализатора Куб. Для наглядности также добавлена Диаграмма. В таблице видно, что полученные значения АКФ медленно убывают, что позволяет предполагать наличие тренда. На диаграмме наблюдаются регулярные пики АКФ в весенние и зимние месяцы для всех артикулов. Данные колебания значений позволяют построить гипотезу о сезонности.

3. Консолидация данных

а) Фильтр строк

Для подтверждения устойчивости зависимости между соседними значениями ряда используется лаг 2, помогая отделить тренд от шума и случайных колебаний. Этот лаг дополняет информацию от лага 1 и повышает точность выявления тренда. Однако выбор лага должен учитывать особенности данных, и часто анализируются несколько лагов (1, 2, 3 и т.д.) с помощью автокорреляционной функции для полной картины.

В данном примере значение лага установлено меньше или равно двум, что позволяет наблюдать тренд через постепенное снижение или повышение автокорреляционной функции на малых лагах.

В фильтре заданы следующие настройки:

  • Поле — Лаг
  • Условие — <=
  • Значение для сравнения — 2
б) Проверка наличия тренда

В подмодели Проверка наличия тренда исследуется гипотеза, что во временных рядах присутствует тренд.

В узле Присвоение значения с помощью функций IF и Data проверяется, что значение АКФ уменьшается и столбец Объем продаж: Значимость = TRUE. В зависимости от выполнения этого условия полю trend_check присваивается значение 1 или 0 по каждому артикулу.

Также с помощью функции CumulativeSum в данном узле вычисляется сумма присвоенных значений для каждого артикула.

В узле Группировка выбирается значение тренда для максимального лага по артикулу. В узле заданы следующие параметры:

  • Группа — Артикул
  • Показатели — Лаг, Проверка
  • Метод агрегации для всех показателей — Максимум

В узле Проверка с помощью функции IF проверяется равно ли значение суммы, полученной ранее, максимальному лагу.

В узле Исключение лишних отсекаются поля, которые не потребуются для дальнейших вычислений.

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

в) Проверка сезонности

В подмодели Проверка сезонности проверяется ранее выдвинутая гипотеза о наличии сезонности.

С помощью обработчика Сортировка данные структурируются по возрастанию лага.

В узле Группировка заданы следующие параметры:

  • Группа — Артикул
  • Показатели — Объем продаж: АКФ, Объем продаж: ЧАКФ, Лаг, Объем продаж: Значимость
  • Метод агрегации для всех показателей — Первый

В узле Выявление сезонности используется функция IF для проверки сезонности по АФК и ЧАФК.

В узле Исключение лишних отсекаются поля, которые использовались в прошлых вычислениях.

Хотя частичная автокорреляция(ЧАКФ) менее чувствительна к сезонности, регулярное появление высоких положительных или отрицательных коэффициентов на фиксированных интервалах тоже может свидетельствовать о её наличии.

Если автокорреляционные коэффициенты демонстрируют регулярные повторяющиеся максимумы и минимумы на определенных интервалах (лагах), это указывает на возможное наличие сезонности. В данном примере временные ряды показывают положительные автокорреляции каждые 12 месяцев, значит присутствует годовое колебание.


Декомпозиция временных рядов

Пример построения прогноза продаж с использованием узла ARIMAX

Очистка данных с использованием узла Дубликаты и противоречия

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2, POPCNT.