Подтвердить что ты не робот

Как найти периодичность в данных?

У меня есть набор данных (массив), и мне нужно найти периодичность в нем. Как мне поступить? Кто-то сказал, что я могу использовать БПФ, но я не уверен, как это даст мне периодичность. Ваша помощь ценится!

4b9b3361

Ответ 1

Для этой задачи лучше всего использовать автокорреляцию.

БПФ - это инструмент неправильный, который можно использовать для поиска периодичности.

Рассмотрим, например, случай, когда ваша волна формируется путем объединения двух простых синусоидальных волн, один с периодом в 2 секунды (0,5 Гц), а другой с 3 секундами (0,333 Гц). Этот сигнал будет иметь периодичность 6 секунд (т.е. 2 ​​* 3), но спектр Фурье будет показывать только два пика при 5 Гц и 0,333 Гц.

Ответ 2

Периодичность не определена. Например, такие данные:

1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11

вы можете рассматривать как одно с неточной, но сильной периодичностью 2 и как точную периодичность 6.

Для точной периодичности вы можете просто попытаться найти данные в виде подстроки данных, повторяющихся дважды.

Для точной периодичности реальных, шумных сигналов во временной области и частотной области методы могут быть использованы.

Один временной интервал является самокорреляцией. Это похоже на поиск подстроки выше: поиск значения сдвига, на котором данные имеют максимальную самоочевидность.

Для простых сигналов подсчет пороговых переходов может быть достаточным.

Часто используемые методы домена включают в себя один с использованием FFT/FHT: поиск максимума в спектре fequency, который дает 1/T периодичности.

Другой метод использует Cepstrum.

Ответ 3

Я нашел документ, который объединяет периодограмму на основе БПФ с автокорреляцией, чтобы обеспечить более точную информацию о периодичности сигнала. Я думаю, что этот метод можно было бы рассмотреть:

Об обнаружении периодичности и структурном периодическом сходстве

Ответ 4

В этой новой статье не было большого внимания, спектральная кластеризация

Amariei, C., Tomita, M., and Murray, D. B. (2014). Количественная периодичность в данных omics. Границы в клеточной и биологии развития.

Реализовано в пакете R, доступном по адресу oscillat.iab.keio.ac.jp. Я не связан с авторами, но поставил код в GitHub здесь для облегчения доступа (main script здесь).

Использует DFT и группирует строки в основные спектральные мощности, которые приятно использовать в моем опыте. Очевидно, что для геномики он разработан как надежный (отмечено в коде вычислительно тяжелый), поэтому может зависеть от приложения.

Ответ 5

Вы можете использовать FFT, потому что он преобразует ваш набор данных из пространства значений в частотное пространство.

Это означает, что в итоге вы получите набор частот, которые будут составлять начальный вход, который вы хотите проанализировать. Затем вы можете легко узнать, какие основные факторы, которые генерируются конкретными частотами, и поэтому вы поймете, сколько периодичности существует и которые являются наиболее влиятельными.

смотрите здесь: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/