【发布时间】:2010-11-21 18:39:01
【问题描述】:
我有一个数据集(一个数组),我需要找到其中的周期性。我应该如何进行?有人说我可以使用 FFT,但我不确定它如何给我周期性。感谢您的帮助!
【问题讨论】:
我有一个数据集(一个数组),我需要找到其中的周期性。我应该如何进行?有人说我可以使用 FFT,但我不确定它如何给我周期性。感谢您的帮助!
【问题讨论】:
对于这个任务,最好使用自相关。
FFT 是用于查找周期性的错误工具。
例如,假设您的波形是通过将两个简单的正弦波相加而成的,一个周期为 2 秒 (0.5 Hz),另一个周期为 3 秒 (0.333 Hz)。此波形的周期为 6 秒(即 2*3),但傅立叶频谱仅在 0.5 Hz 和 0.333 Hz 处显示两个峰值。
【讨论】:
周期性不是很好定义的术语。比如这样的数据:
1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11
您可以将其视为具有不精确但强周期为 2 的一个,以及视为具有 6 的精确周期。
对于精确的周期性,您可以简单地尝试将给定的数据作为重复两次的数据子串来查找。
对于真实的、有噪声的信号的非精确周期性,可以使用时域和频域方法。
时域一是自相关。就像上面的子串搜索:搜索数据具有最大自相似度的移位值。
对于简单的信号,计数阈值转换可能就足够了。
频域方法包括一种使用 FFT/FHT 的方法:搜索频率谱中的最大值,给出 1/T 的周期性。
另一种方法是使用Cepstrum。
【讨论】:
这篇新论文并没有引起太多关注,光谱聚类
Amariei, C.、Tomita, M. 和 Murray, D. B. (2014)。 Quantifying periodicity in omics data。 细胞和发育生物学的前沿。
在oscillat.iab.keio.ac.jp 提供的 R 包中实现。我不隶属于作者,但将代码放在 GitHub here 以便于访问(主脚本 here)。
使用 DFT 并将行分组为主要的光谱功率,根据我的经验很好用。显然,对于基因组学,它的设计是稳健的(在代码中注明为computationally heavy),因此可能取决于应用程序。
【讨论】:
您可以使用 FFT,因为它会将您的数据集从值空间转换为频率空间。
这意味着您最终将拥有一组频率,这些频率将产生您想要分析的初始输入。然后你可以很容易地识别出哪些是由特定频率产生的主要贡献,这样你就会了解有多少周期性,哪些是最有影响力的。..
看这里:http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/
【讨论】:
我发现一篇论文将基于 FFT 的周期图与自相关相结合,以提供有关信号周期性的更准确信息。我认为这种方法值得研究:
【讨论】: