AR, MA и интегрирование: интуиция ARIMA

Разбираем три буквы ARIMA по отдельности: память по значениям (AR), память по ошибкам (MA) и дифференцирование (I).

ARIMA(p, d, q) — модель, объединяющая авторегрессию порядка p, d-кратное дифференцирование и скользящее среднее ошибок порядка q.

Зачем три компоненты

ARIMA — это конструктор из трёх идей, каждая ловит свой тип зависимости. AR говорит, что значение зависит от прошлых значений. MA — что оно зависит от прошлых ошибок (неожиданных шоков). I приводит ряд к стационарности дифференцированием. Вместе они описывают широкий класс рядов спроса и трафика.

Почему именно эти три, а не одна универсальная формула? Потому что в реальных рядах перемешаны разные виды зависимости, и каждая буква отвечает за свою. Рассмотрите дневной спрос на товар. Часть сегодняшнего спроса предсказуема по вчерашнему — клиенты, привычки, инерция рынка: это работа AR. Но иногда случается шок — внезапная рекламная вспышка, упоминание у блогера, сбой у конкурента — и этот шок «эхом» отдаётся завтра, а потом гаснет: это MA. И поверх всего бизнес растёт год от года, так что ряд нестационарен — уровень куда-то ползёт; чтобы модель не путала рост с зависимостью, ряд дифференцируют, и это буква I.

Сила ARIMA в том, что эти три кубика комбинируются. Чистый рост трафика без памяти о шоках — это ARIMA с одной активной компонентой; спрос с инерцией и разовыми всплесками — с двумя; сложный ряд продаж с трендом, инерцией и эхом шоков задействует все три. Вместо того чтобы держать в голове десяток отдельных моделей, вы держите один конструктор и крутите три ручки p, d, q. Именно поэтому ARIMA остаётся рабочей лошадкой прогнозирования спроса и трафика спустя полвека после появления.

AR: авторегрессия

В AR(1) каждая точка — это доля предыдущей плюс шум: x_t = c + φ·x_{t-1} + ε. Оценим φ и c простым МНК и дадим прогноз.

Слово «авторегрессия» буквально означает «регрессия на саму себя»: мы делаем обычную линейную регрессию, но в роли предиктора выступает не сторонняя переменная, а прошлое значение того же ряда. Поэтому оценить AR(1) можно тем же методом наименьших квадратов, что и любую прямую: составляем пары (вчера, сегодня) и ищем наклон φ и сдвиг c, лучше всего описывающие облако точек.

xs = [2, 4, 5, 7, 8, 10, 11]
X = xs[:-1]; Y = xs[1:]               # пары (x_{t-1}, x_t)
mx = sum(X)/len(X); my = sum(Y)/len(Y)
phi = sum((X[i]-mx)*(Y[i]-my) for i in range(len(X))) / sum((x-mx)**2 for x in X)
c = my - phi*mx
print("phi:", round(phi, 3), " c:", round(c, 3))
print("Прогноз следующей точки:", round(c + phi*xs[-1], 2))

Вывод:

phi: 0.929  c: 1.929
Прогноз следующей точки: 12.14

Коэффициент φ=0.929 близок к 1 — ряд сильно «помнит» предыдущее значение. Прогноз 12.14 продолжает рост. Если бы φ был около 0, прошлое не помогало бы, и лучшим прогнозом стало бы среднее.

Величина φ — это, по сути, мера инерции ряда. Когда φ близок к 1, толчок сохраняется надолго: высокое значение тянет за собой высокое, ряд медленно «забывает» прошлое. Когда φ близок к 0, память отсутствует — каждая точка почти независима, и единственный разумный прогноз это среднее. А значение φ вблизи единицы или выше — тревожный сигнал: ряд близок к нестационарности (случайному блужданию), и его, скорее всего, надо дифференцировать, то есть подключить букву I. Так оценка одного коэффициента сразу подсказывает, нужна ли вообще компонента интегрирования.

MA: скользящее среднее ошибок

MA(q) моделирует значение как взвешенную сумму последних ошибок прогноза: x_t = μ + ε_t + θ·ε_{t-1}. Это улавливает короткие шоки, которые «эхом» отдаются на следующем шаге, но быстро затухают. Не путайте MA-компоненту ARIMA со скользящим средним-сглаживателем: здесь усредняются ошибки, а не значения.

