Как определить оптимальный горизонт прогноза временных рядов?
Подскажите пожалуйста как определить оптимальный горизонта прогноза временных рядов. Понимаю, что все зависит от поставленной задачи и данных, но возможно есть какой-то метод расчета оптимального будущего периода или среднестатистический период.
Ответы (3 шт):
Я бы сказал, нет такого.
Начать нужно с того, что вы называете оптимальным горизонтом. На расстоянии менее горизонта расхождение с предсказанием должно быть не более 10%? или 20%? Или ещё как?
Как только вы определите критерий "оптимальности", так сразу можете ввести горизонт как гиперпараметр и оптимизировать его на обучающей выборке. Это будет оптимальным горизонтом для вашей конкретной задачи и вашего конкретного критерия оптимальности.
Это сильно зависит от природы данных. Например, если вы предсказываете курс акций, то вряд ли найдёте модель лучше, чем "следующее значение = предыдущему значению", т.е. оптимальный горизонт тут - один шаг. Или вы предсказываете покупки какого-то товара, например, новогодних игрушек. Понятно, что тут силён сезонный фактор и продажи новогодних игрушек в декабре будет проще предсказать, чем в июне. В декабре оно будет примерно такое же, как в декабре прошлого года, а в июне - скорее всего, совершенно случайное (но небольшое). Кто-то решил сделать кому-то подарок в виде новогодних игрушек заранее - и вот продажи их в июне выросли на 100%. Как такое предсказать? Да никак. В общем: "Know your data", как говорится.
если данные стационарны - то любой, но при увеличении горизонта будет увеличиваться и доверительный интервал для прогноза -- какой Д.И. вам комфортен, на такой интервал В.Р. и делайте прогноз
если данные не стационарны - прогноз можно сделать только на 1 шаг вперёд
чтобы нестационарные данные привести к стационарным - можно использовать первые разности вместо самих данных, т.е. np.diff(x)