Прогнозирование временных рядов методом SSA (пример)
Материал из MachineLearning.
(→Построение матрицы наблюдений) |
(→Анализ главных компонент) |
||
Строка 54: | Строка 54: | ||
Далее восстанавливаются исходные последовательности. В одномерном случае i-ая компонента восстановленного ряда есть среднее значение по i-ой диагонали восстановленной матрицы наблюдений <tex>Z'</tex>: | Далее восстанавливаются исходные последовательности. В одномерном случае i-ая компонента восстановленного ряда есть среднее значение по i-ой диагонали восстановленной матрицы наблюдений <tex>Z'</tex>: | ||
- | [[Изображение: | + | [[Изображение:newpic6.png|800px]] |
В многомерном случае усреднение проводится с учётом того, что матрица наблюдений состоит из подматриц, соответствующих каждой компоненте ряда: | В многомерном случае усреднение проводится с учётом того, что матрица наблюдений состоит из подматриц, соответствующих каждой компоненте ряда: |
Версия 18:38, 16 июня 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-летним солнечным циклам:
Автор статьи не смог интерпретировать остальные главные компоненты. Однако субъективно первые шесть главных вполне адекватно характеризуют солнечную активность и могут быть использованы для прогноза.
См. также
Литература
- Д. Л. Данилов, А. А. Жиглявский: "Главные компоненты временных рядов: метод "Гусеница";
- Vladimir Nekrutkin, Anatoly Zhigljavsky: "Analysis of Time Series Structure: SSA and Related Techniques".
Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |