Данные во времени: частота, пропуски, календарь

Прогнозирование и временные ряды · Урок 2 / 22

Ряд — это не таблица со столбцом даты

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

Частота и выравнивание

Сначала приведите ряд к регулярной сетке: одна строка на один период, без дыр и без дублей. Проверка занимает минуту и находит удивительно много: пропущенные дни, два значения на одну дату из-за перезаливки, смену часового пояса, переход на летнее время, где один день содержит 23 или 25 часов.

Диагностика сетки (до любой модели)
периодов ожидается:  Sum(календарь от min до max даты) = 1095
строк в данных:                                        1081
дублей по дате:                                           3
пропущенных дат:                                         17
из них подряд:                    2024-03-08 .. 2024-03-19
нулевых значений:                                       142
последняя дата:     2026-05-02 (лаг 3 дня к сегодня)

Пропуск и ноль — разные вещи

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

  • Не работала выгрузка. Заполнять нулём нельзя — модель выучит фиктивные провалы. Либо восстанавливайте, либо помечайте период как отсутствующий.
  • Магазин был закрыт. Ноль корректен, но должен сопровождаться признаком «закрыто», иначе модель решит, что спрос упал.
  • Товара не было на полке. Ноль в продажах, но не ноль в спросе. Это самый дорогой случай: модель учится на подавленном спросе и занижает заказ, из-за чего товара снова нет.
Инсайт. Продажи не равны спросу. Всё, что вы видите в истории, уже прошло через ограничение доступности, и модель, обученная на продажах, воспроизводит дефицит.
Частая ошибка. Заполнять пропуски интерполяцией по соседним точкам, включая точки справа. Это подмешивает будущее в прошлое и даёт красивый тест при бесполезном проде.
Про-совет. Заведите отдельную таблицу-календарь с флагами: выходной, праздник, акция, закрытие точки, отсутствие товара, известный сбой сбора. Она понадобится и как признаки модели, и как маска для исключения периодов из оценки.

Календарь — половина точности

Для дневных рядов календарь объясняет больше, чем любая модель: день недели, праздники, предпраздничные закупочные пики, дни зарплаты, длинные выходные, смещающиеся даты вроде Пасхи, номер недели месяца. Если календарь не подан явно, модель попытается вывести его из ряда — и выведет плохо, потому что праздник в истории встречался три раза.

Отдельная ловушка — сравнение месяцев. Февраль короче января на три дня, а число рабочих дней в месяце гуляет на два-три. Значительная часть «сезонности выручки по месяцам» в реальности является календарным артефактом и исчезает при нормировке на число рабочих дней.

Агрегация меняет задачу

Один и тот же ряд на разной гранулярности ведёт себя по-разному. Дневные продажи шумны, недельные заметно ровнее, месячные почти гладкие. Соблазн агрегировать до того уровня, где ошибка выглядит прилично, велик, но гранулярность диктует решение, а не отчёт: если заказ делается по дням, недельная точность вас не спасёт. И обратное правило тоже верно: не дробите ряд мельче, чем принимается решение, иначе вы платите шумом за детализацию, которой никто не воспользуется.

Шпаргалка

  • Приведите ряд к регулярной сетке и посчитайте дыры и дубли.
  • Пропуск, ноль и отсутствие товара — три разных факта.
  • Продажи не равны спросу.
  • Календарь подавайте явно; месяцы нормируйте на рабочие дни.
1. Чем пропуск отличается от нуля?
2. Почему продажи не равны спросу?
3. Что стоит за частью «месячной сезонности» выручки?
Задание — проверяет ИИ

Возьмите свой реальный ряд (продажи, обращения, нагрузку) минимум за год. Приведите его к регулярной сетке и приложите диагностику: сколько периодов ожидается по календарю, сколько строк есть, сколько дублей, сколько пропущенных дат и идут ли они подряд, сколько нулей, каков лаг последней даты к сегодня. Для каждого типа пропуска объясните причину и что вы с ним сделали и почему.

← Назад

🔒 Ответьте на вопрос верно, чтобы перейти к следующему уроку.

Данные во времени: частота, пропуски, календарь — Прогнозирование и временные ряды — Skilvy