Перейти к содержанию

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

Место и время проведения: вторник, пара 2
Преподаватель: Голяндина Нина Эдуардовна


“Those who have the knowledge, don’t predict. Those who predict, don’t have knowledge.” – Lao Tzu, 6th Century BC Chinese philosopher
Вот спрашивают - а с чего это китайская цитата на английском. А нет ответа.


Полное содержание семинара содержится в теоретических вопросах прошлых лет здесь 2020: Но у нас будет сокращенный вариант. Вот он.


Задания нужно делать заранее в R (RMarkdown); приходите на занятия с ноутбуком. Выступления на занятиях по сделанным заданиям являются необходимым условием для зачета. Нужно показывать численные результаты, код и объяснять теорию. Мы будем обсуждать сделанное.
Обращаю внимание, что каждый раз нужно перерабатывать свою работу на основе (1) обсуждения показов заданий на предыдущих парах и (2) на новом материале. Для структурирования работы можно использовать приведенные выше теоретические вопросы, так как работа должна поддерживать с практической точки зрения почти все из них.

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

Полезный ресурс по временным рядам в R - http://r-statistics.co/Time-Series-Analysis-With-R.html

Некоторые материалы лекций см. здесь

Электронная книга R.Hyndman Forecasting: Principles and Practice (включая экспоненциальное сглаживание и ARIMA)


К зачету

TBA

Семинары 2024

21.05.2024 - Обнаружение разладки SSA (матрица неоднородностей, функции разладки). Экспоненциальные сглаживания (ETS), ссылка на книгу Hyndman выше. MSSA. 2D-SSA. Последнее задание (28.05.2024 - все показывают всё): (1) сгенерировать ряд с разладкой, построить матрицу неоднородностей (hmatr), из нее взять строковую и диагональную функции разладки и нарисовать, синхронизировав с рядом. Объяснить. (2) Добавить к прогнозам с дов. интервалами и их ошибками по SSA и ARIMA то же самое по экспоненциальному сглаживанию (модель подбирает функция ets). (3) Взять систему временных рядов и проверить, что в случае согласованных сигналов точность MSSA выше точности SSA. Взять какое-то изображение и сделать с ним что-нибудь осмысленное с помощью 2D-SSA.

14.05.2024 - Показ заданий. Обнаружение разладки, разные подходы. Начало про SSA подход.

