R中的快速傅里叶变换

我有一个数据集,记录了一只动物在12个月内每小时的访问次数。我想用快速傅立叶变换来检验周期性模式和周期性。在过去,我曾使用Statistica进行此操作;然而,我想用R得到光谱密度和周期的曲线图。在R中有没有一种简单的方法可以做到这一点?如果可能,我想确定12小时和24小时的活动高峰

您可以考虑以下功能:

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

有关所有详细信息,请参见,例如,?cpgram?spectrum,请记住,当函数名称一致时,它是,例如,TSA::periogramGeneCycle::periogram

网上也有很多关于如何使用这些函数的示例和教程。有关fft的用法,请参见此处;有关更广泛的教程,请参见此处

另外,正如您可能已经知道的,必须对给定的时间序列进行去渲染。因此,使用例如diff(x)而不是x。最后,时间序列的长度必须可以被12整除,以便能够识别12小时和24小时的频率,它可以通过以下方式实现:x[-(1:(长度(x)%%12))],其中x是去趋势时间序列

发表评论