我有一个小时的访问期间的12个月的动物数量的数据集。 我想使用的快速傅立叶变换检查循环模式和周期。 在过去,我已经使用STATISTICA此这一点; 不过,我想用R获得频谱密度与周期的曲线图。 有没有一种简单的方法R中做到这一点? 我想如果可能的话在活动确定12和24小时的峰值。
Answer 1:
您可以考虑以下功能。
-
periodogram
从TSA
包立即绘制周期图。 -
periodogram
从GeneCycle
返回频率和估计的功率谱密度的列表。 这是一个包装函数stats::spectrum
与设置一些特殊的选项。 -
spectrum
从stats
允许选择用于估计频谱密度的方法:要么周期图或使用自回归过程。 -
cpgram
从stats
绘制的累积周期图与置信区间一起。
见,例如, ?cpgram
或?spectrum
的所有细节,并记住它,例如, TSA::periodogram
和GeneCycle::periodogram
时的函数的名称一致。
也有大量的实例和在线教程关于如何使用这些功能。 见这里为使用fft
和这里的一个更广泛的教程。
而且,正如你可能已经知道,在给定的时间序列必须去趋势。 因此,使用,例如, diff(x)
而不是x
。 最后,时间序列的长度必须被12整除,以能够识别12小时和24小时的频率,它可以通过,例如,可以实现x[-(1:(length(x) %% 12))]
,其中x
是一个非趋势的时间序列。
Answer 2:
使用spectrum
做一个谱密度分析; 也fft
为基础快速傅立叶变换。
文章来源: Fast Fourier Transform in R