Как использовать эти модели и различия между ними

Временной ряд: что это такое?

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

Цель этой статьи — обсудить три модели временных рядов — ARMA, ARIMA и SARIMA — для задач регрессии, в которых прогнозируются числовые значения. Основываясь на предположении, что данные коррелируют во времени, регрессия временных рядов отличается от других регрессионных моделей тем, что предсказывает будущие результаты из предыдущих периодов.

Данные временных рядов: как вы их описываете?

В качестве первого шага можно использовать sns.lineplot для визуализации данных временных рядов. Эта визуализация иллюстрирует восходящий тренд данных временного ряда «Производство электроэнергии» с некоторыми повторяющимися закономерностями.

Визуализация временных рядов (изображение автора)

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

  • Долгосрочное восходящее или нисходящее изменение среднего значения называется трендом — T(t).
  • Существует периодическое изменение значения, которое следует определенной схеме, известной как сезонность — S(t).
  • Остаток — это случайное колебание данных временного ряда, которое не следует какой-либо закономерности.

Добавляя или умножая их, их можно комбинировать:

С помощью Python мы разлагаем данные временных рядов на три компонента с помощью Season_decompose, а decomposition.plot() дает нам визуальное представление тренда, сезонности и остатка. В этом фрагменте кода показаны сезонные закономерности путем указания аддитивной модели и периода, равного двенадцати.

Стационарность

Стационарные и нестационарные данные можно классифицировать как временные ряды. Предположения модели о стационарных данных основаны на стационарных данных, поэтому стационарность является важным свойством. Однако данные временных рядов часто демонстрируют нестационарное поведение. Чтобы определить нестационарные временные ряды и преобразовать их с помощью различных методов, таких как дифференцирование, мы должны понять, как их идентифицировать.

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

Методы обнаружения стационарности

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

В качестве первого шага тест ADF (расширенный тест Дикки Фуллера) проверяет стационарность, проверяя нулевую гипотезу о нестационарности данных и альтернативную гипотезу о стационарности данных.

Тест ADF генерирует p-значение меньше 0,05, что дает более убедительные доказательства того, что данные не являются стационарными.

Тест ADF можно выполнить с помощью adfuller из модуля statsmodels.tsa.stattools, который генерирует значение ADF и p-значение. Этот набор данных является нестационарным, поскольку значение p 0,29 больше 0,05.

Функция автокорреляции (ACF) суммирует двустороннюю корреляцию между текущим наблюдением и прошлым наблюдением. Когда отставание равно 1, значение ACF (ось Y) составляет примерно 0,85, что означает, что корреляция между последним наблюдением и его предыдущим наблюдением составляет примерно 0,85. Параметр скользящего среднего также будет определяться с помощью ACF позже в этом разделе.

Графики ACF с 40 лагами генерируются с помощью sm.graphics.tsa.plot_acf.

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

Различие и стационарность

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

удалить тренд

Мы используем сдвиг (1), чтобы сместить исходные данные временного ряда (показаны слева) на одну строку вниз (показаны справа) и удалить компоненты тренда, взяв разницу. Когда NaN вычитается, dropna удаляет пустую строку.

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

Различие тенденций (изображение автора)

2. убрать сезонность

На приведенном выше графике ACF мы видим, что наблюдения имеют тенденцию быть более коррелированными при лагах 12, 24, 36 и т. д., таким образом, будучи более сезонными при лаге 12. Стационарность может быть повторно протестирована с использованием ADF, который имеет p-значение около 2.31e-12, когда сдвиг (12) применяется для устранения сезонности.

Приведенные ниже данные временного ряда становятся менее регулярными после удаления сезонной модели, и значение ACF быстро падает до стабильного диапазона.

Сезонная разница (изображение автора)

Модели ARMA, ARIMA и SARIMA

Цель этого раздела — представить три разные модели — ARMA, ARIMA и SARIMA — которые можно использовать для прогнозирования временных рядов. Эти модели, как правило, способны выполнять следующие функции:

ARMA — базовая модель

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

Авторегрессионная модель — AR(p)

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

Текущий момент времени зависит от значений из трех предыдущих моментов времени, например, если p = 3.

Каков наилучший способ определения значений p?

В большинстве случаев значения p определяются функцией частичной автокорреляции (PACF). Xt-3, запаздывающее наблюдение временного ряда Xt, может быть коррелировано с Xt-2, Xt-1 и Сам Xt-3 также может коррелировать с его запаздывающими значениями. Используя PACF, прошлые наблюдения можно визуализировать как прямой вклад в текущие наблюдения. Соответственно, когда запаздывание = 3, PACF составляет приблизительно -0,60, отражая влияние запаздывания 3 на исходную точку данных, но не отражает составной эффект запаздывания 1 и запаздывания 2. Для модели AR(p) значения p равны определяется в первый раз, когда PACF попадает в пределы значимого порога (синяя область), как показано в приведенном ниже примере с p = 4.

