【发布时间】:2012-12-10 05:48:13
【问题描述】:
我有一个数据集,其中包含动物在 12 个月内每小时访问的次数。我想使用快速傅里叶变换来检查周期性模式和周期性。过去,我为此使用过 Statistica;但是,我想使用 R 来绘制频谱密度与周期的关系图。有没有一种简单的方法可以在 R 中做到这一点?如果可能,我想确定 12 小时和 24 小时的活动高峰。
【问题讨论】:
标签: r time-series fft period spectral-density
我有一个数据集,其中包含动物在 12 个月内每小时访问的次数。我想使用快速傅里叶变换来检查周期性模式和周期性。过去,我为此使用过 Statistica;但是,我想使用 R 来绘制频谱密度与周期的关系图。有没有一种简单的方法可以在 R 中做到这一点?如果可能,我想确定 12 小时和 24 小时的活动高峰。
【问题讨论】:
标签: r time-series fft period spectral-density
您可以考虑以下功能。
TSA 包的periodogram 立即绘制周期图。periodogram from GeneCycle 返回频率列表和估计的功率谱密度。它是stats::spectrum 的包装函数,带有一些特殊选项集。spectrum 来自 stats 允许您选择用于估计谱密度的方法:周期图或使用自回归过程。cpgram 来自 stats 绘制累积周期图以及置信区间。请参阅 ?cpgram 或 ?spectrum 以了解所有详细信息,并记住,当函数名称一致时,例如 TSA::periodogram 和 GeneCycle::periodogram。
网上也有大量关于如何使用这些功能的示例和教程。请参阅here 了解fft 的用法和here 以获得更广泛的教程。
此外,您可能已经知道,必须对给定的时间序列进行去趋势化处理。因此,例如,使用diff(x) 而不是x。最后,您的时间序列的长度必须能被 12 整除,以便能够识别 12 小时和 24 小时的频率,这可以通过例如x[-(1:(length(x) %% 12))] 来实现,其中x 是一个去趋势的时间序列。
【讨论】:
使用spectrum 进行光谱密度分析;还有fft 用于基本快速傅里叶变换。
【讨论】:
spectrum 是一个独立的光谱密度分析仪;它调用 fft 并进行一些预处理和后处理以及绘图。