Полиномиальные модели

О полиномиальных моделях

Полиномиальные модели для кривых заданы

y=i=1n+1pixn+1i

где n + 1 является порядком полинома, n - степень полинома и 1 ≤ <reservedrangesplaceholder0> ≤ 9. Порядок задает количество коэффициентов, которые будут соответствовать, и степень дает самую высокую степень переменной предиктора.

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

γ=p1x3+p2x2+p3x+p4

Полиномы часто используются, когда требуется простая эмпирическая модель. Можно использовать полиномиальную модель для интерполяции или экстраполяции или для характеристики данных с помощью глобальной подгонки. Для примера преобразование температуры в напряжение для термопары типа J в диапазоне от 0 до 760o температурная область значений описана полиномом седьмой степени.

Примечание

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

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

Когда вы подбираетесь с полиномами высокой степени, процедура аппроксимации использует значения предиктора в качестве базиса для матрицы с очень большими значениями, что может привести к проблемам масштабирования. Чтобы справиться с этим, вы должны нормализовать данные, центрируя их в нулевом среднем и масштабируя их до стандартного отклонения модулей измерения. Нормализуйте данные путем установки флажка Центр и шкалу в приложении Аппроксимирование Кривыми.

Построение полиномиальных моделей в интерактивном режиме

  1. Откройте приложение Аппроксимирование Кривыми, введя cftool. Также щелкните Аппроксимированием кривыми на вкладке Приложений.

  2. В приложении Аппроксимирование Кривыми выберите данные кривой или поверхности.

    • Если вы выбираете данные кривой (X data и Y data, или просто Y data с индексом), приложение Аппроксимирование Кривыми создает подгонку кривой по умолчанию, Polynomial.

    • Если вы выбираете данные поверхности (X data, Y data и Z data), приложение Аппроксимирование Кривыми создает поверхностную подгонку по умолчанию Interpolant. Измените тип модели из Interpolant на Polynomial.

Для кривых, Polynomial модель подходит для полинома в x.

Для поверхностей, Polynomial модель подходит для полинома в x и y.

Можно задать следующие опции:

  • Степень для x и y входов:

  • Устойчивый линейный метод аппроксимации методом наименьших квадратов для использования (Off, LAR, или Bisquare). Для получения дополнительной информации смотрите Robust на fitoptions страница с описанием.

  • Установите границы или исключить условия нажав Fit Options. Можно исключить любой термин, установив его границы равными 0.

    Смотрите на панели Results, чтобы увидеть условия модели, значения коэффициентов и статистику качества подгонки.

Совет

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

Для примера сравнения различных аппроксимаций полиномом см. «Сравнение подгонок в приложении Аппроксимирование Кривыми».

Подгонка полиномов с использованием функции подгонки

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

Модель полиномиальной библиотеки является входным параметром к функциям подгонки и fittype. Задайте тип модели poly далее следует степень x (до 9), или x и y (до 5). Для примера задаете квадратичную кривую с 'poly2' , или кубическая поверхность с 'poly33' .

Создайте и постройте квадратичную полиномиальную кривую

Загрузите некоторые данные и подгоните квадратичный полином. Задайте квадратичный, или полином второй степени, с помощью строки 'poly2' .

load census;
fitpoly2=fit(cdate,pop,'poly2')
% Plot the fit with the plot method.
plot(fitpoly2,cdate,pop)
% Move the legend to the top left corner.
legend('Location','NorthWest' );
fitpoly2 = 

     Linear model Poly2:
     fitpoly2(x) = p1*x^2 + p2*x + p3
     Coefficients (with 95% confidence bounds):
       p1 =    0.006541  (0.006124, 0.006958)
       p2 =      -23.51  (-25.09, -21.93)
       p3 =   2.113e+04  (1.964e+04, 2.262e+04)

Создание кубической кривой

Аппроксимация кубического полинома 'poly3'.

fitpoly3=fit(cdate,pop,'poly3')
plot(fitpoly3,cdate,pop)
Warning: Equation is badly conditioned. Remove repeated data points or try
centering and scaling. 

