Модели временных рядов кратко

Обновлено: 04.07.2024

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

В общем виде при исследовании временного ряда выделяются несколько составляющих:

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

циклическая компонента, отражающая повторяемость экономических процессов в течение длительных периодов,

случайная компонента, отражающая влияние не поддающихся учету и регистрации случайных факторов.

Основные этапы анализа временных рядов,

1) Графическое представление и описание поведения временного ряда,

2) Выделение и удаление закономерных (неслучайных) составляющих временного ряда (тренда, сезонных и циклических составляющих).

3) Сглаживание и фильтрация (удаление низкочастотных или высокочастотных составляющих временного ряда)

4) Исследование случайной составляющей временного ряда, построение и проверка адекватности математической модели для ее описания,

5) Прогнозирование развития изучаемого процесса на основе имеющегося временного ряда,

6) Исследование взаимосвязи между различными временными рядами.

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

Коэффициент корреляции для временных рядов:

Статистической оценкой для служит выборочный коэффициент автокорреляции

Функцию называют выборочной автокорреляционной функцией, а ее график называют коррелограммой.

Основная тенденция развития временного ряда – Тренд, для ее выявления применяют МНК или Метод скользящих средних.

График статистической оценки коэффициента корреляции для модели временного ряда называется корелограммой .

Статистическая оценка для коэффициента корреляции модели временного ряда называется выборочным коэффициентом автокорреляции.

Анализ временных рядов:

Модель с авторегрессией первого порядка следовательно:

- МНК дает несмещенные, состоятельные, неэффективные оценки для параметров.

- Оценка дисперсии полученной по МНК занижена.

- Если известен коэффициент авторегрессии, то применяется ОМНК.

- Если коэффициент авторегрессии не известен, то применяется доступный ОМНК.

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

В общем виде при исследовании временного ряда выделяются несколько составляющих:

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

циклическая компонента, отражающая повторяемость экономических процессов в течение длительных периодов,

случайная компонента, отражающая влияние не поддающихся учету и регистрации случайных факторов.

Основные этапы анализа временных рядов,

1) Графическое представление и описание поведения временного ряда,

2) Выделение и удаление закономерных (неслучайных) составляющих временного ряда (тренда, сезонных и циклических составляющих).

3) Сглаживание и фильтрация (удаление низкочастотных или высокочастотных составляющих временного ряда)

4) Исследование случайной составляющей временного ряда, построение и проверка адекватности математической модели для ее описания,

5) Прогнозирование развития изучаемого процесса на основе имеющегося временного ряда,

6) Исследование взаимосвязи между различными временными рядами.




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

Коэффициент корреляции для временных рядов:

Статистической оценкой для служит выборочный коэффициент автокорреляции

Функцию называют выборочной автокорреляционной функцией, а ее график называют коррелограммой.

Основная тенденция развития временного ряда – Тренд, для ее выявления применяют МНК или Метод скользящих средних.

График статистической оценки коэффициента корреляции для модели временного ряда называется корелограммой .

Статистическая оценка для коэффициента корреляции модели временного ряда называется выборочным коэффициентом автокорреляции.

Анализ временных рядов:

Модель с авторегрессией первого порядка следовательно:

- МНК дает несмещенные, состоятельные, неэффективные оценки для параметров.

- Оценка дисперсии полученной по МНК занижена.

- Если известен коэффициент авторегрессии, то применяется ОМНК.

- Если коэффициент авторегрессии не известен, то применяется доступный ОМНК.

временной ряд: случайные данные, тренд, различные сглаживания

В статистике, обработке сигналов и многих других областях под временным рядом понимаются последовательно измеренные через некоторые (зачастую равные) промежутки времени данные. Анализ временных рядов объединяет методы изучения временных рядов, как пытающиеся понять природу точек данных (откуда они взялись? что их породило?), так и пытающиеся построить прогноз. Прогнозирование временных рядов заключается в построении модели для предсказания будущих событий основываясь на известных событий прошлого, предсказания будущих данных до того как они будут измерены. Типичный пример — предсказание цены открытия биржи основываясь на предыдущей её деятельности.

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

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

Содержание

Анализ временных рядов

Существует несколько методов анализа данных, применимых для временных рядов.

Общее исследование

  • Визуальное изучение графических представлений временных рядов
  • Автокорреляционный анализ для изучения зависимостей
  • Спектральный анализ для изучения циклического поведения, не связанного с сезонностью

Описание

  • Разделение компонент: тренд, сезонность, медленно и быстро меняющиеся компоненты, циклическая нерегулярность
  • Простейшие свойства частных распределений

Прогнозирование и предсказание

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

Модели временных рядов

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

Среди прочих типов нелинейных моделей временных рядов можно выделить модели, описывающие изменения дисперсии ряда со временем (гетероскедатичность). Такие модели называют моделями авторегрессионной условной гетероскедастичности (AutoRegressive Conditional Heteroscedasticity, ARCH). К ним относится большое количество моделей: GARCH, TARCH, EGARCH, FIGARCH, CGARCH и др. В этих моделях изменения дисперсии связывают с ближайшими предшествующими данными. Противовесом такому подходу является представление локально изменчивой дисперсии, при котором дисперсия может быть смоделирована зависящей от отдельного меняющегося со временем процесса, как в бистохастических моделях.

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

Обозначения

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

Предположения

Существуют две группы предположений, в условиях которых строится большинство теорий:

  • Стационарность процесса
  • Эргодичность

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

Анализ временного ряда может проводиться и когда ряд сезонно стацонарен или нестационарен.

Модели

Общий вид авторегрессивной модели задаётся следующим образом:

где — источник случайность, белый шум. Белый шум имеет следующие свойства:

В этих предположениях процесс определён вплоть до моментов второго порядка и, при определённых условиях на коэффициенты, может быть стационарным в широком смысле.

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

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

Содержание


Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая — это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.


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


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

Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2. n$.
Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.

Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна [1] , который используем при кросс-валидации, но без переподсчёта параметра модели.


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


Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.

Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$. Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.


Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению $Y(t + h|t) = Y(t)$.

Такие предскания предполагают, что стохастическая [2] модель генерирует случайное блуждание.


Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) — сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.


Прогнозы SNAIVE-модели описываются формулой $\dot(t+h|t) = Y(t+h-T)$.

Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).


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

$Y(t) = S(t) + T(t) + R(t)$
$S(t)$ — сезонный компонент.
$T(t)$ — компонент трендового цикла.
$R(t)$ — остаток.
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.


Классическое разложение можно расширить несколькими способами.
Расширение позволяет использовать данный метод при:

  • непостоянной величине сезона;
  • посчитать начальные и конечные значения декомпозиции;
  • избежать лишнего сглаживания;

Обзор методов разложений ряда можно увидеть по ссылке. Используется реализация из стандартной библиотеки (рис. 6).

Одним из способов использования декомпозиции для прогнозирования будет:
1) Разложить обучающий набор алгоритмом.
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).


На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).


Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.



Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.

$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + . + \epsilon$
Где $\psi$ — свободный член (константа).

$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_ - \theta_2 * \epsilon_ - . $
Где $\mu$ — константа.


ARIMA — комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд. То есть рассматировать ряд разностей, а не исходный ряд.

Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза. Более подробную информацию про ARIMA, SARIMA читайте по ссылке.

Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).


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

В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следует авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).

В 1982 году была предложена ARCH — модель, описываемая формулой:

$\sigma^2(t) = \alpha + \sum_^b_ir^_$
где $\alpha$ — коэффициент задержки
$\sigma^2(t)$ - волатильность
$\sum_^b_ir^_$ - линенйная комбинация абсолютных значений нескольких последних изменений значений.

Позднее была создана GARCH — обобщённая ARCH модель, которая также учитывает предыдущие оценки дисперсии. Формула может быть записана так: $\sigma^2(t) = \alpha + \sum_^b_ir^_ \sum_^

c_i\sigma^_$
где p — количество предшествующих оценок, влияющих на текущее значение.
с — весовые коэффициенты предыдущих оценок.

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


Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14). Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется.
Пример динамической линейной модели ниже:
$y(t) = ⍺(t) + tβ(t) + w(t)$,
$⍺(t) = ⍺(t-1) + m(t)$,
$β(t) = β(t-1) + r(t)$,
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.

В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.

Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности здесь.


TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) — это модели, которые основаны на экспоненциальном сглаживании (рис. 15).
Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье.

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

Больше информации можно прочиать тут.


Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). Это ПО с открытым исходным кодом от Фейсбука (ссылка).


Prophet считает, что временной ряд может быть разложен следующим образом:
$y(t) = g(t) + s(t) + h(t) + ε(t)$,
$g(t)$ — тренд,
$s(t)$ — сезонность,
$h(t)$ — каникулы, т.е аномальные данные,
$ε(t)$ — ошибки.

Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье [4] . Эффект известных и заказных выходных дней может быть легко включен в модель.
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.


Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную нейронную сеть. Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.

