Нетрудно заметить, что лишь для полинома третьей степени точки исходных данных точно укладываются на кривую полинома, поскольку в этом случае (4 точки) регрессия превращается в полиномиальную аппроксимацию. В других случаях точного попадания точек на линии регрессии нет, но обеспечивается минимум среднеквадратической погрешности для всех точек — следствие реализации метода наименьших квадратов.

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

5.12.3. Регрессия для функции ряда переменных

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

> f:=fit[leastsquare[[x, у, z],z=a+b*x+c*y,{a,b,c}]]

 ([[1,2,3,5,5], [2,4,6,8,8], [3, 5, 7,10, Weight (15, 2)]]) ;

f := z = 1 + 13/3 x - 7/6 у

> fa:=unapply(rhs(f),x,у);

fa := (x, y) -> 1 + 13/3 x - 7/6 у

> fa(l., 2.) ;

2.999999999

> fa(2,3);

37/6

В данном случае уравнение регрессии задано в виде z = а + bх + су. Обратите внимание на важный момент в конце этого примера — применение полученной функции регрессии для вычислений или построения ее графика. Прямое применение функции f в данном случае невозможно, так как она представлена в невычисляемом формате. Для получения вычисляемого выражения она преобразуется в функцию двух переменных fa(x,y) путем отделения правой части выражения для функции f. После этого возможно вычисление значений функции fa(x,y) для любых заданных значений х и у.

5.12.4. Линейная регрессия общего вида

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

f(x) = af1(x) +bf2(x) +cf3(x) + …

Функция такой регрессии является линейной комбинацией ряда функций f1(х), f2(х), f3(х), причем каждая их них может быть и нелинейной, например экспоненциальной, логарифмической, тригонометрической и т.д. Пример линейной регрессии общего вида представлен на рис. 5.30.

Рис. 5.30. Пример выполнения линейной регрессии общего вида

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

5.12.5. О нелинейной регрессии с помощью функции fit

К сожалению, функция fit неприменима для нелинейной регрессии. При попытке ее проведения возвращается структура процедуры, но не результат регрессии — см. пример ниже:

> fit[leastsquare[[х,у], у=а*2^(х/b),{а,b}]]([[1,2,3,4], [1.1,3.9,9.5,15.25]]);

Однако, большинство нелинейных зависимостей удается свести к линейным с помощью простых линеаризирующих преобразований [1, 2, 4]. На рис. 5.31 показан пример экспоненциальной регрессии f(x)=ае, которая (благодаря логарифмированию точек y) сводится к линейной регрессии. Детали преобразований даны в документе рис. 5.31. Используя другие преобразования этот документ легко приспособить для выполнения других видов нелинейной регрессии, например степенной или логарифмической.

Рис. 5.31. Пример экспоненциальной регрессии

Функция нелинейной регрессии входит в новейший пакет оптимизации Optimization, введенный в Maple 9.5, и описанный в следующей главе. Кроме того, на Интернет-сайте корпорации Waterloo Maple можно найти файлы simplenl.mws и gennlr.mws с процедурами и примерами линейной и нелинейной регрессий общего вида. Интересная реализация нелинейной регрессии для кусочной функции дается в файле nonelinearpiecewise.mws.

5.12.6. Сплайновая регрессия с помощью функции BSplineCurve

Функция BSplineCurve из пакета CurveFitting может использоваться для реализации сплайновой регрессии. Пример этого представлен на рис. 5.32. Опция order задает порядок B- сплайнов, который на 1 меньше заданного целого значения.

Рис. 5.32. Пример выполнения сплайновой регрессии В-сплайнами

Функция BsplineCurve выглядит несколько недоделанной. Так, при order=3 и 4 кривая регрессии не дотягивает до концевых точек, а при установки order=1 все точки соединяются отрезками прямых — в том числе концевые. Так что использовать эту функцию для экстраполяции нельзя.

5.13. Работа с функциями двух переменных

5.13.1. Maplet-инструмент для работы с функциями двух переменных

Для эффектной демонстрации работы с функциями многих переменных в состав пакета Student системы Maple 9.5 введен новый подпакет MultivariateCalculus. Его примеры можно запускать как с командной строки, так и из позиции Tools меню в стандартном варианте интерфейса — Tutors→Calculus→Calculus-Multi-Variables.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату