R中的快速傅里叶变换

时间:2012-12-23 11:30:24

标签: r time-series fft period spectral-density

我有一个数据集,其中包含12个月内动物的每小时访问次数。我想使用快速傅立叶变换来检查周期性模式和周期性。在过去,我使用Statistica就是为了这个;但是,我想用R来得到光谱密度与周期的关系图。在R中有一个简单的方法吗?如果可能的话,我想确定12小时和24小时的活动高峰。

2 个答案:

答案 0 :(得分:36)

您可以考虑以下功能。

    来自periodogram包的
  • TSA会立即绘制一个周期图。
  • 来自periodogram
  • GeneCycle会返回频率列表和估算的功率谱密度。它是stats::spectrum的包装函数,设置了一些特殊选项。
  • 来自spectrum
  • stats允许您选择用于估算谱密度的方法:周期图或使用自回归过程。
  • 来自cpgram
  • stats绘制累积周期图以及置信区间。

请参阅,例如,?cpgram?spectrum了解所有细节,并记住,当函数名称重合时,它是TSA::periodogramGeneCycle::periodogram

还有很多关于如何使用这些功能的在线示例和教程。有关ffthere的使用情况,请参阅here以获取更广泛的教程。

另外,正如您可能已经知道的那样,必须取消给定的时间序列。因此,使用例如diff(x)而不是x。最后,你的时间序列的长度必须可被12整除,以便能够识别12和24小时的频率,它可以通过例如x[-(1:(length(x) %% 12))]来实现,其中x是一个趋势时间系列。

答案 1 :(得分:8)

使用spectrum进行谱密度分析;对于基本快速傅里叶变换也是fft