Подтвердить что ты не робот

Быстрое преобразование Фурье в R

У меня есть набор данных с количеством почасовых посещений животным, сделанным в течение 12 месяцев. Я хочу использовать быстрое преобразование Фурье для изучения циклических паттернов и периодичности. Раньше я использовал Statistica для этого; однако я хотел бы использовать R, чтобы получить график спектральной плотности против периода. Есть ли простой способ сделать это в R? Я хотел бы идентифицировать 12 и 24-часовой пик активности, если это возможно.

4b9b3361

Ответ 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 для базового быстрого преобразования Фурье.