Если у меня есть набор данных, который создает график, подобный следующему, как бы я алгоритмически определил значения x показанных пиков (в данном случае три из них):
data-visualization
mode
nonaxiomatic
источник
источник
Ответы:
Общий подход состоит в том, чтобы сгладить данные и затем найти пики, сравнивая локальный максимальный фильтр с сглаживанием . В
R
:Его возвращаемое значение включает в себя аргументы локальных максимумов (
x
), которые отвечают на вопрос, и индексы в массивы x и y, где встречаются эти локальные максимумы (i
).Есть два параметра, которые нужно настроить в зависимости от обстоятельств:
w
это полуширина окна, используемая для вычисления локального максимума. (Его значение должно быть существенно меньше, чем половина длины массива данных.) Маленькие значения улавливают крошечные локальные выпуклости, тогда как большие значения будут проходить прямо над ними. Другой - не явный в этом коде -span
аргументloess
сглаживателя. (Как правило, он находится между нулем и единицей; он отражает ширину окна как пропорцию диапазона значений x.) Большие значения сгладят данные более агрессивно, в результате чего локальные неровности исчезнут вообще.Чтобы увидеть эту настройку в действии, давайте создадим небольшую тестовую функцию для отображения результатов:
Вот несколько экспериментов, примененных к некоторым синтетическим, слегка зашумленным данным.
Либо широкое окно (средний график), либо более агрессивное сглаживание (нижний график) исключают локальные максимумы, обнаруженные на верхнем графике. Наилучшей комбинацией здесь, вероятно, является широкое окно и только плавное сглаживание, поскольку агрессивное сглаживание, по-видимому, смещает эти пики (см. Среднюю и правую точки на нижнем графике и сравните их расположение с очевидными пиками исходных данных). В этом примере
w=50
иspan=0.05
отлично работает (не показано).Обратите внимание, что локальные максимумы в конечных точках не обнаружены. Они могут быть проверены отдельно. (Для поддержки
argmax
возвращает сглаженные значения y.)Этот подход имеет несколько преимуществ перед более формальным моделированием для работы общего назначения:
Он не принимает какую-либо предвзятую модель данных.
Это может быть адаптировано к характеристикам данных.
Он может быть адаптирован для обнаружения интересующих нас видов пиков.
источник
w
иspan
, а также обнаружить, что более высокие значенияspan
смещают пики. Такое чувство, что даже эти шаги могут быть автоматизированы. Например, для первого выпуска, если бы мы могли оценить качество обнаруженных пиков, мы могли бы работатьoptimize
по параметрам! Для второй проблемы, например, выберите окно по обе стороны от обнаруженного пика и ищите более высокие значения.Как я упоминал в комментарии, если временные ряды кажутся периодическими, модель гармонической регрессии обеспечивает способ сглаживания функции и определения пика путем применения первого и второго производных тестов. Хубер указал на непараметрический критерий, который имеет преимущества, когда имеется множество пиков и функция не обязательно является периодической. Но нет бесплатного обеда. Хотя у его метода есть свои преимущества, о которых он упоминает, могут быть недостатки, если уместна параметрическая модель. Это всегда обратная сторона использования непараметрических методов. Хотя он избегает параметрических предположений, параметрический подход лучше, когда параметрические предположения являются подходящими. Его процедура также не в полной мере использует структуру временных рядов в данных.
Я думаю, что хотя уместно указать на преимущества предлагаемой процедуры, также важно указать на потенциальные недостатки. И мой подход, и Хубер находят вершины эффективным способом. Однако я думаю, что его процедура требует немного больше работы, когда локальный максимум ниже, чем ранее определенный максимальный пик.
источник
Классический подход обнаружения пиков в обработке сигналов заключается в следующем:
Другой подход, который работает, состоит в том, чтобы сравнить резко фильтрованный сигнал верхних частот с сильно сглаженным (низкочастотный или медианный фильтр) и применить шаг 3.
Надеюсь это поможет.
источник