30.04.2024 - ARIMA и Seasonal ARIMA. Задание на 14.05.2024: (1) Определение модели авторегрессии для модельных данных модельные ряды (возьмите пару примеров, варианты (1,5), (2,6), (3,7), (4,8), (9,10), (12,13), (10,15), (11,14)), построение прогноза с доверительными интервалами. Для определения модели используйте ACF, PACF, для оценивания параметров arima или лучше Arima (пакет forecast https://otexts.com/fpp2/arima-r.html, там же прогноз), потом еще автоматический подбор модели по AIC auto.arima. (Тест на единичный корень называется Dickey–Fuller test for unit roots.) Если ряд надо дифференцировать, то перед acf и pacf используйте diff. (2) Постройте на основе модели auto.arima прогноз своего реального ряда. Напоминаю: там есть параметры trace, stepwise. Сравните с прогнозом по SSA (на отрезанном периоде) по точности. Для обоих методов рисуйте прогноз вместе с доверительными интервалами. Код подсматривайте здесь https://ssa-with-r-book.github.io/03-chapter3.html.

23.04.2024 - доказательство метода ESPRIT, eossa (для улучшения разделимости, код у Павла, добавьте к iossa), заполнение пропусков. Начали изучать AR(p) - модель, оценка параметров, oценка p. Задание на 30.04.2024: (1) отрезать от ряда последние точки (1-2 периода) и построить прогноз, рекуррентный и векторный, сравнить по точности (rforecast, bforecast). Построить бутстреп-доверительные интервалы (vforecast). (2) сделать в своем ряде искуственную “дырку” и заполнить ее gapfill и igapfill. (3) cгенерируйте процесс авторегрессии и попробуйте оценить его порядок с помощью ACF-PACF, а также auto.arima.

16.04.2024 - Обсудили методы оценки параметров на основе ЛРФ и два метода SSA прогноза (задания на 16.04.2024 в расширенном виде перенеслись на 23.04.2024). Задание на 23.04.2024 (1) Задание с прошлого раза, были функции из Rssa - lrr, roots (корни полинова по lrr) для модельных рядов, где ЛРФ - минимальная, т.е. L = r+1. Ранг ряда r определяется по числу ненулевых собственных чисел. Добавьте пример с кратными корнями. (2) Усложнение задание - нужно пройти от ряда к явному виду сигнала, добавив к модельным рядам шум. Разница в следующем: большая длина окна, выбор компонент, относящихся к сигналу, неминимальная ЛРФ, нахождение сигнальных корней по ESPRIT (parestimate), превращение близких корней в кратный корень усреднением, оценка коэффициентов перед слагаемыми по lm по всему ряду. (3) Попробуйте найти явный вид сигнала для своего реального ряда. (4) Проверьте, что метод, которые собирает корни не меньше 1 по модулю, для ряда и перевернутого (inverse) ряда, работает. (plot, примененная к lrr (и/или roots), рисует корни на круге.)
Помогут фрагменты 3.1.1, 3.1.2, 3.5.9-3.5.11 https://ssa-with-r-book.github.io/02-chapter2-part2.html

09.04.2024 - смотрели задания, разбирались, как ходить по цепочке (Явный вид ряда) - (корни х.п.) - (х.п.) - ЛРФ - (временной ряд), туда и обратно. Задание на 16.04.2024 Взять модельные ряды конечного ранга и пройти по этой цепочке в оба направления для минимальной ЛРФ. Для нахождения линейных коэффициентов можно использовать lm.

02.04.2024 - смотрели задания, обсуждали преобразования для стабилизации дисперсии и box-cox transformation. Задание на 09.04.2024: попробовать, как работает преобразование box-cox transformation (функция BoxCox), попробовать сделать разложение и выделение тренда с преобразованными данными и потом вернуться обратно (InvBoxCox).

26.03.2024 - смотрели задания, обсуждали iossa и сезонные разложения. Задание на 02.04.2024: добавить разложение ряда методами SSA (можно использовать fossa, iossa - перед заданием начальной группировки в iossa можно использовать fossa), classical seasonal decomposition (decompose), STL (stl). В каждом случае рисовать тренд на фоне ряда и проверять остаток на белый шум (периодограмма и ACF).

19.03.2024 - смотрели задания и обсуждали автоматическую группировку. Задание на 26.03.2024: применить для выделения тренда автогруппировку https://ssa-with-r-book.github.io/02-chapter2-part2.html#fragment-289-paynsa-automatically-identified-trend. Попробовать перед ее применением улучшить разделимость с помощью fossa (DerivSSA) https://ssa-with-r-book.github.io/02-chapter2-part2.html#fragment-286-us-unemployment-improvement-by-derivssa.

12.03.2024 - смотрели задания по трендам и разделимости. Задание на 19.03.2024: (l) с помощью выделения тренда построить огибающую для модулированной синусоиды. Если огибающая - косинус с маленькой частотой, то тренд хорошо выделяется SSA, включить это в примеры. Также для шума с меняющейся дисперсией получить поведение этой дисперсии (нарисовать шум с наложенным доверительным интервалом) и (2) посмотреть на модельных примерах, как работает вариант SSA для стац. рядов (Toeplitz) и при линейном тренде (SSA двойным центрированием). В последнем случае линейный тренд получается сначала применением SSA с двойным центрированием, а потом применением линейной регрессии к результату.
Toeplitz: https://ssa-with-r-book.github.io/01-chapter2-part1.html#fragment-221-noisy-sinusoid-toeplitz-ssa
Centering: https://ssa-with-r-book.github.io/01-chapter2-part1.html#fragment-231-co2-ssa-with-projection

05.03.2024 - смотрели задания по фильтрам и трендам, добавились тренды HP и loess. Задание на 12.03.2024: (l) добавить к трендам с прошлого раза два новых тренда и (2) посмотреть на модельных примерах, как работает асимптотическая разделимость, и построить для модельных примеров и реального ряда матрицу взвешенных корреляций.

27.02.2024 - про фильтры, АЧХ, скользящее среднее, аддитивную/мультипликативную модель. Задание на 05.03.2024: (1) разобраться с фильтрами, их АЧХ, и применить к модельным и реальным данным (для реальных данных попробовать выделить тренд скользящим средним). В том числе, построить периодограмму до применения фильтра и после. Код для АЧХ см. http://statmod.ru/wiki/study:spring2019:ts_pract за 1 марта (поменяйте неправильные символы типа стрелочек и кавычек на текстовые варианты). (2) сгенерировать белый и красный шумы и с помощью скользящего среднего, примененного к периодограмме, оценить спектральную плотность. (3) нарисовать на одном графике тренды, которые выделены скользящим средним, SSA и полиномиальной регрессией (посмотрите на полиномы разной степени, функция poly генерирует признаки для полиномиальной регрессии заданной степени). Идея состоит в том, что в каждом методе есть параметр, отвечающий за степень “извилистости” тренда. Поэтому можно получить похожие тренды.

20.02.2024 - Смотрели задания по периодограммам. Рассказала про автокорреляционную функцию ACF. Задание на 27.02.2024: 1) построить для шумов и вашего ряда ACF; 2) воспользоваться пакетом Rssa: проверить теорию SSA по разделимости на модельных рядах - посмотреть, какой ранг у экспонент, полиномов, косинусов и их произведений (пользуйтесь svd.method = “svd” в функции ssa; если s <- ssa(…), то доступ к сингулярным числам svd разложения идет через s\$sigma); построить примеры, когда есть/нет точная разделимость, есть/нет разделимость по вкладу. Посмотреть, как выглядят собственные векторы, по ним сделать группировку и найти слагаемые ряда. Примеры кода см. https://ssa-with-r-book.github.io/01-chapter2-part1.html (фрагменты 2.1.1-2.1.3).