Модель можно описать уравнением $y_t = f(y_) + \epsilon_t$
где $y_ = (y_, y_, . )'$ — вектор, содержащий запаздывающие значения,
f — нейронная сеть, с 4 скрытыми узлами в каждом слое,
$\epsilon_t$ — считаем, что ряд ошибок гомокседастичен (и возможно имеет нормальное распределение).


Мы можем моделировать будущие выборочные пути этой модели итеративно, случайным образом генерируя значение для $\epsilon_t$ либо из нормального распределения, либо путем повторной выборки из исторических значений.
Так что если $\epsilon^*_$ — случайная выборка из распределения ошибок в момент времени $T+1$,
тогда $y^*_ = f(y_T) + \epsilon^*_$ — один из возможных вариантов распределения прогнозов для $y_$
Установив $y^*_ = (y^*_, y_)'$, мы можем повторить процесс, чтобы получить $y^*_ = f(y_) + \epsilon_$.

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


Блок cети долго-краткосрочной памяти (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей).
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.
Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано здесь).


Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.
На следующем рисунке показана средняя абсолютная ошибка (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17):

Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.


  • Использование разных моделей для разных временных горизонтов,
  • Объединение нескольких прогнозов (например, с учетом среднего прогноза),
  • Агрегация начальных данных.

Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.

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

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

Что такое временной ряд?

Временные ряды обычно моделируются посредством случайного процессаУ (т),то есть последовательность случайных величин. В условиях прогнозирования мы оказываемся во времениTи мы заинтересованы в оценкеУ (т + Н),используя только информацию, доступную на времят.

Как проверить и протестировать модель временного ряда?

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

Если мы заинтересованы в прогнозировании следующегоNвременные шаги, мы можем применить процедуру перекрестной проверки для1,2, . пшаги впереди Таким образом, мы также можем сравнить достоверность прогнозов для разных временных горизонтов.

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

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

Данные могут быть легко загружены черезfpp2пакет в R. Чтобы сделать данные доступными вне R, вы можете просто запустить следующий код в среде R.

Набор данных соответствует ежемесячному производству электрооборудования (компьютер, электронная и оптическая продукция) в зоне евро (17 стран) в период с января 1996 года по март 2012 года. Мы сохраняемпоследние 2 года для тестированияцели.

Временной ряд имеет пик в конце 2000 года, а другой - в 2007 году. Огромное уменьшение, которое мы наблюдаем в конце 2008 года, возможно, связано с глобальным финансовым кризисом, который произошел в течение этого года.

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



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

Мы рассмотрим следующие модели:

Мы заинтересованы в прогнозировании индекса промышленного производства на 12 месяцев. Поэтому данные даны в срокT, мы хотели бы предсказать значения, принятые индексом в разыт + 1, . т + 12.

Мы будем использоватьСредняя абсолютная ошибка (MAE)оценить производительность моделей.

1) Наивный, SNaive

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

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

Расширение Наивной модели даетсяSNaïve(Сезонная наивная) модель. Предполагая, что временной ряд имеет сезонную составляющую и что период сезонностиTпрогнозы, заданные моделью SNaive, определяются как:

Поэтому прогнозы на следующиеTвременные шаги равны предыдущемуTвременные шаги. В нашем приложении SNaive прогноз на следующий год равен прошлогодним наблюдениям.

Эти модели часто используются какэталонные модели, На следующих графиках показаны прогнозы, полученные с помощью двух моделей на 2007 год.



Модели были установлены с использованием naive а также snaive функциипрогнозR пакет.

2) сезонное разложение (+ любая модель)

Если данные показывают некоторую сезонность (например, ежедневно, еженедельно, ежеквартально, ежегодно), может быть полезно разбить исходный временной ряд на сумму трех компонентов:

гдеS (T)является сезонной составляющей,Т (т)является компонентом цикла тренда, иR (T)является оставшимся компонентом.

Существует несколько методов для оценки такого разложения. Самый основной называетсяклассическое разложениеи состоит в:

  1. Оценка тренда T (t) через скользящее среднее
  2. ВычислительныйS (T)как средний ряд торгуемыхУ (т) -T (т)за каждый сезон (например, за каждый месяц)
  3. Вычисление оставшейся серии какR (T) = Y (т) -T (т) -S (т)

Классическая декомпозициябыл расширеннесколькими способами. Его расширения позволяют:

  • иметь непостоянную сезонность
  • вычислить начальные и последние значения разложения
  • избегать чрезмерного сглаживания

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

