Значение «Частота» для данных интервалов секунд / минут в R

28

Я использую R (3.1.1) и модели ARIMA для прогнозирования. Я хотел бы знать, каким должен быть параметр «частоты», который назначается в ts()функции , если я использую данные временных рядов, которые:

  1. разделено минутами и распространяется в течение 180 дней (1440 минут / день)
  2. отделяется секундами и распространяется на 180 дней (86 400 секунд / день).

Если я правильно помню определение, «частота» в ts в R - это число наблюдений за «сезон».

Вопрос часть 1:

Что такое "сезон" в моем случае?

Если сезон "день", то "частота" для минут = 1440 и 86 400 для секунд?

Вопрос часть 2:

Может ли «частота» также зависеть от того, что я пытаюсь достичь / прогнозировать? например, в моем случае я хотел бы иметь очень краткосрочный прогноз. На шаг впереди на 10 минут каждый раз. Тогда можно будет считать сезон часом, а не днем? В этом случае частота = 60 для минут, частота = 3600 для секунд?

Я, например, пытался использовать частоту = 60 для минутных данных и получил лучшие результаты по сравнению с частотой = 1440 (используется, fourierсм. Ссылку Хиндмана ниже) http://robjhyndman.com/hyndsight/forecasting-weekly-data/

(Сравнение было сделано с использованием MAPE для измерения точности прогноза)

В случае, если результаты являются полностью произвольными, и частота не может быть изменена. Какова будет интерпретация использования freq = 60 в моих данных?

Я также думаю, что стоит упомянуть, что мои данные содержат сезонность каждый час и каждые два часа (наблюдая необработанные данные и функцию автокорреляции)

Apython
источник

Ответы:

38

«Частота» - это количество наблюдений за «цикл» (обычно год, но иногда неделя, день, час и т. Д.). Это противоположно определению частоты в физике или в анализе Фурье, где «период» - это длина цикла, а «частота» - это инверсия периода. При использовании ts()функции в R должны использоваться следующие варианты.

Data      frequency
Annual     1
Quarterly  4
Monthly   12
Weekly    52

На самом деле в году не 52 недели, а 365,25 / 7 = 52,18 в среднем. Но большинство функций, которые используют tsобъекты, требуют целочисленной частоты.

Если частота наблюдений меньше недели, то обычно есть несколько способов обработки частоты. Например, данные, наблюдаемые каждую минуту, могут иметь почасовую сезонность (частота = 60), суточную сезонность (частота = 24x60 = 1440), недельную сезонность (частота = 24x60x7 = 10080) и годовую сезонность (частота = 24x60x365.25 = 525960). Если вы хотите использовать tsобъект, вам нужно решить, какой из них является наиболее важным.

Альтернативой является использование mstsобъекта (определенного в forecastпакете), который обрабатывает несколько временных рядов сезонности. Затем вы можете указать все частоты, которые могут быть актуальны. Он также достаточно гибок для обработки нецелых частот.

Вам не обязательно включать все эти частоты - только те, которые могут присутствовать в данных. Поскольку у вас есть данные только за 180 дней, вы, вероятно, можете игнорировать ежегодную сезонность. Если данные являются измерениями естественного явления (например, температуры), вы также можете игнорировать еженедельную сезонность.

При наличии нескольких сезонностей вы можете использовать модель TBATS или термины Фурье в модели регрессии или ARIMA. fourierФункция из прогнозного пакета будет обрабатывать mstsобъекты.

Роб Хиндман
источник
Вариант этого ответа был опубликован в моем блоге: robjhyndman.com/hyndsight/seasonal-periods
Роб Хиндман,
Профессор Хиндман, большое спасибо за ваш пост! Я рад получить ответы на мои вопросы.
Apython