13.02.2024 - о типах рядов и их структуре. Периодограммы. Задание на 20.02.2024: 1) на примере синуса показать эффект растекания в периодограммах (taper=0), 2) сгенерировать белый и красный шум и построить их периодограммы. (в 1) и 2) показать, как меняются периодограммы при увеличении длинs ряда; научиться строить периодограммы без лог-шкалы по оси Y, использовать demean, detrend), 3) найти реальный временной ряд, состоящий их тренда, периодичности и шума, построить периодограмму и объяснить ее.
Функции для периодограммы - spec.pgram (без сглаживания), periodogram. Напоминаю про тип данных ts.
Вот тут пример, но разложение делать не надо https://habr.com/ru/articles/505738/, только до него.

Семи/Вебинары 2023

23.05.2023 Forecasting: Principles and Practice - ссылка на книгу, где можно почитать про ETS (и про многое другое). Последнее домашнее задание на 30.05. (1) Добавить к сравнению прогнозов по MSE прогноз по ETS (2) сгенерировать подходящие данные и продемострировать на них обнаружение разладки, многомерный SSA (что лучше, одномерный или многомерный), а также взять картинку и провести 2D-SSA разложение.

16.05.2023 Д.з. на 23.05. Построение прогноза по Seasonal ARIMA для реальных данных, сравнение с SSA, в SSA строить доверительные бутстреп интервалы. По SSA дополнение - сделать в ряде искусственные дырки и заполнить их gapfill и igapfill. Еще - автоматическая идентификация тренда.

