Две функции MATLAB ® могут моделировать данные с помощью полинома.
Полиномиальные функции подгонки
Функция | Описание |
|---|---|
| |
|
В этом примере показано, как моделировать данные с помощью полинома.
Измерение количества y при нескольких значениях времени t.
t = [0 0.3 0.8 1.1 1.6 2.3]; y = [0.6 0.67 1.01 1.35 1.47 1.25]; plot(t,y,'o') title('Plot of y Versus t')

Вы можете попробовать смоделировать эти данные с помощью полиномиальной функции второй степени,
+ a0.
Неизвестные коэффициенты, , и , вычисляются путем минимизации суммы квадратов отклонений данных от модели (подгонка методом наименьших квадратов).
Использовать polyfit для поиска полиномиальных коэффициентов.
p = polyfit(t,y,2)
p = 1×3
-0.2942 1.0231 0.4981
MATLAB вычисляет полиномиальные коэффициенты по убыванию.
Полиномиальная модель данных второй степени задается уравнением
0,4981.
Вычислите полином в равномерно разнесенные моменты времени, t2. Затем постройте график исходных данных и модели на одном графике.
t2 = 0:0.1:2.8; y2 = polyval(p,t2); figure plot(t,y,'o',t2,y2) title('Plot of Data (Points) and Model (Line)')

Оценка модели в векторе времени данных
y2 = polyval(p,t);
Вычислите остатки.
res = y - y2;
Постройте график остатков.
figure, plot(t,res,'+') title('Plot of the Residuals')

Обратите внимание, что подгонка второй степени примерно соответствует основной форме данных, но не фиксирует гладкую кривую, на которой данные, по-видимому, лежат. Похоже, в остатках имеется шаблон, который указывает на то, что может потребоваться другая модель. Многочлен пятой степени (показанный далее) лучше отслеживает колебания данных.
Повторите упражнение, на этот раз используя многочлен пятой степени из polyfit.
p5 = polyfit(t,y,5)
p5 = 1×6
0.7303 -3.5892 5.4281 -2.5175 0.5910 0.6000
Вычислить полином в t2 и постройте график посадки поверх данных в новом окне рисунка.
y3 = polyval(p5,t2); figure plot(t,y,'o',t2,y3) title('Fifth-Degree Polynomial Fit')

Примечание
Если вы пытаетесь смоделировать физическую ситуацию, всегда важно учитывать, является ли модель определенного порядка значимой в вашей ситуации.
В этом примере показано, как вписать данные в линейную модель, содержащую неполиномиальные члены.
Если полиномиальная функция не создает удовлетворительную модель данных, можно попробовать использовать линейную модель с неполиномиальными членами. Например, рассмотрим следующую функцию, которая является линейной в параметрах , и , но нелинейной в данных t:
a2te-t.
Можно вычислить неизвестные коэффициенты , и , построив и решив набор одновременных уравнений и решив параметры. Следующий синтаксис обеспечивает это путем формирования матрицы дизайна, где каждый столбец представляет переменную, используемую для прогнозирования ответа (термин в модели), и каждая строка соответствует одному наблюдению этих переменных.
Войти t и y в виде векторов столбцов.
t = [0 0.3 0.8 1.1 1.6 2.3]'; y = [0.6 0.67 1.01 1.35 1.47 1.25]';
Сформируйте матрицу проектирования.
X = [ones(size(t)) exp(-t) t.*exp(-t)];
Расчет коэффициентов модели.
a = X\y
a = 3×1
1.3983
-0.8860
0.3085
Поэтому модель данных задается
3085te-t.
Теперь оцените модель в регулярно расположенных точках и постройте график модели с исходными данными.
T = (0:0.1:2.5)'; Y = [ones(size(T)) exp(-T) T.*exp(-T)]*a; plot(T,Y,'-',t,y,'o'), grid on title('Plot of Model and Original Data')

