Какой метод можно использовать для определения сезонности в данных?

56

Я хочу определить сезонность в данных, которые я получаю. Есть некоторые методы, которые я нашел, такие как сезонный подсерийный график и график автокорреляции, но дело в том, что я не понимаю, как читать график, кто-нибудь может помочь? Другое дело, есть ли другие методы для определения сезонности с или без окончательного результата на графике?

Даниал
источник
1
Вы можете включить фактический график, который вам трудно понять.
Карл
Более предпочтительно исходные данные, которые можно использовать для создания «проблемного» АКФ.
IrishStat
3
См. Stats.stackexchange.com/q/1207/159
Роб Хиндман
1
см .: journals.ametsoc.org/doi/abs/10.1175/JCLI-D-10-05012.1 Цянь, Ч., Ву, С. Фу и Д. Ванг, 2011 г .: об изменении Эль-Ниньо: взгляд с изменяющегося во времени ежегодного цикл, межгодовая изменчивость и среднее состояние. J. Climate, 24 (24), 6486–6500

Ответы:

70

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

Спектр мощности представляет собой дискретное преобразование Фурье функции автоковариации соответственно сглаженной версии исходного ряда. Если вы думаете о временных рядах как о выборке физической формы волны, вы можете оценить, какая часть полной мощности волны передается на каждой частоте. Спектр мощности (или периодограмма ) показывает зависимость мощности от частоты. Циклические (то есть повторяющиеся или сезонные модели) будут отображаться в виде больших пиков, расположенных на своих частотах.

В качестве примера рассмотрим этот (смоделированный) временной ряд остатков от ежедневного измерения, проведенного за один год (365 значений).

ряд остатков

0

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

серия остатков, заполненных до 0

Если вы выглядите очень усердно, вы можете различить шумный, но повторяющийся паттерн, который встречается 11-12 раз. Длинные последовательности значений выше нуля и ниже нуля, по крайней мере, предполагают некоторую положительную автокорреляцию, показывая, что этот ряд не является полностью случайным.

Вот периодограмма, показанная для частот до 91 (одна четверть общей длины серии). Он был построен с окном Уэлча и нормирован на единицу площади (для всей периодограммы, а не только для части, показанной здесь).

периодограмма

Мощность выглядит как «белый шум» (небольшие случайные колебания) плюс два заметных пика. Их трудно пропустить, не так ли? Большее происходит в период 12, а меньшее - в 52. Таким образом, этот метод обнаружил в этих данных месячный цикл и недельный цикл. Это действительно все, что нужно сделать. Чтобы автоматизировать обнаружение циклов («сезонность»), просто отсканируйте периодограмму (которая представляет собой список значений) для относительно больших локальных максимумов.

Пришло время раскрыть, как эти данные были созданы.

Данные разлагаются на сигнал плюс шум

Значения генерируются из суммы двух синусоидальных волн, одна с частотой 12 (квадрат амплитуды 3/4) и другая с частотой 52 (квадрат амплитуды 1/4). Это то, что обнаружены пики на периодограмме. Их сумма показана в виде толстой черной кривой. Iid Затем был добавлен нормальный дисперсионный шум 2, как показано светло-серыми полосами, простирающимися от черной кривой до красных точек. Этот шум привел низкоуровневые покачивания внизу периодограммы, которые в противном случае были бы просто равны 0. Полностью две трети общего изменения значений непериодичны и случайны, что очень шумно: поэтому так сложно разглядеть периодичность, просто посмотрев на точки. Тем не менее (отчасти потому, что данных так много) найти частоты с помощью периодограммы легко, и результат очевиден.

Инструкции и полезные советы по вычислению периодограмм появляются на сайте « Числовые рецепты» : ищите раздел «Оценка спектра мощности с использованием БПФ». Rимеет код для оценки периодограммы . Эти иллюстрации были созданы в Mathematica 8; периодограмма была вычислена с помощью функции «Фурье».

Whuber
источник
2
Предположение «после удаления какого-либо общего тренда» является Ахиллесовой пятой, поскольку может быть много временных трендов, многие сдвиги уровней которых все были исключены в вашем примере. Идея о том, что входные ряды являются детерминированными по своей природе, противоречит возможному наличие сезонной и регулярной структуры ARIMA. Необработанные необычные одноразовые значения будут искажать любую схему идентификации на основе периодограммы из-за нисходящего смещения оценок периодограммы, приводящих к несущественности. Если еженедельные и / или ежемесячные эффекты изменились в какой-то момент в прошлом, процедура на основе периодограммы потерпит неудачу
IrishStat
@ Ирландский Я думаю, ваш комментарий может несколько преувеличить. Наиболее элементарно искать и обрабатывать «Необычные одноразовые значения» (иначе говоря, выбросы), поэтому стоит упомянуть лишь то, что следует подчеркнуть, что некоторые оценки временных рядов могут быть чувствительными к выбросам. «Детерминированный характер» искажает основные идеи: никто не полагает, что существует детерминизм (о чем свидетельствует огромное количество шума в симуляции). Моделирование включает в себя определенный периодический сигнал в качестве модели - всегда приближенной к реальности - только для иллюстрации связи между периодограммой и сезонностью. (Продолжение ...)
whuber
2
Да, изменения в сезонности могут затенить периодограмму (и акф и т. Д.), Особенно изменения в частоте (маловероятно) или фазе (возможно). Ссылки в моем посте дают решение для этого: они рекомендуют использовать скользящее окно для оценки периодограммы. В этом есть искусство, и, безусловно, здесь есть подводные камни, так что анализ многих временных рядов принесет пользу экспертной обработке, как вы защищаете. Но вопрос состоит в том, существуют ли «другие методы определения сезонности», и, несомненно, периодограмма является статистически мощным, вычислительно эффективным, легко интерпретируемым вариантом.
whuber
В моем мире использование синусов / косинусов - это «детерминированные эффекты», очень похожие на показатели месяца года. Подгонка любой предварительно заданной модели ограничивает подгонянные значения заданным пользователем шаблоном, часто не соответствующим стандартам. Данные следует «выслушать», поскольку они помогают аналитику / передовому компьютерному программному обеспечению эффективно различать фиксированные и стохастические входы. Я имею в виду, что структуры лагов ARIMA являются стохастическими или адаптивными «драйверами», так как установленные значения корректируются / адаптируются к изменениям в истории. из серии. На мой взгляд, использование периодограммы «переоценивает» простое статистическое моделирование
IrishStat
2
@whuber Повторение одного и того же может быть бесполезным. Тем не менее, было бы также неплохо исправить абзац ниже периодограммы, чтобы сказать, что шипы расположены с «частотой» 12 и 52 раза в год, а не «периодом». Исправить сюжет так, чтобы он говорил «частота» вместо «период», также может быть хорошим, если вы думаете, что это не слишком раздражает.
Целелиби,
19

