У меня есть набор данных с количеством почасовых посещений животным, сделанным в течение 12 месяцев. Я хочу использовать быстрое преобразование Фурье для изучения циклических паттернов и периодичности. Раньше я использовал Statistica для этого; однако я хотел бы использовать R, чтобы получить график спектральной плотности против периода. Есть ли простой способ сделать это в R? Я хотел бы идентифицировать 12 и 24-часовой пик активности, если это возможно.
Быстрое преобразование Фурье в R
Ответ 1
Вот что вы можете попробовать:
-
periodogram
из пакетаTSA
, он немедленно отображает периодограмму. -
periodogram
отGeneCycle
, он возвращает список частот и расчетных спектральных плотностей мощности. Это функция-обертка дляstats::spectrum
с некоторыми специальными опциями. -
spectrum
отstats
, он позволяет выбрать метод, используемый для оценки спектральной плотности: либо периодограмму, либо используя процесс авторегрессии. -
cpgram
изstats
отображает кумулятивную периодограмму вместе с доверительным интервалом. - Для использования
fft
см. примеры здесь.
См. ?cpgram
и аналогичный для всех деталей, и имейте в виду, что это, например, TSA::periodogram
и GeneCycle::periodogram
, когда имена функций совпадают.
Как вы, вероятно, знаете, данный временной ряд должен быть отложен, поэтому используйте, например, diff(x)
вместо x
. И, наконец, длина вашего временного ряда должна быть делимой на 12, чтобы иметь возможность идентифицировать 12 и 24 часа частоты, это может быть достигнуто, например, x[-(1:(length(x) %% 12))]
, где x
- определяемый временной ряд.
Ответ 2
Используйте spectrum
для проведения спектрального анализа плотности; также fft
для базового быстрого преобразования Фурье.