Глубокое погружение в золотой стандарт прогнозирования временных рядов
Прогнозирование временных рядов — сложная задача, на которую нет простого ответа. Существует бесчисленное множество статистических моделей, которые утверждают, что превосходят друг друга, но никогда не ясно, какая модель лучше.
При этом модели на основе ARMA часто являются хорошей моделью для начала. Они могут достигать приличных результатов в большинстве задач временных рядов и хорошо подходят в качестве базовой модели в любой задаче временных рядов.
Эта статья представляет собой подробное руководство для начинающих, которое поможет вам понять модели на основе ARIMA.
Введение
Аббревиатура модели ARIMA расшифровывается как «авторегрессивная интегрированная скользящая средняя», и в этой статье мы разделим ее на AR, I и MA.
Компонент авторегрессии — AR(p)
Авторегрессионный компонент модели ARIMA представлен AR(p), где параметр p определяет количество используемых нами запаздывающих рядов.
AR(0): белый шум
Если мы установим параметр p равным нулю (AR (0)), без авторегрессионных терминов. Этот временной ряд — просто белый шум. Каждая точка данных выбирается из распределения со средним значением 0 и дисперсией сигма-квадрата. Это приводит к последовательности случайных чисел, которую нельзя предсказать. Это действительно полезно, поскольку может служить нулевой гипотезой и защищать наши анализы от принятия ложноположительных паттернов.
AR(1): случайные блуждания и колебания
Если для параметра p установлено значение 1, мы учитываем предыдущую временную метку, скорректированную с помощью множителя, а затем добавляем белый шум. Если множитель равен 0, мы получаем белый шум, а если множитель равен 1, мы получаем случайное блуждание. Если множитель находится между 0 ‹ α₁ ‹ 1, то временной ряд будет демонстрировать возврат к среднему. Это означает, что значения имеют тенденцию колебаться около 0 и возвращаться к среднему значению после регрессии от него.
AR(p): члены высшего порядка
Дальнейшее увеличение параметра p просто означает возвращение назад и добавление большего количества временных меток, скорректированных их собственными множителями. Мы можем вернуться так далеко назад, как захотим, но по мере того, как мы возвращаемся назад, более вероятно, что нам следует использовать дополнительные параметры, такие как скользящее среднее (MA (q)).
Скользящая средняя — MA(q)
«Этот компонент — не скользящее среднее, а запаздывание белого шума». — Мэтт Сосна
MA(q)
MA(q) — это модель скользящего среднего, а q — количество запаздывающих условий ошибки прогнозирования в прогнозе. В модели MA(1) наш прогноз представляет собой постоянный член плюс предыдущий член белого шума, умноженный на множитель, добавленный к текущему члену белого шума. Это просто вероятность + статистика, поскольку мы корректируем наш прогноз на основе предыдущих условий белого шума.
Модели ARMA и ARIMA
Архитектуры ARMA и ARIMA — это просто компоненты AR (авторегрессия) и MA (скользящее среднее), взятые вместе.
АРМА
Модель ARMA представляет собой константу плюс сумму задержек AR и их множителей, плюс сумму задержек MA и их множителей плюс белый шум. Это уравнение лежит в основе всех последующих моделей и является основой для многих моделей прогнозирования в различных областях.
АРИМА
Модель ARIMA — это модель ARMA, но с этапом предварительной обработки, включенным в модель, которую мы представляем с помощью I(d). I(d) — порядок разности, то есть количество преобразований, необходимых для того, чтобы данные стали стационарными. Таким образом, модель ARIMA — это просто модель ARMA для разностных временных рядов.
SARIMA, ARIMAX, модели SARIMAX
Модель ARIMA великолепна, но включение в нее сезонных и экзогенных переменных может оказаться чрезвычайно полезным. Поскольку модель ARIMA предполагает, что временной ряд является стационарным, нам нужно использовать другую модель.
САРИМА
Введите SARIMA (сезонный ARIMA). Эта модель очень похожа на модель ARIMA, за исключением того, что есть дополнительный набор компонентов авторегрессии и скользящего среднего. Дополнительные лаги компенсируются частотой сезонности (например, 12 — ежемесячно, 24 — ежечасно).
Модели SARIMA позволяют различать данные по сезонной частоте, а также по несезонным различиям. Узнать, какие параметры являются лучшими, можно с помощью автоматических систем поиска параметров, таких как pmdarina.
АРИМАКС и САРИМАКС
Выше представлена модель SARIMAX. Эта модель учитывает экзогенные переменные, или, другими словами, использует внешние данные в нашем прогнозе. Некоторые реальные примеры экзогенных переменных включают цену на золото, цену на нефть, температуру наружного воздуха, обменный курс.
Интересно думать, что все экзогенные факторы все еще технически косвенно моделируются в прогнозе исторической модели. При этом, если мы включим внешние данные, модель будет реагировать на их влияние намного быстрее, чем если бы мы полагались на влияние запаздывающих условий.
Пример кода
Давайте посмотрим на эти модели в действии на простом примере кода на Python.
Загрузка данных
В этом примере мы будем использовать Набор данных авиапассажиров. Этот набор данных содержит количество авиапассажиров с начала 1949 года до конца 1960 года.
Этот набор данных имеет положительную динамику и годовую сезонность.
Как только набор данных прочитан, индекс устанавливается на дату. Это стандартная практика при работе с данными временных рядов в Pandas, которая упрощает реализацию ARIMA, SARIMA и SARIMAX.
Тенденция
Общее направление данных во времени. Например, если мы смотрим на рост новорожденного ребенка, его рост будет увеличиваться в юности. С другой стороны, кто-то, кто проходит успешную программу по снижению веса, увидит, что его вес со временем будет снижаться.
Сезонность + циклы
Любые сезонные или повторяющиеся узоры с фиксированной частотой. Может быть почасовой, ежемесячной, ежедневной, ежегодной и т. д. Одним из примеров этого является то, что продажи зимних курток увеличиваются в зимние месяцы и снижаются в летние месяцы. Другим примером этого может быть баланс вашего банковского счета. В течение 10 дней в начале каждого месяца ваш баланс имеет тенденцию к снижению, поскольку вы ежемесячно платите за аренду, коммунальные услуги и другие платежи по счетам.
Неровности + шум
Это любые большие всплески или провалы в данных. Одним из примеров этого может быть частота сердечных сокращений, когда вы бежите на 400 метров. Когда вы начинаете гонку, ваш сердечный ритм такой же, как и в течение дня, но во время гонки он поднимается до гораздо более высокого уровня на короткий период времени, прежде чем вернуться к нормальному уровню.
В визуализации данных о пассажирах авиакомпаний ниже мы можем искать эти компоненты. На первый взгляд кажется, что в наборе данных наблюдается положительная тенденция и некоторая сезонность или цикличность. По-видимому, в данных нет каких-либо существенных несоответствий или шума.
Скользящая статистика
Скользящее среднее — отличный способ визуализировать тенденции набора данных. Поскольку набор данных обеспечивает подсчет по месяцам, размер окна 12 даст нам годовое скользящее среднее.
Мы также включим скользящее стандартное отклонение, чтобы увидеть, насколько данные отличаются от скользящего среднего.
Расширенный тест Дики-Фуллера
Расширенный тест Дики-Фуллера используется для определения того, являются ли данные временных рядов стационарными или нет. Подобно t-тесту, мы устанавливаем уровень значимости перед тестом и делаем выводы о гипотезе на основе полученного p-значения.
Нулевая гипотеза: данные не являются стационарными.
Альтернативная гипотеза: данные стационарны.
Чтобы данные были стационарными (т. е. отвергли нулевую гипотезу), тест ADF должен иметь:
- p-значение ‹= уровень значимости (0,01, 0,05, 0,10 и т. д.)
Если p-значение больше уровня значимости, мы можем сказать, что данные, вероятно, не являются стационарными.
Мы можем видеть в тесте ADF ниже, что значение p равно 0,991880, а это означает, что весьма вероятно, что данные не являются стационарными.
Выбор модели ARIMA с Auto-ARIMA
Хотя наши данные почти наверняка не являются стационарными (значение p = 0,991), давайте посмотрим, насколько хорошо стандартная модель ARIMA работает с временными рядами.
Используя функцию auto_arima() из пакета pmdarima
, мы можем выполнить поиск по параметрам оптимальных значений модели.
Диагностика модели
Четыре графика являются результатом функции plot_diagnostics. Стандартизированный остаток, гистограмма плюс оценка KDE, нормальный q-q и коррелограмма.
Мы можем интерпретировать модель как хорошую подгонку на основе следующих условий.
Стандартный остаток
В остатках нет очевидных закономерностей со значениями, имеющими среднее значение, равное нулю, и равномерную дисперсию.
Гистограмма плюс оценка KDE
Кривая KDE должна быть очень похожа на нормальное распределение (отмечено на графике как N (0,1)).
Обычный Q-Q
Большинство точек данных должно лежать на прямой линии
Коррелограмма (график ACF)
95% корреляций для запаздывания больше нуля не должны быть значимыми. Серая область — это доверительная полоса, и если значения выходят за ее пределы, то они являются статистически значимыми. В нашем случае есть несколько значений за пределами этой области, и поэтому нам может потребоваться добавить больше предикторов, чтобы сделать модель более точной.
Затем мы можем использовать модель для прогнозирования количества пассажиров авиакомпаний на следующие 24 месяца.
Как видно из графика ниже, это не очень точный прогноз. Может быть, нужно изменить структуру модели, чтобы она учитывала сезонность?
САРИМА Модель
Теперь давайте попробуем ту же стратегию, что и выше, за исключением того, что мы будем использовать модель SARIMA, чтобы мы могли учитывать сезонность.
Взглянув на диагностику модели, мы можем увидеть некоторые существенные отличия по сравнению со стандартной моделью ARIMA.
Стандартный остаток
Стандартизованный остаток гораздо более согласован на графике, а это означает, что данные ближе к стационарным.
Гистограмма плюс оценка KDE
Кривая KDE похожа на нормальное распределение (здесь мало что изменилось).
Обычный Q-Q
Точки данных сгруппированы гораздо ближе к линии, чем на диагностическом графике ARIMA.
Коррелограмма (график ACF)
Серая область — это доверительная полоса, и если значения выходят за ее пределы, то они являются статистически значимыми. Нам нужны все значения внутри этой области. Добавление компонента сезонности сделало это! Теперь все точки попадают в доверительный интервал 95%.
Затем мы можем использовать модель для прогнозирования количества пассажиров авиакомпаний на следующие 24 месяца, как мы делали это раньше.
Как мы видим из графика ниже, это кажется намного более точным, чем стандартная модель ARIMA!
Выбор модели SARIMAX
Теперь давайте потренируемся добавлять экзогенную переменную. В этом примере я просто добавлю номер месяца в качестве экзогенной переменной, но это не очень полезно, поскольку это уже передается через сезонность.
Обратите внимание, что мы добавляем дополнительные квадратные скобки вокруг данных, передаваемых в модель SARIMAX.
Из следующих прогнозов видно, что мы получаем довольно хорошие прогнозы, а ширина прогнозируемого доверительного интервала уменьшилась. Это означает, что модель более уверена в своих прогнозах.
Заключительные мысли
Пожалуйста, найдите код этой статьи здесь.
Изложение идей своими словами и практическое применение моделей ARIMA — лучший способ учиться. Надеюсь, эта статья может мотивировать других сделать то же самое.
Архитектуры моделей ARIMA обеспечивают большую объяснимость, чем RNN, однако известно, что RNN генерируют более точные прогнозы. Теперь я хорошо разбираюсь в архитектуре модели ARIMA, мне нужно изучить модели глубокого обучения LSTM и RNN для прогнозирования данных временных рядов!
Дополнительная литература
На протяжении всего блокнота я реализую и переформулирую идеи из следующих источников. Спасибо всем, что поделились!
Глубокое погружение в модели Arima — Мэтт Сосна ← ДОЛЖЕН ПРОЧИТАТЬ!
Временные ряды для начинающих с ARIMA — автор @Arindam Chatterjee
Модель Арима для прогнозирования временных рядов — автор @Prashant Banerjee
Статья об удалении трендов и сезонности — Джейсон Браунли
Нежное введение в SARIMA — Джейсон Браунли