10.05.2023 Д.з. на 16.05. Определение модели авторегрессии для модельных данных модельные ряды (возьмите пару примеров, варианты (1,5), (2,6), (3,7), (4,8), (9,10), (12,13), (10,15), (11,14)), построение прогноза с доверительными интервалами. Для определения модели используйте ACF, PACF, для оценивания параметров arima или лучше Arima (пакет forecast https://otexts.com/fpp2/arima-r.html, там же прогноз), потом еще автоматический подбор модели по AIC auto.arima. (Тест на единичный корень называется Dickey–Fuller test for unit roots.) Если ряд надо дифференцировать, то перед acf и pacf используйте diff.

02.05.2023 Д.з. на 10.05. Добавить бутстреп-доверительные интервалы к прогнозу по SSA.

25.04.2023 - Д.з. на 02.05 (1) к д.з. на 25.04 добавить нахождение явного вида сигнала вашего реального ряда; (2) отрезать от своего реального ряда 1 или 2 периода и спрогнозировать их с помощью рекуррентного и векторного прогноза (rforecast и vforecast), сравнить. Объяснить поведение долгосрочного прогноза на основе корней прогнозирующей ЛРФ. Для выбора компонент для прогноза провести ssa-анализ укороченного ряда.

18.04.2023 - Рассказывала про связь связь линейного рекуррентного соотношения и сигнального подпространства. Методы оценивания подпространства, включая алгоритм ESPRIT. Д.з. на 25.04: (1) взять ряд конечного ранга без шума и без кратных корней х.п., оценить его ранг r с большим L. Потом взять L=r+1, получить минимальную ЛРФ из ортогонального дополнения к подпространству сигнала (U_{r+1}), на основе ее корней оценить нелинейно входящие параметры временного ряда. Решив систему уравнений для первых r элементов ряда найти линейно входящие параметры. Полученную формулу сигнала сравнить с исходным сигналом. (2) то же самое, только взять сигнал с кратными корнями и провести кластеризацию близких корней х.п. ЛРФ. (3) Взять сигналы из (1) и (2), добавить шум и найти примерно формулу сигнала. Разница с предыдущим в том, что L большое, сигнальные корни оцениваются приближенно с помощью ESPRIT (parestimate), линейно входящие параметры оцениваются по всем элементам ряда с помощью lm.

11.04.2023 - Рассказывала про связь связь линейного рекуррентного соотношения и явного вида временного ряда.

04.04.2023 - Дедлайн для отправки всех заданий, можно без выполнения заданий на 11 апреля, если вы сделаете эти задания к 11-му - воскресенье 9 апреля (при нарушении сроков будут штрафы). Задание на 11 апреля: добавить iossa для улучшения разложений в заданиях ранее (iossa можно сочетать с fossa, применяя последовательно), попробовать применить Toeplitz SSA на моделированных данных, SSA with projections (вариант с двойным центрированием для выделения линейного тренда) для ваших данных и для модельных с линейным трендом (в сравнении с Basic SSA).

28.03.2023 - Задание на 04 апреля: добавить разложение ряда методами SSA (можно использовать fossa), classical seasonal decomposition, STL. В каждом случае рисовать тренд на фоне ряда и проверять остаток на белый шум (периодограмма и ACF).

21.03.2023 - Задание на 28 марта: (1) найти тренд методом loess и с помощью HP-фильтра и добавить результаты к графику с прошлого раза, где на одном графике изображены тренды, которые выделены скользящим средним, SSA и полиномиальной регрессией. (2) Взять косинус с косинусоидально модулированной амплитудой, с помощью SSA найти эту огибающую и наложить ее на исходный ряд. То же самое сделать для шума с меняющейся дисперсией, только на исходный ряд накладывать предсказательный интервал (+- 1.96 SD). Напомню, что это делается с помощью нахождения тренда у квадрата исходного ряда.

14.03.2023 - Задание на 21 марта: нарисовать на одном графике тренды, которые выделены скользящим средним, SSA и полиномиальной регрессией (посмотрите на полиномы разной степени, функция poly генерирует признаки для полиномиальной регрессии заданной степени)

07.03.2023 - про фильтры, АЧХ, скользящее среднее. Задание на 14 марта: (1) разобраться с фильтрами, их АЧХ, и применить к модельным и реальным данным (для реальных данных попробовать выделить тренд скользящим средним). В том числе, построить периодограмму до применения фильтра и после. Код для АЧХ см. http://statmod.ru/wiki/study:spring2019:ts_pract за 1 марта (поменяйте неправильные символы типа стрелочек и кавычек на текстовые варианты). (2) сгенерировать белый и красный шумы и с помощью скользящего среднего, примененного к периодограмме, оценить спектральную плотность.
Вторая часть задания - по SSA. Попробуйте выделить тренд с помощью SSA (R-пакет Rssa).

28.02.2023 - все показывают задания по периодограммам.

21.02.2023 - периодограммы. Задание на 28.02: 1) на примере синуса показать эффект растекания в периодограммах (taper=0), 2) сгенерировать белый и красный шум и построить их периодограммы. (в 1) и 2) показать, как меняются периодограммы при увеличении длиня ряда; научиться строить приодограммы без лог-шкалы по оси Y), 3) найти временной ряд, состоящий их тренда, периодичности и шума, построить периодограмму и объяснить ее.

14.02.2023 - о типах рядов и их структуре

Литература и ссылки

  1. Ссылка на R-пакет Rssa, версия R будет нужна не меньше 3.2
  2. Статьи-tutorial для Rssa:
    • Nina Golyandina, Anton Korobeynikov, Anatoly Zhigljavsky “Singular spectrum analysis with R”, 2018. Сайт с примерами в R из книги http://ssa-with-r-book.github.io
    • Базовый метод (примеры частично не работают с новой версией пакета v1): N.Golyandina, A.Korobeynikov. Basic Singular Spectrum Analysis and Forecasting with R. Computational Statistics and Data Analysis. Volume 71, March 2014, pp.934-954. Версия в Arxiv
  3. Многомерные обобщения метода и общая схема: N.Golyandina, A.Korobeynikov, A.Shlemov, K.Usevich. Multivariate and 2D Extensions of Singular Spectrum Analysis with the Rssa Package. Journal of Statistical Software, v.67, Issue 2, 2015, pp.1-78. Открытый доступ к статье с кодом примеров: J.Stat.Soft.
  4. (не будет использоваться в курсе) Программа CaterpillarSSA (Windows). Для получения рег.ключа к студенческой версии мне нужно прислать запрос.