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

11

У меня есть получасовые данные о спросе, которые представляют собой многосезонные временные ряды. Я использовал tbatsв forecastпакете в R, и получил результаты , как это:

TBATS(1, {5,4}, 0.838, {<48,6>, <336,6>, <17520,5>}) 

Означает ли это, что ряд не обязательно должен использовать преобразование Бокса-Кокса, а термин ошибки - ARMA (5, 4), а термины 6, 6 и 5 используются для объяснения сезонности? Что означает этот демпфирующий параметр 0.8383, это также для преобразования?

Ниже приводится декомпозиция участка модели:

введите описание изображения здесь

Мне интересно, что делать levelи slopeрассказать о модели. «Наклон» говорит о тенденции, но как насчет level? Как получить более четкий сюжет для session 1и session 2, которые являются ежедневными и еженедельными сезонными соответственно.

Мне также нужно знать, как выполнять диагностику модели для tbatsоценки модели, за исключением значения RMSE. Обычный способ - проверить, является ли ошибка белым шумом, но здесь предполагается, что ошибка - это серия ARMA. Я рисую 'acf' и 'pacf' ошибки, и я не думаю, что это выглядит как ARMA (5,4). Значит ли это, что моя модель не хороша?

acf(resid(model1),lag.max = 1000)
pacf(resid(model1),lag.max=1000)

введите описание изображения здесь

Последний вопрос, RMSEрассчитывается с использованием подобранного значения и истинного значения. Что если я использую прогнозируемое значение fc1.week$meanи истинное значение для оценки модели, она все еще называется RMSE? Или есть другое название для этого?

fc1.week <-forecast(model1,h=48*7)
fc1.week.demand<-fc1.week$mean
Jeannie
источник

Ответы:

8

На странице справки для ?tbatsмы находим, что:

Подходящая модель обозначается TBATS (omega, p, q, phi,, ...,), где omega - параметр Бокса-Кокса, а phi - параметр демпфирования; ошибка моделируется как процесс ARMA (p, q), а в m1, ..., mJ перечисляются сезонные периоды, используемые в модели, а k1, ..., kJ - соответствующее число терминов Фурье, используемых для каждой сезонности.

Так:

  • omega = 1, что означает, что действительно не было преобразования Бокса-Кокса .
  • ph = 0,838, что означает, что тренд будет ослаблен. (Если честно, я не знаю, соответствует ли или полному демпфированию. Лучше немного поиграться с симулированными данными.) См. Параметр для .φзнак равно0φзнак равно1use.damped.trendtbats()
  • У вас есть три различных сезонных цикла: один с длиной 48 = 24 * 2 (ежедневно), один с длиной 336 = 7 * 24 * 2 (еженедельно) и один с длиной 17520 = 365 * 24 * 2 (год). tbatsподходит к первому с использованием шести терминов Фурье, второй снова с шестью, последний с пятью.

Оригинальная статья TBATS De Livera, Hyndman & Snyder (2011, JASA ), конечно, полезна.

Следующий:

  • «Уровень» - это локальный уровень временного ряда.
  • «Тренд» - это местный тренд.

Они аналогичны более распространенному разложению по сезонным трендам с использованием lowess (STL) . Посмотрите на stl()команду.

Чтобы получить более четкий график для сезона 1 и сезона 2, вы можете посмотреть числовые значения отдельных компонентов вашей модели TBATS. Посмотрите str(tbats.components(model1))и summary(tbats.components(model1)). tbats.components()дает вам объект с несколькими временными рядами ( mts), который по сути является матрицей - один из столбцов даст вам каждый сезонный компонент.

residuals()должен работать так, как будто он работает везде в R; то есть он должен вернуть окончательные остатки. Это действительно должен быть белый шум, потому что они являются остатками после применения ARMA (5,4). Пики в вашем ACF кажутся регулярными - похоже, что осталась некоторая сезонность. Можете ли вы вывести их периодичность? (Это действительно не помогает, что лаги учитываются во множестве самого длинного сезонного цикла.)

Наконец, да, среднеквадратичная ошибка, которая является мерой точности прогноза по общей точке , имеет ту же аббревиатуру вне выборки: RMSE.

Стефан Коласса
источник
1
Большое спасибо! Да, пик ACF регулярный, один пик в 48 лагов. Проблема в том, что я уже включил 48 как сезонные в свои временные ряды. Как вы обычно делаете, чтобы исправить сезонный остаток? Что-нибудь еще стоит попробовать?
Джинни
1
Hum. К сожалению, я не вижу способа принудительно tbats()включить больше терминов Фурье для определенных сезонностей. Извините ...
Стефан Коласса