12か月の間に動物が1時間ごとに行った回数のデータセットがあります。高速フーリエ変換を使用して、周期的なパターンと周期性を調べたい。過去に、私はこれにStatisticaを使用しました。ただし、Rを使用して、スペクトル密度と周期のプロットを取得したいと思います。 Rでこれを行う簡単な方法はありますか?可能であれば、活動の12時間と24時間のピークを特定したいと思います。
次の機能を検討できます。
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
はトレンド除去された時系列。
spectrum
を使用してスペクトル密度分析を行います。また、基本高速フーリエ変換の場合はfft
。