Изменения

Перейти к: навигация, поиск

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

101 байт убрано, 11:45, 15 января 2021
Динамические линейные модели
Временные ряды {{---}} это актуальный инструмент , применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.<br>
==Временной ряд==
<br>
{{Определение
|definition =
}}
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{- --}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.
==Валидирование и тестирование модели временного ряда==
<br>
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.<br>
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1. кросс-валидация временного ряда]]]<br>
Такие предскания предполагают, что стохастическая<ref>[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]</ref> модель генерирует [[Участник:Mk17.ru|случайное блуждание]].<br>
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5. Cезонно-наивная]]]<br>
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.<br>
Прогнозы SNAIVE {{---}} модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.
Получаемые прогнозы следующие $T $ шагов совпадают с предыдущими $T $ шагами.
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).<br><br><br><br>
$T(t)$ {{---}} компонент трендового цикла.<br>
$R(t)$ {{---}} остаток.<br>
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.<br>
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.<br>
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7. Сезонные индексы ряда]]]
Классическое разложение можно расширить несколькими способами.<br>
Расширение позволяет использовать данный метод при:
* непостоянной величине сезона;* посчитать начальные и конечные значения декомпозиции;* избежать лишнего сглаживания;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).<br>
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).<br>
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8. Декомпозиция и наивная модель]]]<br>
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):<br>.
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:<br>
Декомпозиция была исплементирована Следующий график показывает предсказания полученные для 2007 года с помощью встроенной в стандартную библиотеку функциииспользованием STL декомпозиции и наивной модели(рис.8) для сезонно-изменяемого временного ряда.<br>
===Экспоненциальное сглаживание ===
Экспоненциальное сглаживание<ref>[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]</ref> {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$<br>
'''''где $0<⍺<1.$ ''''' Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.<br>
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции]]]
В GARСH-модели (рис. 13) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].<br><br><br>
===Динамические линейные модели===
$⍺(t) = ⍺(t-1) + m(t)$<br>
$β(t) = β(t-1) + r(t)$<br>
$w(t)$ ~$N(0,W) $, $m(t)$ ~$N(0,M) $, $r(t)$ ~$N(0,R)$<br>
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.
<br>
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15. DLM]]]
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).<br> Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. <br><br>Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.<br>
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].<br><br><br><br>
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.<br>
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.<br>
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18. MAE, тестовый набор]]]
===Как еще больше повысить производительность===
Другие методы повышения производительности моделей:
*Использование разных моделей для разных временных горизонтов;*Объединение нескольких прогнозов (например, с учетом среднего прогноза);*'''Агрегация начальных данных;'''
<br><br>
Последний метод можно резюмировать следующим образом:
*Разложите исходный временной ряд (например, используя STL)Разложение исходного временного ряда;*Создайте набор Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.;*Подбирайте модель Подбор модели для каждого временного ряда;*Средние прогнозы Вывод средних прогнозов каждой модели;
==Заключительные замечания==
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.<br>
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].
Анонимный участник

Навигация