Сглаживание
предполагает использование набора значений y
(и возможно x) и возвращение нового набора
значений y, который является более гладким,
чем исходный набор. В отличие от регрессии и
интерполяции, обсужденных ранее, сглаживание
приводит к новому набору значений y, а не к
функции, которая может оценивать значения между
заданными точками данных. Таким образом, если Вас
интересуют значения y между заданными
значениями y, необходимо использовать
интерполяцию или регрессию.
Всякий раз, когда в любой из функций, описанных
в этом разделе, используются векторы, убедитесь,
что каждый элемент в векторе определён. Так как
каждый элемент в векторе должен иметь значение,
Mathcad присваивает значение 0 любым элементам,
которые явно не определены.
Функция medsmooth — наиболее устойчивая из
трех, так как в меньшей степени подвержена
влиянию зашумленных данных. Эта функция
использует сглаживание с помощью скользящей
медианы, вычисляет остатки, сглаживает остатки
тем же самым образом и суммирует эти два
сглаженных вектора вместе. Более подробно:
- Вычисление medsmooth (vy, n) начинается со
сглаживания скользящей медианой исходного
вектора vy. Сглаженный вектор мы будем
называть . Его i-ый элемент дается выражением: vy'i
= median(vyi-(n-1)/2,...vyi,...vyi+(n-1)/2).
- Затем вычисляются остатки: vr = vy - vy'.
- Вектор остатков, vr, сглаживается с
использованием процедуры, описанной на шаге 1.
Это дает сглаженный вектор остатков vr'.
- Функция medsmooth возвращает сумму из
этих двух сглаженных векторов: medsmooth(vy, n)
= vy' + vr'.
Обратите внимание, что medsmooth будет
оставлять первые и последние (n-1)/2 точки
неизменяемыми. На практике длина окна
сглаживания n должна быть мала по сравнению с
длиной набора данных.
Функция ksmooth использует гауссово ядро,
чтобы вычислить локально взвешенные средние
значения исходного вектора vy. Это
сглаживание наиболее полезно, когда данные взяты
в точках, отделяемых друг от друга интервалами
приблизительно равной ширины. Если длина
интервалов существенно изменяется, следует
использовать адаптивное сглаживание подобное supsmooth.
Для каждого vyi в n-мерном векторе vy
функция ksmooth возвращает новый vy'i,
даваемый формулой
где
и b — параметр сглаживания. Его величина
обычно устанавливается в несколько раз больше
величины интервала между точками данных на оси x
и определяется тем, насколько большое окно
желательно использовать при сглаживании.
Функция supsmooth использует симметричную
линейную процедуру сглаживания методом
наименьших квадратов по правилу k-ближайших
соседей, чтобы выполнить локальную линейную
аппроксимацию исходных данных. В отличие от ksmooth,
который использует фиксированную ширину полосы
сглаживания для всех исходных данных, supsmooth
адаптивно выбирает различную ширину полосы
сглаживания для различных частей данных.
medsmooth (vy,
n) |
Возвращает m-мерный вектор,
созданный сглаживанием vy с помощью
скользящей медианы. vy есть m-мерный вектор
вещественных чисел. n — ширина окна, по
которому происходит сглаживание. n должно
быть нечетным числом, меньшим, чем число
элементов в vy. |
Е ksmooth (vx, vy, b) |
Возвращает n-мерный вектор,
созданный сглаживанием при помощи гауссова ядра
данных из vy. vy и vx — n-мерные
векторы вещественных чисел. Параметр b управляет
окном сглаживания и должен быть установлен в
несколько раз больше величины интервала между
точками x. |
Е supsmooth (vx, vy) |
Возвращает n-мерный вектор,
созданный локальным использованием
симметричной линейной процедуры сглаживания
методом наименьших квадратов по правилу k-ближайших
соседей, в которой k выбирается адаптивно. vy
и vx — n-мерные векторы вещественных чисел.
Элементы vx должны быть расположены в порядке
возрастания. |
Рисунок 13: Сглаживание зашумленных данных с
помощью supsmooth.
|