Интуиция MA лучше всего видна на примере. Допустим, вчера случился неожиданный всплеск продаж, которого модель не предвидела — это и есть ошибка ε_{t-1}, расхождение факта с прогнозом. Часть этого всплеска естественно «перетекает» на сегодня: люди, узнавшие о товаре вчера, докупают сегодня. Коэффициент θ и описывает, какая доля вчерашнего сюрприза отзывается сегодня. В отличие от AR, где влияние прошлого тянется длинным хвостом, MA-эффект резко обрывается: MA(1) помнит ровно один шаг назад, MA(2) — два, и дальше эхо смолкает. Поэтому MA хорош для рядов с короткой, быстро затухающей реакцией на разовые события.

I: интегрирование

Буква I (Integrated) означает, что перед AR и MA ряд d раз дифференцируют, чтобы убрать тренд и сделать его стационарным. Прогноз затем «интегрируют» обратно — суммируют приращения, возвращаясь в исходную шкалу. Именно d связывает ARIMA с темой стационарности из раздела 3.

Дифференцирование — это переход от вопроса «сколько» к вопросу «насколько изменилось». Вместо ряда выручки 100, 110, 125, 140 мы работаем с приращениями 10, 15, 15 — и растущий тренд исчезает, остаётся стационарный ряд изменений, к которому уже корректно применять AR и MA. Чаще всего хватает d=1; d=2 нужно, когда ускоряется сам темп роста (например, экспоненциальный рост подписчиков). Название «интегрированная» отражает обратный ход: получив прогноз приращений, его кумулятивно суммируют («интегрируют») обратно к уровням, возвращая результат в привычную шкалу рублей или посещений. Без этого шага модель прогнозировала бы изменения, а бизнесу нужны абсолютные значения.

Как работает под капотом

ARIMA оценивает все коэффициенты (φ для AR, θ для MA) совместно методом максимального правдоподобия, а не отдельными регрессиями, как мы сделали для наглядности. MA-часть нелинейна по параметрам (ошибки зависят от самих коэффициентов), поэтому оценка итеративная. AR и MA взаимозаменяемы в некотором смысле: чистый AR(∞) эквивалентен MA(1) и наоборот — отсюда выбор экономной комбинации p и q.

Откуда берётся нелинейность MA? Ошибки ε — это не данные, которые мы видим напрямую: они сами зависят от прогноза, а прогноз — от коэффициента θ. Получается замкнутый круг: чтобы посчитать ошибки, нужен θ, а чтобы оценить θ, нужны ошибки. Разорвать его одним МНК нельзя, поэтому алгоритм действует итеративно — берёт начальное приближение, прогоняет ряд, пересчитывает ошибки, уточняет коэффициенты и повторяет, пока правдоподобие не перестанет расти. Эта взаимозаменяемость AR и MA объясняет и важный практический принцип: одну и ту же зависимость часто можно описать либо длинным AR, либо коротким MA. Хорошая модель — экономная: лучше MA(1) с одним параметром, чем AR с пятью, если они объясняют данные одинаково. Этот принцип бережливости (parsimony) — стержень всего подбора ARIMA.

Частые ошибки

  • Путать MA-компоненту ARIMA (среднее ошибок) со скользящим средним-сглаживателем (среднее значений).
  • Подбирать AR(p) на нестационарном ряде без дифференцирования.
  • Наращивать p и q до больших значений — переобучение; обычно хватает 0-2.
  • Прогнозировать на много шагов вперёд и удивляться, что прогноз AR быстро сходится к среднему — это нормальное свойство модели, а не её поломка.

Последний пункт стоит запомнить отдельно. AR-прогноз на горизонт затухает к долгосрочному среднему ряда, потому что неопределённость накапливается, а память о последнем известном значении на каждом шаге множится на φ меньше единицы. Это значит, что ARIMA честнее всего работает на коротком и среднем горизонте; для дальнего прогноза она даёт осторожную «плоскую» линию около среднего с расширяющимся доверительным интервалом. Ожидать от неё точного предсказания на год вперёд по дневным данным — значит требовать невозможного.

Итоги

  • AR ловит зависимость от прошлых значений, MA — от прошлых ошибок, I приводит к стационарности.
  • MA-компонента ARIMA — это среднее ошибок, а не значений.
  • Параметры ARIMA оцениваются совместно по максимуму правдоподобия.
  • Принцип бережливости: предпочитайте простую комбинацию p и q, если она объясняет данные не хуже сложной.
Проверьте себя
1. Что моделирует MA-компонента в ARIMA?
AСкользящее среднее значений ряда
BЗависимость значения от прошлых ошибок прогноза
CТренд ряда
DСезонные индексы
2. Что означает буква I (d) в ARIMA?
AИнтерполяцию пропусков
BЧисло дифференцирований для приведения ряда к стационарности
CКоличество сезонов
DИнтервал прогноза