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

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



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

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

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

23 мая — начинаете сдавать зачет по семинару. Для зачета каждому нужно сделать все практические задания, которые перечислены ниже, на собственном реальном ряде (но что-то можно демонстрировать и на смоделированном ряде). Теоретические вопросы прошлых лет - здесь.

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

Задание на 23 мая

Добавляется экспоненциальное сглаживание в разных вариантах (тоже пакет forecast, функция ets) для прогноза. Есть еще функция stlf в пакете forecast, в которой с помощью метода STL удаляется сезонность, потом к остатку применяется не сезонная версия ARIMA или ETS, делается прогноз и к его результату добавляется один период оцененной в STL сезонности.

Вторя часть задания - попробовать применить метод SSA к системе из нескольких рядов и к какому-нибудь изображению.

Задание на 16 мая

ARIMA - самим смоделировать модель (например, arima.sim), оценить параметры (например, arima), определить модель с помощью AIC/BIC (например, arima.auto), сделать прогноз в оцененной модели с доверительными интервалами. Используйте пакет forecast.

Задание на 9 (перенос на 10) мая

Уже можно делать прогноз с помощью методов SSA и строить доверительные интервалы методом бутстреп (bforecast, forecast в Rssa).
Также, можно делать прогноз на основе регрессии. Например, сначала lm, потом predict. Показать (смоделировать данные), когда прогноз по неправильной модели (например, линейному тренду, если на самом деле тренд квадратичный) получается лучше, чем прогноз по правильной модели.

Задание на 2 (перенос на 3) мая

Продолжение показа заданий. (+ parestimate, lrr, roots (из Rssa) + rforecast + vforecast)

Задание на 25 апреля

Продолжение показа заданий. (+ parestimate, lrr, roots (из Rssa))

Задание на 18 апреля

Продолжение показа заданий. (+ parestimate, lrr, roots (из Rssa))

Задание на 11 апреля

Продолжение показа заданий. (+ SSA: grouping.auto и последовательный SSA, когда по-разному идет выбор параметров для выделения тренда и отделения периодики от шума.)
Комментарий: вместо stl в R можно использовать более новую функцию stlplus из одноименного пакета, которая умеет, в частности, работать с пропусками.

Задание на 4 апреля

Сделать разложение ряда на тренд, периодику(и) и шум для реального ряда (decomposition, stl, SSA) и для модельного (SSA). Лучше начать с модельного ряда.
Модельные данные - распределите ряды (каждый берет длинный ряд и короткий с номером +6) - (1 и 7), (2 и 8), …, (6 и 12) для анализа с помощью SSA.
Можно применять последовательный анализ - сначала выделить тренд, сохранить остаток, а потом уже загрузить остаток и разделять его на периодики и шум.
Если тренд похож на линейный, то для его выделения имеет смысл использовать SSA с двойным центрированием. Пример использования:
s ← ssa(co2, column.projector = «centering», row.projector = «centering»)
plot(reconstruct(s, groups = list(trend = seq_len(nspecial(s)))))

Периоды синусов можно оценить с помощью parestimate
pe ← parestimate(s, groups = list(c(2, 3, 5, 6)), method = «esprit»).

Задание на 28 марта

Все, что на 7, 14 и 21 марта, плюс

  1. Огибающие периодической компоненты и огибающие шума.
  2. Seasonal decomposition.
  3. Аддитивная и мультипликативная модели.

Задание на 21 марта

Все, что на 7 и 14 марта, плюс

  1. Выделение тренда параметрической регрессией.
  2. Непараметрические методы оценивания тренда - Hodrick-Prescott фильтр и, главное, loess (локальная регрессия).

Задание на 14 марта

Все, что на 7 марта, плюс

  1. Определение поведения дисперсии шума. Оценить \sigma(n) и нанести на шум.
  2. Разные методы стабилизации дисперсии.
  3. Скользящее среднее и скользящая медиана.

Задание на 7 марта

Задание: Провести анализ ряда - выделить тренд, исследовать частотные характеристики ряда и остатка после выделения тренда. (R: spec.pgram - для периодограммы.)

Ряды можно найти самостоятельно, например, на таком ресурсе https://research.stlouisfed.org/fred2/categories/32447, а можно использовать ряды из этого архива (в одном файле несколько рядов). Для демонстрации каких-то эффектов можно дополнительно промоделировать ряд.

Что нужно продемонстрировать:

  1. Сглаживание временного ряда и выделение тренда. Использование фильтров для частотной фильтрации.
  2. Выделение тренда и подавление шума. Использование фильтра (скользящего среднего). Зависимость результата от длины окна.
  3. Выделение тренда у ряда с сезонностью (выбор длины окна в скользящем среднем).
  4. Частотный анализ ряда с помощью периодограммы; анализ остатка после того, как выделили тренд/сгладили.
  5. Амплитудно-частотная характеристика фильтра (АЧХ). Взять несколько фильтров, разность соседних точек, сумма соседних точек, …. Построить АЧХ, проинтерпретировать, показать, как действует, на конкретном временном ряде.
  6. Растекание частоты в периодограмме. Подправка длины ряда для ее устранения.

R код АЧХ (хотя наверняка есть и в каком-то пакете, но тут - в лоб)

afc ← function(filter, omega) {
k ← seq_along(filter) - 1
h ← function(o) sum(rev(filter) * exp(-k*1i * o))
abs(sapply(omega, h))
}

freq ← seq(0, pi, 0.001)
filt ← rep(1, 100)
filt ← c(-1,1)
filt ← c(-1,2,-1)
omega ← freq/2/pi
plot(afc(filt, freq) ~ omega, type = «l»)

К зачету

TODO

Даты прошлого года:
Зачет 19 мая, пересдача 26 мая, комиссия 31 мая.

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

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

  • Ссылка на R-пакет Rssa,

версия R будет нужна не меньше 3.2

  • Статьи-tutorial для Rssa:
    • Базовый метод:

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

  • Многомерные обобщения метода и общая схема:

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.

study/spring2018/ts_pract.txt · Последнее изменение: 2018/05/20 02:21 — nina
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0