Вот пример использования ежемесячных данных о регистрации заявок на пособие по безработице из города в Нью-Джерси (из Stata, только потому, что я проанализировал эти данные изначально). Сезонность АКФ

Высоты линий указывают на корреляцию между переменной и ее лагом; серая область дает вам представление о том, является ли эта корреляция значимой (этот диапазон является лишь ориентировочным и не самым надежным способом проверки значимости). Если эта корреляция высока, есть свидетельства последовательной корреляции. Обратите внимание на «горбы», возникающие в периоды 12, 24 и 36. Поскольку это ежемесячные данные, это говорит о том, что корреляция усиливается, если вы посмотрите на периоды ровно 1, 2 или 3 года назад. Это свидетельствует о месячной сезонности.

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

Эта процедура не совсем правильная, так как тест требует, чтобы термины ошибок не были последовательно коррелированы. Итак, перед тестированием этих манекенов сезонности нам необходимо удалить оставшуюся последовательную корреляцию (обычно путем включения лагов переменной). Могут быть импульсы, разрывы и другие проблемы с временными рядами, которые также необходимо исправить, чтобы получить соответствующие результаты теста. Вы не спрашивали об этом, поэтому я не буду вдаваться в детали (к тому же, по этим темам есть много вопросов по резюме). (Просто для того, чтобы удовлетворить ваше любопытство, эта серия требует месячных манекенов, отдельного лага и компонента смены, чтобы избавиться от последовательной корреляции.)

Чарли
источник
4

Сезонность может и часто меняется со временем, поэтому сводные показатели могут быть совершенно неадекватными для определения структуры. Нужно проверить на кратковременность коэффициентов ARIMA и часто изменения в «сезонных манекенах». Например, в 10-летнем горизонте, возможно, не было эффекта июня в течение первых k лет, но в последние 10 тысяч лет есть свидетельства эффекта июня. Простой составной эффект июня может быть несущественным, так как эффект не был постоянным во времени. Аналогичным образом сезонный компонент ARIMA также мог измениться. Следует позаботиться о том, чтобы включить изменения локального уровня и / или тенденции местного времени, обеспечивая при этом постоянство дисперсии ошибок с течением времени. Не следует оценивать такие преобразования, как GLS / взвешенные наименьшие квадраты или степенные преобразования, такие как бревна / квадратные корни и т. Д. на исходных данных, но на ошибках предварительной модели. Предположения Гаусса не имеют ничего общего с наблюдаемыми данными, а связаны с ошибками модели. Это связано с основами статистических тестов, в которых используется отношение нецентральной переменной хи-квадрат к центральной переменной хи-квадрат.

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

IrishStat
источник
1

Ответ Чарли хорош, и с этого я и начну. Если вы не хотите использовать графики ACF, вы можете создать фиктивные переменные k-1 для k имеющихся периодов времени. Затем вы можете увидеть, являются ли фиктивные переменные значимыми в регрессии с фиктивными переменными (и, вероятно, трендовым термином).

Если ваши данные ежеквартальные: фиктивный Q2 равен 1, если это второй квартал, иначе 0 фиктивный Q3 равен 1, если это третий квартал, иначе 0 фиктивный Q4 равен 1, если это четвертый квартал, иначе 0 квартал 1 примечания является базовый вариант (все 3 манекена ноль)

Возможно, вы захотите также проверить «декомпозицию временных рядов» в Minitab, часто называемую «классической декомпозицией». В конце концов, вы можете использовать что-то более современное, но это простое место для начала.

zbicyclist
источник
0

Я хотел бы воспользоваться предложением помощи от пользователя IrishStat или кого-либо еще в моей серии примеров из реальной жизни. Я пытаюсь составить сезонный индекс на основе последних 5 лет цен на фьючерсы на сырую нефть. Мне удалось произвести простые средние сезонные, которые можно посмотреть здесь .

Однако я хотел бы воспроизвести скользящий годовой сезонный график (я предполагаю, что скользящий означает, что начало и конец года - это одно и то же значение) и имеет шкалу от нуля до 100, как показано на рисунке ниже: введите описание изображения здесь

Theres 15 лет ежедневных данных об уровне цен в электронной таблице, которые можно загрузить. Пример или любой намек на то, как достичь вышеизложенного, будет принята с благодарностью.

Андрей Кирда
источник
-1

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

Билл Ярберри
источник
Подгонка синусов / косинусов и т. Д. Может быть полезна для некоторых физических / электрических временных рядов, но вы должны знать о MSB, смещении спецификации модели.
IrishStat
1
Авторегрессия не подразумевает сезонность.
Йенс