В этом примере показано, как использовать множественную регрессию для моделирования данных, которые являются функцией нескольких переменных предиктора.
Когда y является функцией более чем одной прогнозирующей переменной, матричные уравнения, которые выражают отношения между переменными, должны быть расширены, чтобы учесть дополнительные данные. Это называется множественной регрессией.
Измерьте величину для нескольких значений и . Сохранять эти значения в векторах x1, x2, и yсоответственно.
x1 = [.2 .5 .6 .8 1.0 1.1]'; x2 = [.1 .3 .4 .9 1.1 1.4]'; y = [.17 .26 .28 .23 .27 .24]';
Модель этих данных имеет вид
a2x2.
Множественная регрессия решает неизвестные коэффициенты , и , минимизируя сумму квадратов отклонений данных от модели (аппроксимация наименьших квадратов).
Построение и решение набора одновременных уравнений путем формирования матрицы проектирования, X.
X = [ones(size(x1)) x1 x2];
Решите параметры с помощью оператора обратной косой черты.
a = X\y
a = 3×1
0.1018
0.4844
-0.2847
Модель подгонки наименьших квадратов данных
4844x1-0,2847x2.
Чтобы проверить модель, найдите максимум абсолютного значения отклонения данных от модели.
Y = X*a; MaxErr = max(abs(Y - y))
MaxErr = 0.0038
Это значение намного меньше любого из значений данных, что указывает на то, что эта модель точно следует данным.
В этом примере показано, как использовать функции MATLAB для:
Загрузка выборочных данных переписи из census.mat, который содержит данные о населении США с 1790 по 1990 годы.
load censusВ рабочую область MATLAB добавляются следующие две переменные.
cdate - вектор столбца, содержащий годы с 1790 по 1990 с приращениями 10.
pop является вектором столбца с номерами населения США, соответствующими каждому году в cdate.
Постройте график данных.
plot(cdate,pop,'ro') title('U.S. Population from 1790 to 1990')

График показывает сильную закономерность, что указывает на высокую корреляцию между переменными.
В этой части примера определяется статистическая корреляция между переменными. cdate и pop для обоснования моделирования данных. Дополнительные сведения о коэффициентах корреляции см. в разделе Линейная корреляция.
Вычислите матрицу коэффициента корреляции.
corrcoef(cdate,pop)
ans = 2×2
1.0000 0.9597
0.9597 1.0000
Диагональные матричные элементы представляют совершенную корреляцию каждой переменной с собой и равны 1. Внедиагональные элементы очень близки к 1, что указывает на сильную статистическую корреляцию между переменными. cdate и pop.
В этой части примера применяется polyfit и polyval Для моделирования данных используются функции MATLAB.
Рассчитайте параметры подгонки.
[p,ErrorEst] = polyfit(cdate,pop,2);
Оцените посадку.
pop_fit = polyval(p,cdate,ErrorEst);
Постройте график данных и посадки.
plot(cdate,pop_fit,'-',cdate,pop,'+'); title('U.S. Population from 1790 to 1990') legend('Polynomial Model','Data','Location','NorthWest'); xlabel('Census Year'); ylabel('Population (millions)');

График показывает, что квадратично-полиномиальная посадка обеспечивает хорошую аппроксимацию к данным.
Рассчитайте остатки для этой посадки.
res = pop - pop_fit; figure, plot(cdate,res,'+') title('Residuals for the Quadratic Polynomial Model')

Обратите внимание, что график остатков показывает массив, который указывает, что многочлен второй степени может не подходить для моделирования этих данных.
Доверительные границы - это доверительные интервалы для прогнозируемого ответа. Ширина интервала указывает на степень достоверности посадки.
Эта часть примера применима polyfit и polyval в census выборка данных для создания доверительных границ для модели полинома второго порядка.
Следующий код использует интервал 2Δ, что соответствует 95% доверительному интервалу для больших выборок.
Оцените аппроксимацию и оценку ошибки прогнозирования (дельта).
[pop_fit,delta] = polyval(p,cdate,ErrorEst);
Постройте график данных, посадки и доверительных границ.
plot(cdate,pop,'+',... cdate,pop_fit,'g-',... cdate,pop_fit+2*delta,'r:',... cdate,pop_fit-2*delta,'r:'); xlabel('Census Year'); ylabel('Population (millions)'); title('Quadratic Polynomial Fit with Confidence Bounds') grid on

Интервал 95% указывает на то, что вероятность того, что новое наблюдение попадет в границы, составляет 95%.