ARIMA. Прогнозирование временных рядов

Из прошлой статьи мы узнали, что ARMA подход объединяет в себе авторегрессию и скользящее среднее. В этой статье мы поговорим об ARIMA-процессе.

Так что же такое ARIMA-моделирование?

ARIMA (Auto Regressive Integrated Moving Average), как и ARMA представляет собой класс моделей, которые описывают поведение данных на основе исторических значениях ряда. Integrated – процесс который приводит временной ряд к стационарности.

Любые «несезонные» временные ряды, которые демонстрируют закономерность и как правило можно прогнозировать с помощью ARIMA-процесса.

Каждый из компонентов указаны в качестве параметров модели. Используется стандартное обозначение ARIMA (p, d, q). То есть прогнозируемое значение = константа + линейная комбинация лагов (p) + линейная комбинация лагов прогнозируемой ошибки (q).

Далее найдем d (differencing). Как и было сказано цель – сделать временной ряд стационарным. Но в этом процессе нужно быть осторожным так как можно «переоценить» ряд. И так, как же определить правильных порядок d? Правильный порядок должен иметь минимальное различие, необходимое для получения так называемого почти стационарного ряда, который варьируется около среднего значения. Так же нужно рассмотреть графики Автокорреляционной функции (ACF), где первый лаг довольно быстро достигает нуля.

Если автокорреляции положительны для многих лагов (10 и более), то ряд нуждается в дальнейшем вычислении разностей. Но если сама автокорреляция с запаздыванием слишком отрицательна, то ряд, вероятно, чрезмерно вычислялся. Если Вы не можете выбрать между рядами, то рассчитайте стандартное отклонение в разностном ряду, и выберите минимальное значение.

Пример

В данном примере были использованы данные о ценах акции Google (NASDAQ: GOOGL) с 09.2015 по 06.2020. Данные были сформированы за API и подтянуты в CaseWare IDEA для дальнейшего анализа. Для построения модели был использован пакет statsmodels на языке программирования Python.

Проверка на стационарность. Определение d

Если ряд стационарен, то значение d = 0 (ARMA). Нулевая гипотеза ADF = нестационарный временной ряд. Таким образом, если значение p-теста меньше уровня значимости (0,05), то гипотеза отвергается, и следовательно временной ряд является стационарным.

График 1.  Данные о ценах акции (NASDAQ: GOOGLE)

ADF Statistics = -0.665414

P-value = 0.855506

Поскольку P-value больше уровня значимости, разберем ряд и посмотрим на график автокорреляции.

График 2. Автокорреляция при d = 0

На графике явно видно, что данные имеют тенденцию, соответственно нестационарность ряда подтверждается.

Посмотрим на графики данных и автокорреляцию при d = 1 и d = 2

График 3. Данные при d = 1

График 4. Автокорреляция при d = 1

График 5. Данные при d = 2

График 6. Автокорреляция при d = 2

При d = 2 мы видим на графике 6, что второй лаг уходит далеко в отрицательную зону, и это говорит нам о том, что двойное вычисление разностей слишком много для этого ряда.

При d = 1 мы видим на графике 4, что соблюдается стационарность ряда.

Итак, предварительно возьмем порядок вычисление разностей d = 1.

Порядок AR (Auto Regression). Определение p.

Построим график частичной автокорреляции (PACF)

Частичная автокорреляция временных рядов поможет в нахождении порядка авторегрессионной модели. Любая автокорреляция в стационарном ряду может быть исправлена ​​добавлением достаточного количества AR-членов. Итак, мы изначально принимаем порядок AR-члена равным столько лагов, сколько пересекают предел значимости на графике PACF.

График 7. Частичная автокорреляция при d = 1.

Смотря на график можно указать значение как 1, так и 2. Для начала обозначим p = 1.

Скользящее среднее (MA). Порядок q.

Так же, для данного порядка d = 1, можно посмотреть на график ACF чтобы обозначить порядок MA. Технически говоря MA – это ошибка запаздывающего прогноза. Здесь же, на Графике 4 мы не видим существенных отклонений, поэтому предварительно советую обозначить q =1.

Построение модели ARIMA

Воспользуемся пакетом ARIMA, statsmodels. Проверим 2 модели:

ARIMA (1,1,1) – aic = 664.26

ARIMA (2,1,1) – aic = 664.50

Критерий Акаике исключает вторую модель, так как модель лучше та, у которой значение меньше. Так же значения AR, MA довольно значимы. При рассмотрении остатков (график 8), мы видим довольно равномерную дисперсию с почти нулевыми остатками в среднем.

На графике 9 отображены фактические значения и прогнозируемые.

График 8. Остатки и дисперсия ARIMA (1,1,1)

График 9. Прогнозируемые значения, модель ARIMA (1,1,1)

На этом все. Результаты и графики мы сохраняем, и вставляем в отчеты. В CaseWare IDEA можно сразу создавая отчет, записать статистику данных и соответствующие графики с результатами.