Глава 10. Интерполяция и регрессия
Вспомогательные функции построения вторых производных имеют те же матричные аргументы: lspline(x, y), pspline(x, y), cspline(x, y).
Листинг 63. Формирование матриц многомерной интерполяции
Рис. 40 – Результат двумерной интерполяции
10.2.Регрессия
Задачи математической регрессии сводятся к приближению выборки данных
x i , yi , i 1..n . некоторой функцией |
f (x) , определенным образом минимизирующей |
||||
совокупность ошибок i |
|
f (xi ) yi |
|
. |
Регрессия сводится к подбору типа функции |
|
|
||||
f (x) и неизвестных коэффициентов, определяющих аналитическую зависимость f (x) .
В силу производимого действия большинство задач регрессии являются частным случаем более общей проблемы сглаживания данных.
Как правило, регрессия очень эффективна, когда заранее известен (или, по
крайней |
мере, хорошо угадывается) |
закон распределения данных x i , yi – тип |
функции |
f (x) . MathCAD позволяет |
реализовать практически любой алгоритм |
регрессии, кроме того здесь имеются встроенные функции реализующие регрессию одним полиномом, отрезками нескольких полиномов, а также двумерная регрессия
массива данных.
Регрессия одним полиномом |
|
|
x i , yi |
|
||
Полиномиальная регрессия означает приближение данных |
полиномом |
|||||
k-й степени |
f (x) a |
a x a x2 ... a xk , для построения |
такого |
полинома |
||
|
0 |
1 |
2 |
k |
|
|
коэффициенты |
a0 , a1, a2 , ..., a k |
требуется рассчитать. Для построения |
регрессии |
|||
полиномом k-й степени необходимо наличие, по крайней мере, k+1 точек данных. При k = 1 полином является прямой линией, при k = 2 – параболой, и т.д.
86
Профессиональные математические пакеты
В MathCAD полиномиальная регрессия осуществляется комбинацией встроенной функции regress и полиномиальной интерполяции:
s=regress(х, у, k) – расчет вектора коэффициентов для построения полиномиальной регрессии данных;
interp(s, x, y, t) – результат полиномиальной регрессии.
Здесь x, y – вектор экспериментальных данных аргумента в порядке возрастания и вектор значений того же размера; k – степень полинома регрессии (целое положительное число); t – значение аргумента полинома регрессии.
Листинг 64. Регрессия полиномом
Точность регрессии
Качество регрессии можно оценить величиной среднеквадратической ошибки аппроксимации в выборочных точках x i , yi . Рассмотрим такую оценку на примере полиномиальной регрессии с полиномами различной степени (Листинг 64).
Листинг 65. Среднеквадратичная ошибка регрессии
Полином 1-го порядка g1(z) – прямая линия, его график проходит с минимальным среднеквадратическим удалением от выборочных точек. Полином 6-го прядка g6(z) имеет 7 параметров – коэффициентов, поэтому его график точно прошел через все выборочные точки, регрессия превратилась в интерполяцию. Для каждого из полиномов во всех узловых точках x i , yi построены величины среднеквадратической
ошибки аппроксимации.
Здесь функция rows используется для определения размерности массива x.
87
Глава 10. Интерполяция и регрессия
Как следует из приведенных выше результатов, «точность» регрессии растет с увеличением порядка аппроксимирующего полинома. В том случае, когда число коэффициентов полинома (оно на единицу больше его степени) сравняется с размером выборки график полинома начинает проходить через все выборочные точки, ошибка становиться нулевой (с точностью до округления). Полином регрессии превращается в интерполяционный полином, дальнейшее наращивание степени бесполезно.
С повышением порядка полинома регрессии ухудшаются «сглаживающие» свойства аппроксимации, кривая графика начинает осциллировать, стремясь «достать» каждую выборочную точку. Это обстоятельство негативно сказывается на результате, если в выборке имеется шумовая компонента.
Регрессия отрезками полиномов
Помимо приближения массива данных одним полиномом имеется возможность осуществить регрессию сшивкой отрезков (точнее говоря, участков, т.к. они имеют криволинейную форму) нескольких полиномов. Для этого имеется встроенная функция loess, применение которой аналогично функции regress:
s=loess(х, у, span) – вектор коэффициентов для построения регрессии данных отрезками полиномов; interp(s, x, y, t) – результат полиномиальной регрессии. Здесь span – параметр, определяющий размер отрезков полиномов (положительное число, хорошие результаты дает значение порядка span=0.75). Параметр span задает степень сглаженности данных, при больших значениях span регрессия практически не отличается от регрессии одним полиномом.
Листинг 66. Регрессия отрезками полиномов
Двумерная полиномиальная регрессия
По аналогии с одномерной полиномиальной регрессией и двумерной интерполяцией, MathCAD позволяет приблизить множество точек zi, j Z(xi , y j )
поверхностью, которая определяется многомерной полиномиальной зависимостью. В качестве аргументов встроенных функций для построения полиномиальной регрессии должны стоять в этом случае не векторы, а соответствующие матрицы.
s=regress(x, z, k) – вектор коэффициентов для построения полиномиальной регрессии данных (одним полиномом).
s=loess(x, z, span) — вектор коэффициентов для построения регрессии данных отрезками полиномов.
interp(s, x, z, v) – скалярная функция, аппроксимирующая данные выборки двумерного поля по координатам х и z кубическими сплайнами.
Здесь s – вектор вторых производных, созданный одной из сопутствующих функций loess или regress; х – матрица размерности n 2 , определяющая пары значений
88
Профессиональные математические пакеты
аргумента – столбцы соответствуют точкам x i , y j ; z – вектор данных размерности n;
span – параметр, определяющий размер отрезков полиномов; k – степень регрессии полинома (целое положительное число); v - вектор из двух элементов, содержащий
значения аргументов x i , y j , для которых вычисляется интерполяция.
Листинг 67. Двумерная полиномиальная регрессия
Рис. 41 – Двумерная полиномиальная регрессия
Для построения регрессии не предполагается никакого предварительного упорядочивания данных, в связи с этим данные представляются как вектор.
Другие типы регрессии
Кроме рассмотренных, в MathCAD встроено еще несколько видов двумерной регрессии. Их реализация несколько отличается от приведенных выше вариантов регрессии тем, что для них, помимо массива данных, требуется задать некоторые начальные значения коэффициентов а, b, с. Используйте соответствующий вид регрессии, если хорошо представляете себе, какой зависимостью описывается ваш массив данных. Когда тип регрессии плохо отражает последовательность данных, то ее результат часто бывает неудовлетворительным и даже сильно различающимся в зависимости от выбора начальных значений. Каждая из функций выдает вектор уточненных параметров а, b, с.
expfit(х, у, g) |
регрессия экспонентой |
f (x) a ebx c |
|
igsfit(x, y, g) |
регрессия логистической |
f (x) a 1 b e cx |
|
функцией |
|||
|
|
||
sinfit(x, y, g) |
регрессия синусоидой |
f (x) a sin(x b) c |
|
|
|
|
|
pwfit(x, y, g) |
регрессия степенной функцией |
f (x) a xb c |
89
Глава 10. Интерполяция и регрессия
logfit(х, у, g) |
регрессия логарифмической |
f (x) a ln(x b) c |
|
функцией |
|||
|
|
||
lnfit(x, y) |
двухпараметрической |
f (x) a ln(x) b |
|
логарифмической функцией |
|||
|
|
10.3. Практическая работа № 11. Интерполяция и регрессия
Продолжительность – 2 часа.
Цель работы
Приобретение компетенций в части применения средств MathCAD при обработке экспериментальных данных. Получение навыков интерполяции и экстраполяции последовательности значений. Приобретение компетенций в вопросах сглаживания данных и обработки последовательности с помехами.
Задание на практическую работу
1.Проиллюстрировать на примере методы одномерной интерполяции и экстраполяции:
1.1.Сформировать случайный набор «экспериментальных» данных из двух векторов X (абсциссы) и Y (ординаты) по n элементов в каждом. Воспроизвести выборочные точки на графике, используя тип графика points с символом "●".
1.2.Выполнить линейную интерполяцию функцией linterp и воспроизвести интерполирующую кривую на том же графике, что и выборочные точки.
1.3.Выполнить интерполяцию кубическими сплайнами с использованием функциями lspline, pspline и cspline воспроизвести интерполирующие кривые на одном графике. На том же графике отобразить и выборочные точки. Выполнить интерполяцию кубическими В-сплайнами (bspline), подобрав вектор u точек сшивки сплайнов. Отобразить на графике точки сшивки.
1.4.Оценить экстраполирующие свойства аппроксимирующих функций, построенных в п. 1.3, для этого следует продолжить их графики за пределы выборочных данных.
2.Произвести регрессию заданной последовательности данных, для чего:
2.1.Сгладить данные вектора Y регрессионным полиномом степени q, построить сглаживающую кривую на графике и проанализировать величину среднеквадратичной ошибки.
2.2.Произвести регрессию отрезками полиномов и оценить величину среднеквадратичной ошибки для данного вида регрессии.
3.Произвести двумерную интерполяцию заданным в индивидуальном задании способом для двумерного массива Y размерности m×m. Построить интерполирующую поверхность на графике.
4.Произвести двумерную регрессию заданным в индивидуальном задании способом для одномерного массива Y размерности m2. Построить сглаживающую поверхность на графике и проанализировать величину среднеквадратичной ошибки.
5.Составить отчет, в котором отразить листинг программного кода с комментариями и привести графики с результатами работы программы.
Контрольные вопросы:
1.Чем отличаются понятия интерполяция и регрессия?
2.Какими средствами решения задач регрессии обладает MathCAD?
3.Как оценит погрешность интерполяции? Регрессии?
4.В чем идея сплайн-интерполяции?
5.Связана ли интерполяционная точность с количеством точек разбиения? Как?
6.Какими средствами решения задач интерполяции обладает MathCAD?
7.Связана ли интерполяционная точность с величиной шага сетки?
90