Проект по временным рядам

  1. Выбираем любой алгоритм:
  • ARIMA с автоподбором

Древний игрок на арене прогнозирования временных рядов. Много материала. Хорошо изучен. Однако простого русского пересказа статьи про автоподбор для чайников я не видел!

Automatic Time Series Forecasting: The forecast Package for R

Hyndman, Forecasting Principles and Practice

PyFlux: python time series library

python: statsmodels

  • ETS с автоподбором

Не менее древний игрок, чем ARIMA. По каким-то неведомым мне причинам используется гораздо реже, чем заслуживает. Большинство университетских курсов по временным рядам содержат блок про ARIMA и полный ноль про ETS, хотя это два лидера в прогнозировании одномерных временных рядов.

Automatic Time Series Forecasting: The forecast Package for R

Hyndman, Forecasting Principles and Practice

PyFlux: python time series library

  • TBATS с автоподобором

Мощь старых приёмов (ETS + преобразование Бокса-Кокса) и сезонность сложной структуры.

Hyndman, Forecasting with complex seasonality

  • gaussian state space models

Родственник ETS.

PyFlux: python time series library

Три пакета для байесовских структурных временных рядов:

  • bsts

Довольно молодой игрок. Байесовский подход, но по сути, прямой родственник ETS. Готовый пакет от гугла.

Steven Scott, Short course on BSTS

Hal Varian, Steven Scott, Predicting the present

  • prophet

Prophet: Automatic Forecasting Procedure

Совсем юный игрок для дневных рядов. Аналогично с bsts: байесовский подход и родственник ETS. Готовый код в STAN. Пакет от фейсбука.

  • реализация bsts в STAN

  • SSA, «Гусеница»

Собственные значения и собственные векторы приходят на помощь :)

Rssa, R package

  • xgboost/lightgbm

Градиентный бустинг применительно к рядам. Вопрос в том, как создавать объясняющие переменные.

xgboost

lightgbm

R package to forecast timeseries with the xgboost

  • random forest

Случайные лес применительно к рядам. Аналогично, вопрос в том, как создавать объясняющие переменные.

ranger: fast random forests in R

  • Тета-метод

Неожиданно простой метод для коротких рядов.

Hyndman, Forecasting Principles and Practice

  • VAR + lasso

Лассо применительно к векторным авторегрессиям.

Nicholson, BigVAR User’s Guide

Если есть желание изложить другой алгоритм, спрашивайте!

  1. Излагаешь алгоритм простым языком. Насколько подробно писать? Представь, что ты излагаешь себе самому этот алгоритм в тот момент, когда ты его не знаешь. Если какой-то переход никак не становится ясен, так честно и пишем «как из … следует … я не понял».

  2. Приводим примеры с разными опциями. Для каждого примера объясняем аккуратно модель и код для оценивания.

  3. Код очень желательно привести не менее чем в двух языках. Можно использовать julia, R, python.

  4. Оформление: латех или маркдаун.

  5. Не менее 10 рядов для анализа. Желательно больше. Не забывайте про графики рядов! Помните также, что графики не исчерпываются осями (t, $y_t$). При желании можно обработать 1000 рядов :)

  6. Сравниваем качество прогнозов с двумя наивными методами: «завтра будет также, как сегодня» и «усредним прошлые значения». В качестве меры качества прогноза берём сумму квадратов ошибок прогноза вне обучающей выборки.

Ссылки:

  • Теория

Hyndman, Forecasting Principles and Practice

Краткий трёхдневный семинар по прогнозированию рядов в R

Forecasting with R workshop

  • Много рядов:

M3-competition

Tourism forecasting competition

sophisthse: российские макро ряды

  • Взаимодействие python-R-julia

R from python: rpy2

python from R: reticulate

R from julia

julia from R

python from julia

julia from python

Written on April 27, 2017