Как определить прогнозируемость временных рядов?

10

Один из важных вопросов, с которыми сталкиваются синоптики, заключается в том, можно ли прогнозировать данную серию или нет?

Я наткнулся на статью Питера Кэтта « Энтропия как априорный показатель прогнозируемости », в которой в качестве относительной меры для определения заданного временного ряда используется приблизительная энтропия (ApEn) .

В статье говорится,

«Меньшие значения ApEn указывают на большую вероятность того, что за набором данных последуют аналогичные данные (регулярность). И наоборот, большее значение ApEn указывает на меньшую вероятность повторения аналогичных данных (нерегулярность). Следовательно, большие значения передают больше беспорядка , случайность и сложность системы. "

И сопровождается математическими формулами для расчета ApEn. Это интересный подход, поскольку он предоставляет числовое значение, которое можно использовать для оценки прогнозируемости в относительном смысле. Я не знаю, что означает «Приблизительная энтропия», я больше об этом читаю.

Существует пакет называется pracma в Rтом , что позволяет рассчитать ApEn. Для наглядности я использовал 3 разных временных ряда и рассчитал числа ApEn.

  1. Серия 1. Знаменитые временные ряды AirPassenger - очень детерминированные, и мы должны легко прогнозировать.
  2. Серия 2: Временные ряды солнечных пятен - очень четко определены, но должны быть менее прогнозируемыми, чем серия 1.
  3. Серия 3: Случайное число Нет возможности предсказать эту серию.

Таким образом, если мы вычислим ApEn, серия 1 должна быть меньше, чем серия 2, должна быть очень очень меньше, серия 3.

Ниже приведен фрагмент кода R, который вычисляет ApEn для всех трех серий.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Это не то, что я ожидал. Случайный ряд имеет меньшее число, чем четко определенный ряд AirPassenger. Даже если я увеличу случайное число до 100, я все равно получу следующее, что меньше, чем четко определенный ряд 2 / ряд Sunspot.yealry.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Ниже приведены мои вопросы:

  1. Есть 2 параметра в расчете ApEn ( mи r)? Как их определить. Я использовал значения по умолчанию в Rкоде выше.
  2. То, что я делаю неправильно, показывает, что неправильно, что ApEn ниже для случайных чисел по сравнению с четко определенным рядом, таким как sunspot.yearly.
  3. Должен ли я десезонализировать / развернуть серию и затем оценить ApEn. Автор, однако, применил ApEn непосредственно к серии.
  4. Есть ли другой способ определить, является ли серия прогнозируемой?
предсказатель
источник
Как указано в статье, приблизительная энтропия не должна использоваться для коротких временных рядов, N <200. Что еще более важно, статья использует образец энтропии, а не приблизительную энтропию. Пракма содержит оба. Спасибо
Учитывает ли это объясняющие переменные? Например, если вы прогнозируете истощение аккаунта фирмы, это может быть связано с расходами на маркетинг, а расходы весьма прогнозируемы, на самом деле, запланированные месяцы впереди. Как это будет учтено в предлагаемом подходе?
Аксакал
@Aksakal, нет объяснительных переменных нет. Я искал крупномасштабное одномерное (без объяснительной переменной) прогнозирование временных рядов, где нам нужна объективная мера для оценки прогнозируемости. Кроме того, во многих случаях однофакторное прогнозирование намного точнее, чем модели, построенные с использованием пояснительных переменных.
прогнозист
1
Я чувствую, что это гораздо более узкий вопрос, чем предлагаемый дубликат. Голосование оставьте открытым, но предложите ФП рассмотреть более конкретный заголовок, чтобы не перепутать их. Скажи: «Как определить прогнозируемость временного ряда, используя приблизительную энтропию
Шон Пасха

Ответы:

7

Параметрами mи r, участвующими в вычислении приблизительной энтропии (ApEn) временных рядов, являются длина окна (последовательности) и допуск (значение фильтра) соответственно. В самом деле, с точки зрения m, rа также N(число точек данных), ApEn будет определен как «натуральный логарифм относительной распространенности повторяющихся паттернов длины , mпо сравнению с таковыми из длины m + 1» (Balasis, Daglis, Анастасиадис & Eftaxias, 2011 , стр. 215):

AпЕN(м,р,N)знак равноΦм(р)-Φм+1(р),

где 

Φм(р)знак равноΣяLNСям(р)/(N-м+1)

Следовательно, представляется, что изменение допуска rпозволяет контролировать (временную) гранулярность определения энтропии временных рядов. Тем не менее, использование значений по умолчанию для обоих mи rпараметров в pracmaвызовах функции энтропии пакета работает нормально. Единственное исправление, которое необходимо сделать, чтобы увидеть правильное соотношение значений энтропии для всех трех временных рядов (более низкая энтропия для более четко определенных рядов, более высокая энтропия для более случайных данных), - это увеличить длину вектора случайных данных :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

Результаты , как и ожидалось , - как предсказуемость колебаний уменьшается от большинства определяется series1наиболее случайным образом series 3, их энтропия увеличивается , следовательно: ApEn(series1) < ApEn(series2) < ApEn(series3).

Что касается других мер по прогнозируемости , вы можете проверить средние абсолютные Чешуйчатые ошибки (MASE) - см этого обсуждения для более подробной информации. Анализ прогнозируемых компонентов также представляется интересным и новым подходом к определению прогнозируемости временных рядов. И, как ожидается, для этого есть Rпакет - ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Ω[0,1]Ω(весчасяTеNояsе)знак равно0%Ω(sяNUsояd)знак равно100%

Ссылки

Balasis, G., Daglis, IA, Anastasiadis, A. & Eftaxias, K. (2011). Обнаружение динамических изменений сложности в Dst time sSeries с использованием концепций энтропии и анализа измененного диапазона. В W. Liu и M. Fujimoto (Eds.), «Динамическая магнитосфера», IAGA Special Sopron Book, Series 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Springer. Получено с http://members.noa.gr/anastasi/papers/B29.pdf

Георг М. Горг (2013): анализ прогнозируемых компонентов. JMLR, W & CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Александр Блех
источник
Я также проверил pracma::sample_entropy()функцию, и в этом сценарии также корректируется отношение результатов по временным рядам.
Александр Блех
@ Forecaster: Пожалуйста.
Александр Блех
1
См. Также этот документ notsoirrational.files.wordpress.com/2015/04/schulz15.pdf, в котором используются экспериментальные данные для обоснования их показателей предсказуемости. Это также связывает некоторые работы с работой ForeCA, упомянутой в этом посте
Георг М. Горг
@ GeorgM.Goerg: Спасибо за предложения, ссылки и правки.
Александр Блех
@ Forecaster: С удовольствием.
Александр Блех
0

Каждый временной ряд состоит из 3 компонентов: тренд, сезонность и случайность. Если данные демонстрируют сильную тенденцию и / или являются очень сезонными, то прогноз будет относительно легким. Если данные в основном случайные, то по определению вы ничего не можете предсказать.

Скрытая Марковская Модель
источник