Анализ данных >
Фильтрация >
C
кользящее усреднение
СКОЛЬЗЯЩЕЕ УСРЕДНЕНИЕ
На одном из самых популярных алгоритмов сглаживания хочется остановиться особо. Самый простой и очень эффективный метод - это скользящее усреднение. Его суть состоит в расчете для каждого значения аргумента
x среднего значения по соседним w данным. Число w называют окном скользящего усреднения: чем оно больше, тем больше данных участвуют в расчете среднего, тем более сглаженная кривая получается. На рис.1 показан результат скользящего усреднения одних и тех же данных (кружки) с разным окном w=3 (пунктир), w=5 (штрихованная кривая) и w=15 (сплошная кривая). Видно, что при малых w сглаженные кривые практически повторяют ход изменения данных, а при больших w - отражают лишь закономерность их медленных вариаций.
Расчеты рис.1 проводились по формуле:
которая использует только значения y
i, неявно предполагая, что они соответствуют значениям аргумента
x
i, расположенным через одинаковые промежутки.
Приведенная программная реализация скользящего усреднения самая простая, но не самая лучшая. Возможно, вы обратили внимание, что все кривые скользящего среднего на рис.1 слегка "обгоняют" исходные данные. Почему так происходит, понятно: согласно алгоритму, заложенному в
формулу, скользящее среднее для каждой точки вычисляется путем усреднения значений предыдущих w точек. Чтобы результат скользящего усреднения был более адекватным, лучше применить центрированный алгоритм расчета по w/2 предыдущим и w/2 последующим значениям. Он будет немного сложнее, поскольку придется учитывать недостаток точек не только в начале, но и в конце массива исходных данных.
Рис.1 Скользящее усреднение с разными w=3,5,15 (коллаж трех графиков)