我有一个数据集,其中包含动物在 12 个月内每小时的访问次数。我想使用快速傅里叶变换来检查循环模式和周期性。过去,我为此使用过 Statistica;但是,我想使用 R 来绘制频谱密度与周期的关系图。在 R 中是否有一种简单的方法可以做到这一点?如果可能的话,我想确定 12 小时和 24 小时的活动高峰。
您可以考虑以下功能。
-
periodogram
from TSA
包立即绘制周期图。
-
periodogram
from GeneCycle
返回频率和估计功率谱密度的列表。它是一个包装函数stats::spectrum
设置了一些特殊选项。
-
spectrum
from stats
允许您选择用于估计谱密度的方法:周期图或使用自回归过程。
-
cpgram
from stats
绘制累积周期图以及置信区间。
参见,例如,?cpgram
or ?spectrum
了解所有详细信息并记住它是,例如,TSA::periodogram
and GeneCycle::periodogram
当函数名称重合时。
网上还有大量关于如何使用这些功能的示例和教程。看here http://homepage.univie.ac.at/erhard.reschenhofer/pdf/zr/Spec.pdf用于使用fft
and here http://www.di.fc.ul.pt/~jpn/r/fourier/fourier.html以获得更广泛的教程。
此外,您可能已经知道,给定的时间序列必须去趋势化。因此,使用,例如,diff(x)
代替x
。最后,时间序列的长度必须能被 12 整除,才能识别 12 小时和 24 小时的频率,可以通过以下方式实现:x[-(1:(length(x) %% 12))]
, where x
是去趋势时间序列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)