fitpoly3 = 

     Linear model Poly3:
     fitpoly3(x) = p1*x^3 + p2*x^2 + p3*x + p4
     Coefficients (with 95% confidence bounds):
       p1 =   3.855e-06  (-4.078e-06, 1.179e-05)
       p2 =    -0.01532  (-0.06031, 0.02967)
       p3 =       17.78  (-67.2, 102.8)
       p4 =       -4852  (-5.834e+04, 4.863e+04)

Настройка опций подгонки

Кубическое соответствие предупреждает, что уравнение плохо обусловлено, поэтому вы должны попробовать центрирование и масштабирование, задав 'Normalize' опция. Подгонка кубического полинома с помощью опций как центра, так и шкалы и устойчивой подгонки. Устойчивые 'on' - ярлык, эквивалентный 'Bisquare' , метод по умолчанию для устойчивого линейного метода аппроксимации методом наименьших квадратов.

fit3=fit(cdate, pop,'poly3','Normalize','on','Robust','on')
plot(fit3,cdate,pop)
fit3 = 

     Linear model Poly3:
     fit3(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =     -0.4619  (-1.895, 0.9707)
       p2 =       25.01  (23.79, 26.22)
       p3 =       77.03  (74.37, 79.7)
       p4 =       62.81  (61.26, 64.37)

Чтобы узнать, какие параметры можно задать для модели библиотеки 'poly3' , используйте функцию fitoptions.

fitoptions poly3
ans =

    Normalize: 'off'
      Exclude: []
      Weights: []
       Method: 'LinearLeastSquares'
       Robust: 'Off'
        Lower: [1x0 double]
        Upper: [1x0 double]

Получите качество подгонки статистики

Задайте 'gof' выходной аргумент для получения статистики качества подгонки для кубической аппроксимации полиномом.

[fit4, gof]=fit(cdate, pop,'poly3','Normalize','on');
gof
gof = 

  struct with fields:

           sse: 149.7687
       rsquare: 0.9988
           dfe: 17
    adjrsquare: 0.9986
          rmse: 2.9682

Постройте график невязок для оценки подгонки

Чтобы построить графики невязок, задайте 'residuals' как тип графика в методе plot.

plot(fit4,cdate, pop,'residuals');

Исследуйте подгонку за пределы области значений данных

По умолчанию подгонка строится в области значений данных. Чтобы построить график подгонки в другой области значений, установите пределы X осей перед построением графика подгонки. Для примера, чтобы увидеть значения, экстраполированные из подгонки, установите верхний предел X равный 2050.

plot( cdate, pop, 'o' );
xlim( [1900, 2050] );
hold on
plot( fit4 );
hold off

Постройте границы предсказания

Чтобы построить графики границ предсказания, используйте 'predobs' или 'predfun' как тип графика.

plot(fit4,cdate,pop,'predobs')

Постройте графики границ предсказания для кубического полинома до 2050 года.

plot( cdate, pop, 'o' );
xlim( [1900, 2050] )
hold on
plot( fit4, 'predobs' );
hold off

Получите доверительные границы в новых точках запроса

Рассчитать подгонку для некоторых новых точек запроса.

cdateFuture = (2000:10:2020).';
popFuture = fit4( cdateFuture )
popFuture =

  276.9632
  305.4420
  335.5066

Вычислите 95% доверия ограничения на предсказание для населения в будущем, используя метод predint.

ci = predint( fit4, cdateFuture, 0.95, 'observation' )
ci =

  267.8589  286.0674
  294.3070  316.5770
  321.5924  349.4208

Постройте график предсказанного будущего населения с доверительными интервалами относительно подгонки и данных.

plot(cdate, pop, 'o');
xlim([1900, 2040])
hold on
plot(fit4)
h = errorbar(cdateFuture,popFuture,popFuture-ci(:,1),ci(:,2)-popFuture,'.');
hold off
legend('cdate v pop','poly3','prediction','Location','NorthWest')

Построение и построение графика полиномиальной поверхности

Загрузите некоторые данные поверхности и подгоните полином четвертой степени в x и y.

load franke;
fitsurface=fit([x,y],z, 'poly44','Normalize','on')
plot(fitsurface, [x,y],z)
     Linear model Poly44:
     fitsurface(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p30*x^3 
                    + p21*x^2*y + p12*x*y^2 + p03*y^3 + p40*x^4 + p31*x^3*y 
                    + p22*x^2*y^2 + p13*x*y^3 + p04*y^4
       where x is normalized by mean 1982 and std 868.6
       and where y is normalized by mean 0.4972 and std 0.2897
     Coefficients (with 95% confidence bounds):
       p00 =      0.3471  (0.3033, 0.3909)
       p10 =     -0.1502  (-0.1935, -0.107)
       p01 =     -0.4203  (-0.4637, -0.377)
       p20 =      0.2165  (0.1514, 0.2815)
       p11 =      0.1717  (0.1175, 0.2259)
       p02 =     0.03189  (-0.03351, 0.09729)
       p30 =     0.02778  (0.00749, 0.04806)
       p21 =     0.01501  (-0.002807, 0.03283)
       p12 =    -0.03659  (-0.05439, -0.01879)
       p03 =      0.1184  (0.09812, 0.1387)
       p40 =    -0.07661  (-0.09984, -0.05338)
       p31 =    -0.02487  (-0.04512, -0.004624)
       p22 =   0.0007464  (-0.01948, 0.02098)
       p13 =    -0.02962  (-0.04987, -0.009366)
       p04 =    -0.02399  (-0.0474, -0.0005797)

Полином модели модели подгонки

Все методы аппроксимации имеют свойства по умолчанию Normalize, Exclude, Weights, и Method. Для получения примера смотрите Определение Опций подгонки в командной строке.

Полиномиальные модели имеют Method значение свойства LinearLeastSquares, и дополнительные свойства опций подгонки, показанные в следующей таблице. Для получения дополнительной информации обо всех опциях подгонки, смотрите fitoptions страница с описанием.

Свойство

Описание

Robust

Задает устойчивый линейный метод аппроксимации методом наименьших квадратов для использования. Значения 'on', 'off', 'LAR', или 'Bisquare'. Значение по умолчанию является 'off'.
'LAR' задает наименее абсолютный остаточный метод и 'Bisquare' задает метод весов bisquare. 'on' эквивалентно 'Bisquare', метод по умолчанию.

Lower

Вектор с нижними границами коэффициентов, которые будут установлены. Значение по умолчанию является пустым вектором, что указывает на то, что подгонка не ограничена нижними границами. Если ограничения заданы, длина вектора должна равняться количеству коэффициентов. Отдельные без ограничений нижние границы могут быть заданы -Inf.

Upper

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

Определение полиномиальных членов для полиномиальных поверхностных аппроксимаций

Можно управлять терминами для включения в модель полиномиальной поверхности, задавая степени для входов x и y. Если i - степень в x, а j - степень в y, общая степень полинома является максимальной из i и j. Степень x в каждом члене меньше или равна i, и степень y в каждом члене меньше или равна j. Максимум и для i, и для j - пять.

Для примера:

poly21  Z = p00 + p10*x + p01*y + p20*x^2 + p11*x*y
poly13  Z = p00 + p10*x + p01*y + p11*x*y + p02*y^2 
                      + p12*x*y^2 + p03*y^3
poly55  Z = p00 + p10*x + p01*y +...+ p14*x*y^4 
                      + p05*y^5

Для примера, если вы задаете степень x 3 и степень y 2, имя модели poly32. Условия модели следуют форме в этой таблице.

Степень срочности012
01yy2
1xxyxy2
2x2x2yН/Д
3x3Н/ДН/Д

Общая степень полинома не может превышать максимума в i и j. В этом примере такие термины, как x3y и x2y2 исключены, потому что их степени равны более 3. В обоих случаях общая степень 4.

См. также

| | |

Похожие темы