Прогнозирование временных рядов методом SSA (пример)
Материал из MachineLearning.
(→Численный эксперимент) |
(→Численный эксперимент) |
||
Строка 111: | Строка 111: | ||
[[Изображение:model110.png|800px]] | [[Изображение:model110.png|800px]] | ||
- | 5-му и 6-му собственным числам соответствует периодическая составляющая с периодом 8 | + | Аналогично, 5-му и 6-му собственным числам соответствует периодическая составляющая с периодом 8. |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
1-я, 2-я и 7-я главная компоненты отвечают за тренд: | 1-я, 2-я и 7-я главная компоненты отвечают за тренд: | ||
- | [[Изображение: | + | [[Изображение:newpic3.png|800px]] |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
Убедимся, что остальные главные компоненты - это шум: | Убедимся, что остальные главные компоненты - это шум: |
Версия 17:07, 15 июня 2010
SSA (Singular Spectrum Analysis, "Гусеница") - метод анализа и прогноза временных рядов. Базовый вариант метода состоит в:
1) преобразовании одномерного ряда в многомерный с помощью однопараметрической сдвиговой процедуры (отсюда и название "Гусеница");
2) исследовании полученной многомерной траектории с помощью анализа главных компонент (сингулярного разложения);
3) восстановлении (аппроксимации) ряда по выбранным главным компонентам.
Таким образом, результатом применения метода является разложение временного ряда на простые компоненты: медленные тренды, сезонные и другие периодические или колебательные составляющие, а также шумовые компоненты. Полученное разложение может служить основой прогнозирования как самого ряда, так и его отдельных составляющих. "Гусеница" допускает естественное обобщение на многомерные временные ряды, а также на случай анализа изображений. В данной статье рассмотрим вариант алгоритма, предназначенный для анализа многомерного временного ряда.
Содержание[убрать] |
Постановка задачи
Наблюдается система функций дискретного аргумента {, где k = 1, ..., s}. s - число временных рядов, k - номер ряда, N - длина временного ряда, i - номер отсчета. Требуется разложить ряд в сумму компонент (используя метод главных компонент, см. описание алгоритма), интерпретировать каждую компоненту, и построить продолжение ряда
по выбранным компонентам.
Описание алгоритма
Построение матрицы наблюдений
Рассмотрим сначала одномерный временной ряд Выберем n такое, что
- время жизни многомерной гусеницы. Пусть
- длина гусеницы. Построим последовательность из n векторов в
следующего вида:
Обозначим
Будем называть нецентрированной матрицей наблюдений, порождённой гусеницей со временем жизни n.
В случае многомерного временного ряда матрицей наблюдения называется столбец из матриц наблюдений, соответствующих каждой из компонент.
Проводимый в дальнейшем анализ главных компонент может проводиться как по центрированной, так и по нецентрированной выборкам. Для упрощения выкладок рассмотрим простейший нецентрированный вариант.
Анализ главных компонент
Рассмотрим ковариационную матрицу полученной выборки:
Выполним её svd-разложение:
где - диагональная матрица собственных чисел,
,
- ортогональная матрица собственных векторов.
Далее рассмотрим систему главных компонент:
После проведения анализа главных компонент обычно предполагается проведение операции восстановления исходной матрицы наблюдений по некоторому поднабору главных компонент, т. е. для и
вычисляется матрица
.
Далее восстанавливаются исходные последовательности. В одномерном случае i-ая компонента восстановленного ряда есть среднее значение по i-ой диагонали восстановленной матрицы наблюдений :
В многомерном случае усреднение проводится с учётом того, что матрица наблюдений состоит из подматриц, соответствующих каждой компоненте ряда:
Прогноз
Числовой ряд называется продолжением ряда
, если порождаемая им при гусеничной обработке выборка лежит в той же гиперплоскости, что и у исходного ряда. Пусть у нас есть некоторый набор выбранных главных компонент
Определим
и
Также положим
Тогда прогнозируемые значения системы в точке вычисляются по формуле:
Численный эксперимент
Модельные данные
Рассмотрим трёхмерный временной ряд, заданный формулами:
где
Кроме тренда (линейная, квадратичная функции и логарифм соответственно) в ряды добавлены две периодические составляющие (синусоиды с различными амплитудами и фазами). Также во временные ряды добавлен шум со среднеквадратичным отклонением 0,5:
Исследуем главные компоненты данного временного ряда, используя гусеницу длины 50.
Логарифмы первых двадцати собственных чисел ковариационной матрицы:
Из графика видно, что содержательный смысл несут, вероятно, первые семь главных компонент, а остальные, скорее всего, шум.
Обычно паре близких собственных чисел соответствуют главные компоненты, отвечающие одной частоте. Если отложить на одном графике главные векторы, отвечающие 3-му и 4-му собственным числам, становится очевидно, что они кореллируют и соответствуют периодической составляющей с периодом 11:
Восстановив временной ряд (на рисунке изображён первый из трёх) по этим двум главным компонентам, убеждаемся в этом:
Аналогично, 5-му и 6-му собственным числам соответствует периодическая составляющая с периодом 8.
1-я, 2-я и 7-я главная компоненты отвечают за тренд:
Убедимся, что остальные главные компоненты - это шум:
Спрогнозируем временной ряд на 50 единиц вперёд по первым семи главным компонентам:
Видим, что прогноз вполне адекватен.
Посмотрим, как отреагирует алгоритм на нарушение периодичности временного ряда. Во второй половине временного ряда изменим частоту, амплитуду и фазу одной из периодик:
В этом случае 2-я и 3-я главная компонента будет соответствовать той периодике, которую мы не изменили: (все графики соответствуют первому временному ряду)
5-я и 6-я - первой половине изменённой компоненты:
7-я и 8-я - второй её половине:
1-я, 2-я и 9-я отвечают тренду:
Таким образом, алгоритм устойчив к нарушениям периодичности - разным участкам временного ряда соответствуют различные главные компоненты.
Посмотрим поведение алгоритма в случае наличия выбросов. Мы добавили выброс в среднем в каждую 50-ю точку временного ряда. Первое собственное число в этом случае на несколько порядков больше остальных, график логарифмов собственных чисел со 2-го по 20-е представлен ниже:
Восстанавливая ряд по первым 16-ти главным компонентам, видим, что алгоритм работает некорректно:
Реальные данные
Рассмотрим ежемесячные данные о покрытии полушарий Солнца пятнами с 1876 года.
Южное полушарие:
Северное полушарие:
Используем гусеницу длины 250.
2-я и 3-я компоненты соответствуют 12-летним солнечным циклам:
Автор статьи не смог интерпретировать остальные главные компоненты. Однако субъективно первые шесть главных вполне адекватно характеризуют солнечную активность и могут быть использованы для прогноза:
См. также
Литература
- Главные компоненты временных рядов:
метод "Гусеница"; под редакцией Д.Л.Данилова и А.А.Жиглявского
- Analysis of Time Series Structure:
SSA and Related Techniques; Nina Golyandina, Vladimir Nekrutkin, Anatoly Zhigljavsky
![]() | Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |