web-dev-qa-db-ja.com

Rの高速フーリエ変換

12か月の間に動物が1時間ごとに行った回数のデータセットがあります。高速フーリエ変換を使用して、周期的なパターンと周期性を調べたい。過去に、私はこれにStatisticaを使用しました。ただし、Rを使用して、スペクトル密度と周期のプロットを取得したいと思います。 Rでこれを行う簡単な方法はありますか?可能であれば、活動の12時間と24時間のピークを特定したいと思います。

27
user1626688

次の機能を検討できます。

  • periodogram from TSAパッケージは、すぐにピリオドグラムをプロットします。
  • periodogramからGeneCycleは、周波数と推定パワースペクトル密度のリストを返します。いくつかの特別なオプションが設定された_stats::spectrum_のラッパー関数です。
  • spectrum from statsを使用すると、ピリオドグラムまたは自己回帰プロセスのいずれかを使用して、スペクトル密度の推定に使用する方法を選択できます。
  • cpgramからのstatsは、信頼区間とともに累積ピリオドグラムをプロットします。

すべての詳細については、たとえば_?cpgram_または_?spectrum_を参照してください。関数の名前が一致する場合は、_TSA::periodogram_および_GeneCycle::periodogram_であることに注意してください。

また、これらの機能の使用方法に関するオンラインの例とチュートリアルがたくさんあります。 fftの使用法については here を、さらに広範なチュートリアルについては here を参照してください。

また、おそらく既にご存知のように、特定の時系列はトレンド除去する必要があります。したがって、たとえば、xの代わりにdiff(x)を使用します。最後に、12時間と24時間の頻度を識別できるように、時系列の長さは12で割り切れる必要があります。たとえば、x[-(1:(length(x) %% 12))]で達成できます。ここで、xはトレンド除去された時系列。

37
Julius Vainora

spectrumを使用してスペクトル密度分析を行います。また、基本高速フーリエ変換の場合はfft

8
Hong Ooi