У меня есть набор данных с количеством почасовых посещений животным, сделанным в течение 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 для базового быстрого преобразования Фурье.