Один из способовиспользовать разложение для прогнозированияЦели следующие:

  1. Разложить обучающие временные ряды с помощью некоторого алгоритма декомпозиции (например, STL):Y (t) = S (t) + T (t) + R (t).
  2. Вычислитьс учетом сезонных колебанийвременная последовательностьУ (т) -S (т), использованиелюбая модельВам нравится прогнозировать эволюцию сезонно скорректированных временных рядов.
  3. Добавьте к прогнозам сезонность последнего периода времени во временном ряду (в нашем случаеS (T)за прошлый год).

На следующем рисунке показаны временные ряды индекса промышленного производства с учетом сезонных колебаний.


На следующем графике показаны прогнозы, полученные на 2007 год с использованием разложения STL и наивной модели для согласования с сезонно скорректированными временными рядами.


Разложение было установлено с использованием stl функциястатистикаR пакет.

3) Экспоненциальное сглаживание

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



Модели были установлены с использованием ets функцияпрогнозR пакет.

4) АРИМА, САРИМА

Что касается экспоненциального сглаживания, такжеARIMAМодели являются одним из наиболее широко используемых подходов для прогнозирования временных рядов. Название является аббревиатурой от AutoRegressive Integrated Moving Average.

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

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

SarimaМодель (Seasonal ARIMA) расширяет ARIMA, добавляя линейную комбинацию сезонных прошлых значений и / или ошибок прогноза.

Для полного ознакомления с моделями ARIMA и SARIMA щелкнитеВот,

На следующих графиках показаны прогнозы, полученные на 2007 год с использованием модели SARIMA и модели ARIMA для сезонно скорректированных временных рядов.



Модели были установлены с использованием auto.arima а также Arima функциипрогнозR пакет.

5) ГАРЧ

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

Вместо этогоGARCHМодель предполагает, что дисперсия слагаемых ошибок следует процессу AutoRegressive Moving Average (ARMA), что позволяет ей изменяться во времени. Это особенно полезно для моделирования финансовых временных рядов, волатильность которых изменяется во времени. Название является аббревиатурой от Обобщенной авторегрессионной условной гетероскедастичности.

Обычно процесс ARMA предполагается и для среднего значения Для полного ознакомления с моделями GARCH вы можете нажатьВота такжеВот,

На следующих графиках показаны прогнозы, полученные на 2007 год с использованием модели GARCH, чтобы соответствовать сезонно скорректированным временным рядам.


Модель была установлена ​​с помощью ugarchfit функцияrugarchR пакет.

6) Динамические линейные модели

Динамические линейные модели представляют другой класс моделей для прогнозирования временных рядов. Идея в том, что в каждый разTэти модели соответствуют линейной модели, но регрессиякоэффициенты меняются во времени, Пример динамической линейной модели приведен ниже.

y (t) = ⍺ (t) + tβ (t) + w (t)

⍺ (т) = ⍺ (т-1) + м (т)

β (t) = β (t-1) + r (t)

w (t) ~ N (0, W), m (t) ~ N (0, M), r (t) ~ N (0, R)

В предыдущей модели коэффициенты⍺ (т)а такжеβ (т)следить за процессом случайной прогулки.

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

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


Модель была установлена ​​с помощью dlmMLE функцияDLMR пакет.

7) TBATS

Модель TBATS является моделью прогнозирования, основанной на экспоненциальном сглаживании. Название является аббревиатурой для тригонометрического, преобразования Бокса-Кокса, ошибок ARMA, трендовых и сезонных компонентов.

Главной особенностью модели TBATS является ее способность справляться смножественные сезонностипутем моделирования каждой сезонности с помощью тригонометрического представления на основе рядов Фурье. Классический пример сложной сезонности дается ежедневными наблюдениями за объемами продаж, которые часто имеют недельную и годовую сезонность.

Для полного ознакомления с моделью TBATS нажмитеВот,

На следующем графике показаны прогнозы, полученные на 2007 год с использованием модели TBATS для подбора временных рядов.


Модель была установлена ​​с помощью tbats функцияпрогнозR пакет.

8) Пророк

Пророк является еще одной моделью прогнозирования, которая позволяет иметь дело смножественные сезонности, Этопрограммное обеспечение с открытым исходным кодомвыпущен FacebookОсновная команда Data Science,

Модель пророка предполагает, что временной ряд можно разложить следующим образом:

Три условияг (т),с (т)а такжеч (т)соответствуют соответственно тренду, сезонности и празднику. Последний член является ошибочным.

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

