Интерактивная статистика
Модуль 8 «Временные ряды и прогноз»
Прогресспройдено 0 / 63

Из чего состоит ряд: тренд, сезонность, шум

Регрессия из прошлого модуля отвечала на вопрос «что влияет на метрику». Второй вопрос бизнеса — «а что будет дальше», и подставить в ту же регрессию время вместо фактора не выйдет. Линия на дашборде складывается сразу из нескольких движений: медленного роста, недельного цикла и случайных колебаний. Пока они не разделены, воскресный подъём легко принять за результат своей работы. Ползунки задают силу каждой составляющей, кнопка «разложить» показывает их по отдельности.

что видно на дашборде15585дни →

Верхняя линия — сумма трёх нижних. Бирюзовая поверх неё — тренд, оценённый скользящим средним по 7 дням.

Перед вами выручка по дням за три месяца — обычный график из отчёта. Линия идёт вверх, но дёргается: то подъём, то провал, и не сразу понятно, где закономерность, а где случайность. Первый шаг работы с рядом — не строить прогноз, а разобрать эту линию на части. Нажмите «разложить».

Что это значит

Первое, что стоит сделать с любой метрикой в динамике, — посмотреть на неё в разложении, а не в исходном виде. В pandas и statsmodels это одна строка: seasonal_decompose или STL. Дальше обсуждать «упало ли» имеет смысл только по тренду.

Период задаётся предметной областью, а не подбирается: для дневных данных это 7, для часовых — 24, для месячных — 12. Ошиблись с периодом — сезонность утечёт в остаток, и разложение станет бессмысленным.

Календарные эффекты сезонностью не описываются: 8 марта, чёрная пятница, перенос выходных. Они попадут в остаток и будут выглядеть выбросами, пока их не завести в модель отдельным признаком — этим займёмся в уроке про SARIMAX.

Где это встречается

Розница живёт недельным циклом: пятница и суббота дают заметно больше будней. Доставка еды — ещё и дневным: обеденный и вечерний пики.

Тренд и сезонность легко перепутать, если смотреть в короткое окно. Три растущих дня подряд внутри недельной волны — не тренд, а участок подъёма цикла.

Государственная статистика публикует показатели «с исключением сезонности» именно поэтому: без такой поправки сравнивать январь с декабрём бессмысленно, а решения принимаются по сравнению.

Определения

Временной ряд
последовательность значений метрики, упорядоченная по времени, с фиксированным шагом: день, неделя, месяц.
По-простому: значения метрики по дням подряд.
Тренд
медленное направленное движение ряда, остающееся после того, как убраны циклические и случайные колебания.
По-простому: куда метрика движется в целом.
Сезонность
колебание с известным периодом, повторяющееся из цикла в цикл: день недели, месяц года, час суток.
По-простому: повторяющийся цикл — будни против выходных.
Остаток
то, что осталось от ряда после вычитания тренда и сезонности.
По-простому: необъяснённая часть ряда.
Аддитивное и мультипликативное разложениеy = T + S + E или y = T · S · E
части либо складываются (размах цикла постоянен), либо перемножаются (размах растёт вместе с уровнем).
По-простому: части складываются или перемножаются.

Когда метод врёт (допущения)

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

Скользящее среднее как оценка тренда не определено на краях ряда: у первых и последних дней нет полного окна. Именно на краю прогнозисту нужнее всего, и именно там оценка тренда наименее надёжна.

Подробный разбор: математика и механизм (необязательно)

Классическое разложение скользящим средним — простейший из способов. STL (Seasonal-Trend decomposition using Loess) устроен гибче: тренд и сезонность оцениваются локальной регрессией итеративно, сезонная форма может медленно меняться со временем, а к выбросам метод устойчив. Для рядов длиннее пары лет обычно берут именно его.

Разделение на «тренд» и «сезонность» — это соглашение, а не свойство природы. Один и тот же ряд можно разложить по-разному, изменив длину окна: короткое окно отнесёт часть медленных колебаний к тренду, длинное — к остатку. Поэтому корректно говорить «тренд при таком-то сглаживании», а не «истинный тренд ряда».

Дальше →
Такие разборы — в канале

Пишу про аналитику простыми словами: как считать метрики, не наврать в A/B, что спрашивают на собесах и как я собираю этот сайт. Без воды.

Подписаться на канал