Как агрессивно сгладить эти кривые и сохранить их фундаментальную тенденцию?

Вопрос или проблема

У меня есть набор из 10 сигналов, выглядящих следующим образом:
введите описание изображения здесь

Они очень шумные, при этом большинство шумов – это выбросы. Мне нужно сгладить их так, чтобы сохранить количество точек в каждом сигнале.

На данный момент я попробовал двойной медианный фильтр, и я получил что-то близкое к тому, что хочу, но, к сожалению, это не работает хорошо для всех сигналов и не выглядит надежно в начале сигналов:
введите описание изображения здесь

Существует ли какой-либо полезный метод для этого случая? Мои знания в этой области очень ограничены, по сути, только медианная фильтрация и Savitzky-Golay, которые, похоже, не дают значительных результатов.

Мне нужны очень гладкие линии, сохраняющие основных тренд (не суперточно) и без выбросов / колебаний, так как я намерен сравнить их друг с другом на основе сходства трендов.


Данные (Список из 10 списков)

Ссылка: https://jpst.it/3VUqP

Ответ или решение

Для агрессивного сглаживания кривых и сохранения их фундаментальной тенденции, вы можете использовать несколько методов, каждый из которых имеет свои преимущества в зависимости от типа данных и уровня шума. Вот несколько рекомендаций:

1. Использование медианного фильтра

Вы уже упомянули медианный фильтр, который хорошо справляется с удалением выбросов. Попробуйте оптимизировать параметры медианного фильтра, например, увеличив размер окна. Также вы можете использовать двойное применение медианного фильтра, но с осторожностью, чтобы не сгладить важные детали сигнала.

2. Сглаживание с помощью фильтра Савицкого-Голая

Вы можете поэкспериментировать с порядком полинома и размером окна для фильтра Савицкого-Голая. Увеличение размера окна может помочь устранить небольшие колебания, сохраняя при этом общую форму и тренд сигнала. Фильтр первого порядка или второго порядка будет, вероятно, наиболее подходящим для ваших данных.

3. Полифункциональное сглаживание

Можно использовать методы полиномиального сглаживания, такие как LOESS (Locally Estimated Scatterplot Smoothing). Этот метод подходит для сложных кривых и может адаптироваться к локальным изменениям в данных, что делает его подходящим для обработки шума и выбросов.

4. Методы фильтрации на основе вейвлетов

Вейвлет-преобразование позволяет выделить сигнальную часть данных от шума. Вы может использовать дискретное вейвлет-преобразование и восстановление, чтобы отделить полезный сигнал от шума. Убедитесь, что вы выбираете соответствующий функционал для вейвлетов (например, вейвлет Хаара или Симплет), чтобы адаптироваться к вашим данным.

5. Сглаживание с помощью скользящего среднего

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

6. Регрессионные методы

Используйте модели регрессии, такие как регрессия с регуляризацией (например, LASSO или Ridge), чтобы получить гладкие кривые. Это может помочь улучшить качество сглаживания, так как позволит вам контролировать сложность модели и избежать переобучения.

7. Оптимизация и тестирование

Каждый из предложенных методов может потребовать настройки параметров и тестирования на ваших данных. Используйте кросс-валидацию для оценки производительности различных методов в зависимости от того, насколько хорошо они выполняют вашу основную задачу — сравнение трендов между сигналами.

Заключение

Для достижения наилучших результатов вы можете комбинировать несколько методов. Например, сначала примените медианный фильтр, затем используйте фильтр Савицкого-Голая для дальнейшего сглаживания. Не забывайте визуализировать результаты после каждого шага, чтобы убедиться, что тренды сохраняются и выбросы устранены. Удачи в вашей работе!

Оцените материал
Добавить комментарий

Капча загружается...