PACF (изображение автора)

MR(q) — Модель скользящего среднего

В моделях скользящего среднего значения MR(q) корректируется в соответствии со средними членами ошибок из предыдущих q наблюдений, где e представляет собой члены ошибок, а θ представляет веса. Размер окна скользящего среднего определяется значением qvalue.

Каково значение q?

Значение q можно определить с помощью АКФ. Обычно выбирается первое запаздывающее значение с приближающимся к нулю значением ACF. Основываясь на приведенном ниже графике АКФ, мы бы выбрали q=4.

АКФ (изображение автора)

Мы можем построить модель ARMA, указав параметр порядка — order(p, d, q) — в statsmodels.tsa.arima.model (который будет обсуждаться в следующем разделе). Модели ARMA работают, когда d = 0. Для данных временного ряда df «IPG2211A2N» мы подгоняем модель ARIMA (p = 3 и q = 4).

Оценка модели

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

Визуализация

В первом методе фактические данные наносятся на график вместе с прогнозами, а производительность модели проверяется визуально. Как часть примера кода, ARMA используется для создания прогнозов от индекса 300 до 396 (того же размера, что и df_test), с последующей визуализацией фактических данных по сравнению с прогнозируемыми данными. Согласно приведенной ниже диаграмме, прогнозы со временем отклоняются от фактических значений, поскольку ARMA не улавливает тенденцию.

Прогнозы ARMA (изображение автора)

2. RMSE (среднеквадратичная ошибка)

Методы RMSE или MSE можно использовать для оценки моделей регрессии временных рядов.

Чем больше RMSE, тем больше разница между фактическим значением и прогнозируемым значением. Среднеквадратичное отклонение ARMA, равное 6,56, можно рассчитать с помощью приведенного ниже кода.

3. AIC (информационные критерии Акаике)

В качестве третьего метода интерпретации производительности модели используется AIC = 2k — 2ln(L), который рассчитывается с использованием логарифмического правдоподобия (L) и количества параметров (k). Чтобы оптимизировать модель с более низким AIC, нам нужно сделать следующее:

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

Значение AIC модели ARMA составляет 1547,26, его можно получить с помощью функции summary().

Резюме ARMA (изображение автора)

ARIMA: адресная тенденция

В ARIMA интегрированный компонент (обратный дифференцированию) включен в модель ARMA.

В ARIMA компоненты степени различия (обозначенные как d) вводятся в авторегрессионную модель (AR) и модель скользящего среднего (MA). Данные временных рядов анализируются при наличии очевидной тенденции. Из примера ARMA было очевидно, что модель не смогла определить тенденцию в данных, что привело к отклонению прогнозируемых значений от реальных.

Мы объяснили, как разность используется для удаления тренда в разделе «Стационарность и разность». Следующим шагом является изучение того, как это повышает точность прогнозов.

По какой формуле определяется d?

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

Чтобы определить, являются ли данные стационарными, мы можем сначала использовать тест ADF. Если данные стационарны, то нет необходимости различать, поэтому d = 0. Мы получаем p-значение 0,29 из теста ADF перед дифференцированием.

Мы обнаружили, что значение p намного ниже 0,05 при применении разности трендов diff = df[‘IPG2211A2N’] — df[‘IPG2211A2N’].shift(1) и использовании теста ADF. В результате преобразованные данные временных рядов, скорее всего, будут стационарными.

Данные все еще могут быть нестационарными, и в этом случае может применяться второй уровень дифференцирования, например. diff2 = diff — diff.shift(1).

В этом примере d равно 1, и мы строим модель ARIMA, используя ту же функцию, что и в модели ARMA.

Резюме ARIMA (изображение автора)

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

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

Предсказания ARIMA (изображение автора)

SARIMA: адресная сезонность

Как следует из названия, SARIMA — это метод анализа временных рядов, основанный на сезонных закономерностях. Ранее мы обсуждали, как можно использовать сезонные различия для устранения сезонных эффектов. Мы можем реализовать эту функциональность, используя SARIMAX(p, d, q) x (P, D, Q, s), чтобы прогнозировать временные ряды с сезонными изменениями. Порядок модели (P, D, Q, s) представлен первым членом, а его сезонные компоненты - (P, D, Q, s). В сезонном порядке P, D и Q представляют авторегрессию, разность и скользящее среднее значение. В каждом периоде s – это количество наблюдений.

Каково значение с?

На графике ACF есть некоторые признаки сезонности. Корреляция между исходным наблюдением и каждыми 12 задержками выше, чем корреляция между каждыми 6 задержками (как показано ниже).

Ранее мы не наблюдали сезонности в визуализации после сдвига данных с 12 лагами. В этом примере s установлено равным 12.

Резюме SARIMA (изображение автора)

Согласно сводному результату, AIC еще больше снизился с 1528,48 для ARIMA до 1277,41 для SARIMA.

Прогнозы теперь отражают сезонный характер, и RMSE падает до 4,04%.

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