29

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

4

2 回答 2

40

您可以考虑以下功能。

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

参见,例如,?cpgram?spectrum所有细节,并记住它是,例如,TSA::periodogramGeneCycle::periodogram函数的名称一致时。

网上也有大量关于如何使用这些功能的示例和教程。请参阅此处了解用法fft此处了解更广泛的教程。

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

于 2012-12-23T12:58:57.787 回答
8

用于spectrum进行光谱密度分析;也fft适用于基本的快速傅里叶变换。

于 2012-12-23T11:58:38.133 回答