Статьи

R: сезонные периоды

Я получаю вопросы об этом почти каждую неделю. Вот пример из недавнего комментария к этому блогу:

У меня есть два больших временных ряда данных. Один разделен интервалами секунд, а другой минутами. Продолжительность каждого временного ряда составляет 180 дней. Я использую R (3.1.1) для прогнозирования данных. Я хотел бы знать значение аргумента «частоты» в функции ts () в R для каждого набора данных. Поскольку большинство примеров и случаев, которые я видел до сих пор, составляют самое большее месяцы или дни, меня довольно смущает, когда речь идет о одинаково разделенных секундах или минутах. Насколько я понимаю, аргумент «частота» — это количество наблюдений за сезон. Так что же такое «сезон» в случае секунд / минут? Я предполагаю, что, поскольку в день 86 400 секунд и 1440 минут, это должны быть значения для аргумента freq. Это верно?

Тот же вопрос был задан на перекрестной валидации .com .

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

Данные частота
годовой 1
квартальный 4
ежемесячно 12
еженедельно 52

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

Если частота наблюдений меньше недели, то обычно есть несколько способов обработки частоты. Например, почасовые данные могут иметь суточную сезонность (частота = 24), недельную сезонность (частота = 24×7 = 168) и годовую сезонность (частота = 24×365.25 = 8766). Если вы хотите использовать  tsобъект, вам нужно решить, какой из них является наиболее важным.

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

Данные частоты
минут час день неделю год
Ежедневно 7 365,25
почасовой 24 168 8766
половинным ежечасно 48 336 17532
минут 60 1440 10080 525960
секунд 60 3600 86400 604800 31557600

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

Например, taylorнабор данных из forecastпакета содержит получасовые данные о спросе на электроэнергию из Англии и Уэльса за 3 месяца в 2000 году. Он был определен как

taylor <- msts(x, seasonal.periods=c(48,336)

Одной удобной моделью для нескольких сезонных временных рядов является модель TBATS:

taylor.fit <- tbats(taylor)
plot(forecast(taylor.fit))

(Предупреждение: это займет несколько минут.)

Если mstsобъект используется с функцией, предназначенной для tsобъектов, в качестве атрибута «частота» используется самый большой сезонный период.


Похожие сообщения: