Как реализовать перекрестную проверку (по происхождению скользящего прогнозирования) с помощью ARIMA?

Предположим, что у меня есть набор данных временных рядов, использующий 90% в качестве обучающего набора и 10% в качестве случайного набора для проверки. Как оценить точность модели ARIMA?

Должен ли я соответствовать модели ARIMA с auto.arima, используя 100% полного набора данных, и итеративно обновлять его до обучающего набора, используя forecast::Arima для прогнозирования набора проверки?

OR

Должен ли я итеративно подогнать модель ARIMA с auto.arima, используя обучающий набор, и спрогнозировать набор валидации, и, следовательно, другую модель, без переоборудования каждый раз?

Я всегда думал, что это первая модель, однако моя модель делает странные вещи, используя термины Фурье для учета множественной сезонности.

Был бы очень признателен, если бы кто-нибудь мог мне помочь.


person Huy Huynh    schedule 01.11.2019    source источник


Ответы (1)


Я настоятельно рекомендую прочитать «Оценка точности прогнозов» (раздел 3.4) книги Роба Хайндмана «Прогнозирование: принципы и практика» по теме перекрестной проверки моделей временных рядов.

https://otexts.com/fpp2/accuracy.html

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

Пример №1. Допустим, у меня есть ежемесячные продажи за 2014–2018 годы, и я хочу построить модель для прогнозирования ежемесячных продаж на 2019 финансовый год. Я бы обучил свою модель ARIMA на 2014–2017 годы и предсказал 12 месяцев. , затем сравните результаты моих прогнозов с фактическими ежемесячными продажами 2018 года, которые я использую в качестве тестового набора, используя такую ​​технику, как средняя абсолютная процентная ошибка (MAPE, также обсуждаемая в книге Хайндмана). При этом интервалы прогнозов будут становиться все больше по мере того, как вы прогнозируете все дальше от последней текущей точки данных.

Пример № 2. Та же проблема прогнозирования ежемесячных продаж. Я также мог обучить модель в период с января 2014 года по декабрь 2017 года, а затем предсказать это время только за 1 месяц. Затем обучите модель с января 2014 года по январь 2018 года и сделайте прогноз на февраль 2018 года, затем обучите модель с января 2014 года по февраль 2018 года, сделайте прогноз на март 2018 года и т. Д. Изображение ниже хорошо иллюстрирует эту методологию.

Изображение примера № 2 из прогнозирования: принципы и практика

В книге обсуждаются и другие способы перекрестной проверки, которые я снова рекомендую прочитать. В R есть масса потрясающих функций перекрестной проверки временных рядов, таких как функция tsCV ().

Надеюсь это поможет. Удачи!

person devinbrowndev    schedule 01.11.2019
comment
Бумага очень помогает, спасибо! Однако следует ли при использовании функции tsCV () использовать те же параметры ARIMA (p, d, q) ИЛИ использовать auto.arima вместо этого для прогнозирования? Я сомневаюсь, что последний верен, поскольку вы можете оценивать совершенно другую модель. - person Huy Huynh; 01.11.2019
comment
Из ответа Хайндмана на аналогичный вопрос: auto.arima возвращает объект модели, tsCV запрашивает объект временного ряда. Однако можно использовать tsCV с auto.arima, см. Ссылку на ссылки Hyndman в его ответе здесь. github.com/robjhyndman/forecast/issues/577 - person devinbrowndev; 02.11.2019