Есть два вариантатенденциявременные ряды: модель насыщающего роста и кусочно-линейная модель. МногопериодныйсезонностьМодель опирается на ряд Фурье. Эффект известный и обычайHolydaysмогут быть легко включены в модель.

Модель пророка вставлена ​​вБайесовские рамкии это позволяет сделать полный последующий вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.

Для полного знакомства с моделью Пророка нажмитеВот,

На следующем графике показаны прогнозы, полученные на 2007 год с использованием модели Пророка для подбора временных рядов.


Модель была установлена ​​с помощью prophet функцияпророкR пакет.

9) НЕТАР

Модель NNETAR - это полностью подключенная нейронная сеть. Акроним расшифровывается как Neural NETwork AutoRegression.

Модель NNETAR принимаетвведите последние элементы последовательностидо времениTи выводит прогнозируемое значение во времяT + 1, Для выполнения многоэтапных прогнозов сеть применяется итеративно.

При наличии сезонности входные данные могут включать также временные ряды с сезонной задержкой. Для полного знакомства с моделями NNETAR нажмитеВот,

На следующих графиках показаны прогнозы, полученные на 2007 год, полученные с использованием модели NNETAR с сезонно-запаздывающим вводом и модели NNETAR для сезонно скорректированных временных рядов.



Модели были установлены с использованием nnetar функцияпрогнозR пакет.

10) LSTM

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

Состояние сети LSTM представляется через вектор пространства состояний. Эта техника позволяетотслеживать зависимостиновых наблюдений с прошлыми (даже очень далекими).

LSTM могут извлечь выгоду изтрансферное обучениеметоды, даже когда применяются к стандартным временным рядам, как показаноВот, Тем не менее, они в основном используются с неструктурированными данными (например, аудио, текст, видео)

Чтобы получить полное представление об использовании LSTM для прогнозирования временных рядов, щелкнитеВот,

На следующем графике показаны прогнозы на первый год в тестовом наборе, полученные путем подгонки модели LSTM к сезонно скорректированным временным рядам.


Модель была установлена ​​с помощьюKerasфреймворк на Python.

Мы выполнили выбор модели черезперекрестная проверкапроцедура описана ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.

На следующем рисунке мы показываем перекрестную проверку MAE для каждой модели и для каждого временного горизонта.


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


Модель NNETAR с учетом сезонных колебанийданные былилучшая модельдля этой заявки, так как она соответствовала самой низкой перекрестной проверке MAE.

Чтобы получитьобъективная оценканаилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную5,24, На следующем рисунке мы можем увидеть MAE, оцененную на тестовом наборе для каждого временного горизонта.


Как еще улучшить производительность

Другие методы для повышения производительности моделей могут быть:

  • Использование разных моделей для разных временных горизонтов
  • Объединение нескольких прогнозов (например, с учетом среднего прогноза)
  • Bootstrap Агрегирование

Последний метод можно обобщить следующим образом:

Для полного введения в Агрегирование начальной загрузки, нажмитеВот,

Другие модели

Другие модели не включены в этот список, например:

  • Любая стандартная модель регрессии, для которой требуется время (и / или другие функции) модели, которые обычно используются в задачах НЛП (например, перевод) и другиеВнимание Сетикоторые обычно применяются к неструктурированным данным (например, Text-to-Speech)

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

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


В этой статье мы рассмотрим несколько простых подходов прогнозирования временных рядов.

План статьи

Краткое описание тренажера



Import the data
Здесь все просто — импортируем данные. Иногда бывает так, что сырых данных достаточно для формирования более-менее внятного прогноза. Именно первый и второй прогнозы в статье моделируются на основании сырых данных, то есть для прогноза заработной платы используются необработанные данные о заработной плате в прошлые периоды.

Aggregate the data
В статье не используется агрегация данных ввиду отсутствия необходимости. Однако зачастую, данные могут быть представлены неравными временными интервалами. В таком случае, просто необходимо их агрегировать. Например, данные с торгов ценными бумагами, валютой и другими финансовыми инструментами необходимо агрегировать. Обычно берут среднее значение в интервале, но можно и максимальное, минимальное, стандартное отклонение и другие статистики.

Preprocessing the data
В нашем случае, речь идет в первую очередь о предобработке данных, благодаря которой, временной ряд приобретает свойство гомоскедастичности (через логарифмирование данных) и становится стационарным (через дифференцирование ряда).

Exogenous values
В этом блоке кода мы объединяем все экзогенные данные в одну таблицу.

Union the data (create dataset)
В этом блоке кода мы объединяем значения временного ряда и экзогенных признаков в одну таблицу. Другими словами — готовим датасет, на основании, которого будем обучать модель, тестировать качество и формировать прогноз.

Learning the model
Здесь все понятно — мы просто обучаем модель.

Row data: predict & forecast
Данный этап является заключительным. Если, модель обучалась на предобработанных данных, например, мы их прологарифмировали, то для получения прогноза заработной платы в рублях, а не логарифма рублей, нам следует перевести прогноз обратно в рубли.

Также хотелось бы отметить, что в статье используется одномерный временной ряд для предсказания заработной платы. Однако ничего не мешает использовать многомерный ряд, например добавить данные курса рубля к доллару или какой-либо другой ряд.

Решение в лоб

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

Давайте возьмем значения заработной платы в 12-ть прошлых месяцев для предсказания заработной платы в 13-й месяц. Другими словами для каждого целевого значения у нас будет 12 признаков.

Признаки будем подавать на вход Ridge Regression библиотеки sklearn. Параметры модели берем по умолчанию за исключением параметра alpha, его установили на 0, то есть по сути мы используем обычную регрессию.

Это и есть решение в лоб — оно самое простое:) Бывают ситуации, когда нужно очень срочно дать хоть какой-то результат, а времени на какую-либо предобработку просто нет или не хватает опыта, чтобы оперативно обработать или добавить данные. Вот в таких ситуациях, можно в качестве baseline использовать сырые данные для построения прогноза. Забегая вперед, отмечу, что качество модели оказалось сопоставимо с качеством моделей, в которых используется предобработка данных.

Давайте посмотрим, что у нас получилось.



На первый взгляд результат выглядит хоть и неидеально, но близко к действительности.

В соответствии со значениями коэффициентов регрессии, наибольшее влияние на прогноз заработной платы оказывает значение заработной платы ровно год назад.


Попробуем добавить в модель экзогенные переменные.

Добавление экзогенных переменных

Сформируем новый датасет и посмотрим на качество модели.



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

Давайте теперь проведем первую предобработку данных.

Коррекция гетероскедастичности.

Если мы посмотрим на график заработной платы за период с 2010 по 2020 гг, то мы увидим, что ежегодно разброс заработной платы внутри года между месяцами растет.


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

Для этого воспользуемся обычным логарифмированием и посмотрим как выглядит прологарифмированный ряд.


Обучим модель на прологарифмированном ряду




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

Приведение ряда к стационарному

Приводить ряд к стационарному будем следующим образом:

  • Определяем разницу между целевым значением заработной платы и значением год назад: t — (t-12) = dif_1
  • Определяем разницу между полученным и смещенным на 1 месяц значением: dif_1 — (dif_1-1) = dif_2


Ряд действительно выглядит стационарным, об этом также говорит значение критерия Дики-Фуллера.

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

Давайте посмотрим, что получилось.


Вот так выглядит предсказание стационарного ряда. Как и ожидали — не очень-то и хорошо :)

А вот предсказание и прогноз заработной платы.




Качество заметно улучшилось и прогноз визуально стал выглядеть правдоподобным.

Теперь сформируем прогноз без использования экзогенных переменных




Качество еще улучшилось и правдоподобность прогноза сохранилась :)

Прогнозирование с помощью однослойной нейронной сети

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

Для начала посмотрим на саму сеть

Теперь пару слов о том, как будем ее обучать.

  1. Фиксируем random seed для целей воспроизводимости результата
  2. Инициализируем модель
  3. Задаем функцию потерь — MSELoss
  4. Выбираем в качестве оптимизатора Adam optimizer
  5. Указываем начальный шаг обучения и определяем условие, при котором шаг понижается. Отмечу, что правильный выбор шага и его дальнейшее изменение (обычно уменьшение) приносит хорошие плоды
  6. Указываем количество эпох обучения
  7. Запускаем обучение
  8. На вход сети подаем целиком датасет, так как он очень маленький и разбивать его на батчи не имеет смысла
  9. При обучении, каждую тысячу эпох формируем графики значения функции потерь на обучающей и тестовой выборках. Это позволяет нам контролировать переобучение или не дообучение модели.

Не будем рассматривать качество предсказаний для каждого датасета отдельно (желающие могут посмотреть подробности на гите). Давайте сравним итоговые результаты.

Качество на тестовой выборке с использованием Ridge Regression


Качество на тестовой выборке с использованием Single layer NN


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

Читайте также: