Я получаю вопросы об этом почти каждую неделю. Вот пример из недавнего комментария к этому блогу:
У меня есть два больших временных ряда данных. Один разделен интервалами секунд, а другой минутами. Продолжительность каждого временного ряда составляет 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)) (Предупреждение: это займет несколько минут.) Если Похожие сообщения: |