Функции Two 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')
Можно попытаться моделировать этот данные с помощью полиномиальной функции второй степени,
Неизвестные коэффициенты, и, вычисляются путем минимизации суммы квадратов отклонений данных от модели (соответствие наименьших квадратов).
Используйте polyfit
, чтобы найти полиномиальные коэффициенты.
p = polyfit(t,y,2)
p = 1×3
-0.2942 1.0231 0.4981
MATLAB вычисляет полиномиальные коэффициенты в убывающих степенях.
Полиномиальная модель второй степени данных дана уравнением
Оцените многочлен в однородно расположенные с интервалами времена, 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
и 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
Поэтому моделью данных дают
Теперь оцените модель в расположенных с равными интервалами точках и постройте график модели с исходными данными.
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]';
Модель этого данные имеет форму
Множественная регрессия решает для неизвестных коэффициентов, и путем минимизации суммы квадратов отклонений данных от модели (соответствие наименьших квадратов).
Создайте и решите набор одновременных уравнений путем формирования матрицы дизайна, X
.
X = [ones(size(x1)) x1 x2];
Решите для параметров при помощи оператора наклонной черты влево.
a = X\y
a = 3×1
0.1018
0.4844
-0.2847
Наименьшие квадраты соответствуют, модель данных
Чтобы подтвердить модель, найдите максимум абсолютного значения отклонения данных от модели.
Y = X*a; MaxErr = max(abs(Y - y))
MaxErr = 0.0038
Это значение намного меньше, чем любое из значений данных, указывая, что эта модель точно следует за данными.
Этот пример показывает, как использовать функции MATLAB для:
Загрузите демонстрационные данные переписи от census.mat
, который содержит данные о населении U.S. с лет 1790 - 1990.
load census
Это добавляет следующие две переменные к MATLAB workspace.
cdate
является вектором - столбцом, содержащим годы 1790 - 1990 в инкрементах 10.
pop
является вектором - столбцом с численностью населения U.S., соответствующей каждый год в 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
и функции MATLAB polyval
, чтобы смоделировать данные.
Вычислите подходящие параметры.
[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
, чтобы произвести границы уверенности для полиномиальной модели второго порядка.
Следующий код использует интервал , который соответствует 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%-й шанс, что новое наблюдение будет находиться в пределах границ.