我有一个数据集,其中包含动物在 12 个月内每小时访问的次数。我想使用快速傅立叶变换来检查周期性模式和周期性。过去,我为此使用过 Statistica;但是,我想使用 R 来绘制频谱密度与周期的关系图。有没有一种简单的方法可以在 R 中做到这一点?如果可能,我想确定 12 小时和 24 小时的活动高峰。
问问题
45350 次
2 回答
40
您可以考虑以下功能。
periodogram
fromTSA
package 立即绘制周期图。periodogram
fromGeneCycle
返回频率列表和估计的功率谱密度。它是一个stats::spectrum
带有一些特殊选项集的包装函数。spectrum
fromstats
允许您选择用于估计谱密度的方法:周期图或使用自回归过程。cpgram
fromstats
绘制累积周期图和置信区间。
参见,例如,?cpgram
或?spectrum
所有细节,并记住它是,例如,TSA::periodogram
当GeneCycle::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 回答