Как стать автором
Обновить

Автоматически выделяем кусочно-линейные тренды временного ряда

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.7K
Всего голосов 8: ↑8 и ↓0+9
Комментарии9

Комментарии 9

Пока сложно сказать как можно применить это в моей работе. Однако, само знание о такой возможности полезно и вполне вероятно, что найдется применение.

В коде есть небольшая неточность, в конце не хватает как минимум строчки:
plt.show()

Не видно ничего без нее.

Спасибо за дополнение!

Обычно я для таких целей использую простую 1-2 слойную нейронку с sin в качестве функции активации. Прекрасно строит тренды, причём нелинейные. Функция ошибки - Mae, чтобы уменьшить влияние выбросов. Давно уже хочу написать материал на эту тему, но никак руки не доходят.

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

Если я правильно вас понял, то и правда должно хорошо работать. С удовольствием почитал бы ваш материал.

Если компоненты ряда гармонические, например с выраженной сезонностью, то это будет работать и качество прогноза хорошее. Если же применительно к финансовым рядам, то не сработает - структура ряда многокомпонентная и нестационарная. Нужны другие подходы. Точнее трендовую линию по известному ряду построить можно, но прогнозное качество будет скорее всего низким.

А чем плоха ARIMA ?

или савгол?

Ничем. SARIMAX до сих пор успешно используется. Быстр и надёжен.

Для выделения лучшего варианта аппроксимации можно использовать коэффициент Байеса: такой подход позволяет получить количественное значение "хорошести" каждой модели.

Преимуществом этого метода является учёт объема параметрического пространства (штраф Окаама), то есть модель из примера с количеством промежутков аппроксимации равным количеству наблюдений не сможет быть выбрана алгоритмом даже при нулевой невязке.

Недостатком такого подхода является сложность вычисления коэффициента. Для его нахождения необходимо интегрировать все параметрическое пространство, что невозможно произвести простым перебором значений на сетке. Выходом может являться использование Марковских цепей для полного исследования пространства, приближенная оценка параметра Байеса или использование информационного критерия.

Коэффициент Байеса:

https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D0%B5%D0%BD%D1%82_%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%B0?wprov=sfla1

Информационный критерий:

https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9#%D0%91%D0%B0%D0%B9%D0%B5%D1%81%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%BD%D1%84%D0%BE?wprov=sfla1

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории