exponenta event banner

Фильтрация и сглаживание данных

Сведения о сглаживании и фильтрации данных

Вы можете использовать smooth функция сглаживания данных ответа. Можно использовать дополнительные методы для скользящего среднего, фильтров Савицки-Голая и локальной регрессии с весами и без них (lowess, loess, rlowess и rloess).

Фильтрация скользящего среднего

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

ys (i) = 12N + 1 (y (i + N) + y (i + N − 1) +... + y (i − N))

где ys (i) - сглаженное значение для ith точка данных, N - число соседних точек данных на каждой стороне ys (i), а 2N + 1 - диапазон.

Метод сглаживания скользящего среднего, используемый в Toolbox™ Фитинг кривой (Curve Fitting), соответствует следующим правилам.

  • Диапазон должен быть нечетным.

  • Сглаживаемая точка данных должна находиться в центре пролета.

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

  • Конечные точки не сглаживаются, поскольку не может быть определен диапазон.

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

Например, предположим, что данные сглаживаются с помощью фильтра скользящего среднего с интервалом 5. Используя описанные выше правила, первые четыре элемента ys даны

ys(1) = y(1)
ys(2) = (y(1)+y(2)+y(3))/3
ys(3) = (y(1)+y(2)+y(3)+y(4)+y(5))/5
ys(4) = (y(2)+y(3)+y(4)+y(5)+y(6))/5

Обратите внимание, что ys(1), ys(2), ... ,ys(end) см. порядок данных после сортировки, а не обязательно исходный порядок.

Сглаженные значения и интервалы для первых четырех точек данных генерируемого набора данных показаны ниже.

График (a) указывает, что первая точка данных не сглажена из-за невозможности построения диапазона. График (b) указывает, что вторая точка данных сглаживается с использованием диапазона из трех. Сюжеты (c) и (d) укажите, что для вычисления сглаженного значения используется диапазон из пяти.

Фильтрация Савицкого-Голая

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

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

Метод сглаживания Savitzky-Golay, используемый программой Curve Fitting Toolbox, соответствует следующим правилам:

  • Диапазон должен быть нечетным.

  • Степень полинома должна быть меньше диапазона.

  • Точки данных не обязательно должны иметь одинаковый интервал.

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

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

График (a) показывает шумные данные. Для более простого сравнения сглаженных результатов, графики (b) и (c) показать данные без добавленного шума.

График (b) показывает результат сглаживания квадратичным полиномом. Обратите внимание, что метод работает плохо для узких пиков. График (c) показывает результат сглаживания с помощью квартирного полинома. В общем, многочлены более высокой степени могут более точно фиксировать высоты и ширины узких пиков, но могут плохо работать при сглаживании более широких пиков.

Сглаживание локальной регрессии

Лоусс и Лёсс

Названия «lowess» и «less» получены из термина «локально взвешенный график рассеяния», поскольку оба метода используют локально взвешенную линейную регрессию для сглаживания данных.

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

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

  • Диапазон может быть четным или нечётным.

  • Можно указать диапазон в процентах от общего количества точек данных в наборе данных. Например, интервал 0,1 использует 10% точек данных.

Метод локальной регрессии

Процесс локального сглаживания регрессии для каждой точки данных выполняется следующим образом:

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

    wi = (1 | x xid (x) | 3) 3

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

    • Сглаживаемая точка данных имеет наибольший вес и наибольшее влияние на посадку.

    • Точки данных за пределами диапазона имеют нулевой вес и не влияют на посадку.

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

  3. Сглаженное значение задается взвешенной регрессией при интересующем предикторном значении.

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

Функция веса для конечной точки и для внутренней точки показана ниже для диапазона из 31 точки данных.

При использовании метода «lowess» с интервалом пять сглаженные значения и связанные с ними регрессии для первых четырех точек данных генерируемого набора данных показаны ниже.

Обратите внимание, что диапазон не изменяется по мере перехода от точки данных к точке данных. Однако в зависимости от числа ближайших соседей функция регрессионного веса может быть несимметричной относительно точки данных, подлежащей сглаживанию. В частности, участки (a) и (b) использовать асимметричную весовую функцию, в то время как графики (c) и (d) использовать симметричную весовую функцию.

Для метода less графы выглядят так же, за исключением того, что сглаженное значение генерируется многочленом второй степени.

Надежная локальная регрессия

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

Программное обеспечение панели инструментов «Фитинг кривой» обеспечивает надежную версию как для методов сглаживания с низким, так и для метода сглаживания less. Эти надежные методы включают дополнительный расчет прочных весов, которые устойчивы к отклонениям. Процедура надежного сглаживания выполняется следующим образом:

  1. Вычислите остатки из процедуры сглаживания, описанной в предыдущем разделе.

  2. Вычислите надежные веса для каждой точки данных в диапазоне. Веса задаются функцией bisquare,

    wi = {(1 (ri/6MAD) 2) 2,|ri|<6MAD,0,|ri|≥6MAD,

    где ri - остаток i-ой точки данных, полученный с помощью процедуры регрессионного сглаживания, а MAD - среднее абсолютное отклонение остатков,

    MAD = медиана (| r |).

    Среднее абсолютное отклонение является мерой распределения остатков. Если ri мал по сравнению с 6MAD, то прочный вес близок к 1. Если ri больше 6MAD, надежный вес равен 0, и связанная точка данных исключается из гладкого расчета.

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

  4. Повторите два предыдущих шага для пяти итераций.

Результаты сглаживания процедуры с низким уровнем мощности сравниваются ниже с результатами надежной процедуры с низким уровнем мощности для сгенерированного набора данных, который содержит единственное отклонение. Диапазон для обеих процедур составляет 11 точек данных.

График (a) показывает, что отклонение влияет на сглаженное значение для нескольких ближайших соседей. График (b) предполагает, что остаток отклонения больше шести средних абсолютных отклонений. Следовательно, надежный вес равен нулю для этой точки данных. График (c) показывает, что сглаженные значения, соседние с отклонением, отражают основную часть данных.

Пример: Данные сглаживания

Загрузить данные в count.dat:

load count.dat

Массив 24 на 3 count содержит подсчет трафика на трех перекрестках за каждый час дня.

Сначала используйте фильтр скользящего среднего с 5-часовым интервалом для сглаживания всех данных одновременно (по линейному индексу):

c = smooth(count(:));
C1 = reshape(c,24,3);

Постройте график исходных и сглаженных данных:

subplot(3,1,1)
plot(count,':');
hold on
plot(C1,'-');
title('Smooth C1 (All Data)')

Во-вторых, используйте один и тот же фильтр для сглаживания каждого столбца данных по отдельности:

C2 = zeros(24,3);
for I = 1:3,
    C2(:,I) = smooth(count(:,I));
end

Снова постройте график исходных данных и сглаженных данных:

subplot(3,1,2)
plot(count,':');
hold on
plot(C2,'-');
title('Smooth C2 (Each Column)')

Постройте график разницы между двумя сглаженными наборами данных:

subplot(3,1,3)
plot(C2 - C1,'o-')
title('Difference C2 - C1')

Обратите внимание на дополнительные конечные эффекты от сглаживания 3-х столбцов.

Пример: Сглаживание данных с помощью лесса и надежного лесса

Создание шумных данных с отклонениями:

x = 15*rand(150,1); 
y = sin(x) + 0.5*(rand(size(x))-0.5);
y(ceil(length(x)*rand(2,1))) = 3;

Сглаживание данных с помощью loess и rloess методы с диапазоном 10%:

yy1 = smooth(x,y,0.1,'loess');
yy2 = smooth(x,y,0.1,'rloess');

Постройте график исходных и сглаженных данных.

[xx,ind] = sort(x);
subplot(2,1,1)
plot(xx,y(ind),'b.',xx,yy1(ind),'r-')
set(gca,'YLim',[-1.5 3.5])
legend('Original Data','Smoothed Data Using ''loess''',...
       'Location','NW')
subplot(2,1,2)
plot(xx,y(ind),'b.',xx,yy2(ind),'r-')
set(gca,'YLim',[-1.5 3.5])
legend('Original Data','Smoothed Data Using ''rloess''',...
       'Location','NW')

Обратите внимание, что отклонения оказывают меньшее влияние на надежный метод.

См. также

Связанные темы