15.2.2. Полиномиальная регрессия

В Mathcad реализована регрессия одним полиномом, отрезками нескольких полиномов, а также двумерная регрессия массива данных.

Полиномиальная регрессия

Полиномиальная регрессия означает приближение данных (xi, yi) полиномом k-й степени А(х)=а+bх+сх2+dх3+.. .+hxk (рис. 15.14). При k=1 полином является прямой линией, при k=2 — параболой, при k=3 — кубической параболой и т. д. Как правило, на практике применяются k<5.

Для построения регрессии полиномом k-й степени необходимо наличие по крайней мере (k+1) точек данных.

В Mathcad полиномиальная регрессия осуществляется комбинацией встроенной функции regress и полиномиальной интерполяции (см. разд. 15.1.2).

  • regress(x,y,k) — вектор коэффициентов для построения полиномиальной регрессии данных;
  • interp(s,x,y, t) — результат полиномиальной регрессии;
    • s=regress(x,y,k);
    • х — вектор действительных данных аргумента, элементы которого расположены в порядке возрастания;
    • у — вектор действительных данных значений того же размера;
    • k — степень полинома регрессии (целое положительное число);
    • t — значение аргумента полинома регрессии.

Для построения полиномиальной регрессии после функции regress Вы обязаны использовать функцию interp.

Рис. 15.14. Регрессия полиномами разной степени (коллаж результатов листинга 15.10 для разных k)

Пример полиномиальной регрессии квадратичной параболой приведен в листинге 15.10.

Листинг 15.10. Полиноминальная регрессия

Регрессия отрезками полиномов

Помимо приближения массива данных одним полиномом имеется возможность осуществить регрессию сшивкой отрезков (точнее говоря, участков, т. к. они имеют криволинейную форму) нескольких полиномов. Для этого имеется встроенная функция loess, применение которой аналогично функции regress (листинг 15.11 и рис. 15.15).

  • loess (x,у, span) — вектор коэффициентов для построения регрессии данных отрезками полиномов;
  • interp(s,x,y,t) — результат полиномиальной регрессии;
    • s=loess(x,y,span);
    • х — вектор действительных данных аргумента, элементы которого расположены в порядке возрастания;
    • у — вектор действительных данных значений того же размера;
    • span — параметр, определяющий размер отрезков полиномов (положительное число, хорошие результаты дает значение порядка span=0 .75).

Параметр span задает степень сглаженности данных. При больших значениях span регрессия практически не отличается от регрессии одним полиномом (например, span=2 дает почти тот же результат, что и приближение точек параболой).

Листинг 15.11. Регрессия отрезками полиномов

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

Рис. 15.15. Регрессия отрезками полиномов (листинг 15.11)

Двумерная полиномиальная регрессия

По аналогии с одномерной полиномиальной регрессией и двумерной интерполяцией (см. разд. 15.1.5) Mathcad позволяет приблизить множество точек zi,j(хi, уi) поверхностью, которая определяется многомерной полиномиальной зависимостью. В качестве аргументов встроенных функций для построения полиномиальной регрессии должны стоять в этом случае не векторы, а соответствующие матрицы.

  • regress(x,z,k) — вектор коэффициентов для построения полиномиальной регрессии данных;
  • loess (x,z, span) — вектор коэффициентов для построения регрессии данных отрезками полиномов;
  • interp(s,x,z,v) — скалярная функция, аппроксимирующая данные выборки двумерного поля по координатам х и у кубическими сплайнами;
    • s — вектор вторых производных, созданный одной из сопутствующих функций loess или regress;
    • х — матрица размерности NX2, определяющая пары значений аргумента (столбцы соответствуют меткам х и у);
    • z — вектор действительных данных размерности N;
    • span — параметр, определяющий размер отрезков полиномов;
    • k — степень полинома регрессии (целое положительное число);
    • v — вектор из двух элементов, содержащий значения аргументов х и у, для которых вычисляется интерполяция.

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

Двумерная полиномиальная регрессия иллюстрируется листингом 15.12 и рис. 15.16. Сравните стиль представления данных для двумерной регрессии с представлением тех же данных для двумерной сплайн-интерполяции (см. листинг 15.6) и ее результаты с исходными данными (см. рис. 15.10) и их сплайн-интерполяцией (см. рис. 15.11).

Листинг 15.12. Двумерная полиномиальная регрессия

Обратите внимание на знаки транспонирования в листинге. Они применены для корректного представления аргументов (например z в качестве вектора, а не строки).

Рис. 15.16. Двумерная полиномиальная регрессия (листинг 15.12)