Пользовательский интерфейс Basic Fitting MATLAB® позволяет вам в интерактивном режиме:
Подбор модели по данным с помощью сплайн интерполяции, кубической Эрмитовой интерполяции или многочлена до десятой степени включительно
Построение графика одной или нескольких моделей с данными
Постройте невязки подгонок
Вычисление коэффициентов модели
Вычислите норму невязок (статистическая величина, которую можно использовать, чтобы анализировать, как хорошо модель соответствует данным),
Используйте модель, чтобы интерполировать или экстраполировать за пределами данных
Сохраните коэффициенты и вычисленные значения к рабочему пространству MATLAB для использования за пределами диалогового окна
Сгенерируйте код MATLAB, чтобы повторно вычислить модель и воспроизвести графики с новыми данными
Пользовательский интерфейс Basic Fitting только доступен для 2D графиков. Для более усовершенствованного подбора кривой и регрессионного анализа, см. документацию Curve Fitting Toolbox™ и документацию Statistics and Machine Learning Toolbox™.
Пользовательский интерфейс Basic Fitting сортирует ваши данные в порядке возрастания перед подбором кривой. Если ваш набор данных будет большим, и значения не сортируются в порядке возрастания, у Пользовательского интерфейса Basic Fitting займет больше времени предварительно обработать ваши данные перед подбором кривой.
Можно ускорить Пользовательский интерфейс Basic Fitting первой сортировкой данных. Чтобы создать отсортированные векторы x_sorted
и y_sorted
от векторов данных x
и y
, используйте функцию sort
MATLAB:
[x_sorted, i] = sort(x); y_sorted = y(i);
Чтобы использовать Пользовательский интерфейс Basic Fitting, необходимо сначала отобразить данные на графике в окне рисунка, с помощью любого MATLAB, строящего команду, которая производит (только) данные о X и Y.
Чтобы открыть Пользовательский интерфейс Basic Fitting, выберите Tools > Basic Fitting из меню наверху окна рисунка.
Когда вы полностью расширяете его, дважды кликая по кнопке стрелки в правом нижнем углу, окно отображает три панели. Используйте эти панели для:
Выберите опции графического вывода и модель
Исследуйте и экспортируйте коэффициенты модели и нормы невязок
Исследуйте и экспортируйте интерполированные и экстраполируемые значения.
Чтобы расширить или свернуть панели один за другим, кликните по кнопке стрелки в правом нижнем углу интерфейса.
Этот пример показывает, как использовать Пользовательский интерфейс Basic Fitting, чтобы соответствовать, визуализировать, анализировать, сохранить и сгенерировать код для параболических регрессий.
Файл, census.mat
, содержит американские данные о населении в течение лет 1790 - 1990 в 10-летних интервалах.
Чтобы загрузить и отобразить данные на графике, введите следующие команды в посдказке MATLAB:
load census plot(cdate,pop,'ro')
Команда load
добавляет следующие переменные в рабочее пространство MATLAB:
cdate
— Вектор-столбец, содержащий годы от 1 790 до 1990 с шагом 10. Это - переменная прогноза.
pop
— Вектор-столбец с американской генеральной совокупностью в течение каждого года в cdate
. Это - переменная отклика.
Векторы данных сортируются в порядке возрастания по годам. График показывает генеральную совокупность функцией года.
Теперь вы готовы подогнать под уравнение данные для моделирования роста населения с течением времени.
Откройте диалоговое окно Basic Fitting путем выбора Tools > Basic Fitting в Окне рисунка.
В области Plot fits диалогового окна Basic Fitting установите флажок cubic, чтобы соответствовать кубическому полиному к данным.
MATLAB использует ваш выбор, чтобы соответствовать данным и добавляет кубическую линию регрессии в график можно следующим образом.
При расчете модели MATLAB сталкивается с проблемами и выдает следующее предупреждение:
Polynomial is badly conditioned. Add points with distinct X values, select a polynomial with a lower degree, or select "Center and scale X data."
Это предупреждение указывает, что вычисленные коэффициенты для модели чувствительны к случайным ошибкам в ответе (измеренная генеральная совокупность). Это также предлагает некоторые вещи, которые можно сделать, чтобы получить лучшую подгонку.
Продолжите использовать кубический полином. Поскольку вы не можете добавить новые наблюдения к данным переписи, улучшите подгонку, преобразовав значения, которые у вас есть, в z-оценки перед пересчетом подгонки. Установите флажок Center and scale X data в диалоговом окне, чтобы заставить инструмент Basic Fitting выполнить преобразование.
Чтобы изучить, как центрирование и масштабирование данных работают, смотрите Узнать, как Basic Fitting Tool Computes Fits.
Теперь посмотрим уравнения и покажем остатки. В дополнение к устанавливанию флажков Center and scale X data и cubic выберите следующие опции:
Show equations
Plot residuals
Show norm of residuals
Выбор Plot residuals создает подграфик их как гистограмма. Следующая фигура отображает результаты опций Пользовательского интерфейса Basic Fitting, которые вы выбрали.
Кубическое соответствие является плохим предиктором перед годом 1790, где это указывает на уменьшающуюся генеральную совокупность. Модель, кажется, аппроксимирует данные обоснованно много позже 1790. Однако шаблон в невязках показывает, что модель не соответствует предположению о нормальной ошибке, которая является основанием для подбора кривой наименьших квадратов. Строкой data 1, идентифицированной в легенде, является наблюдаемый x (cdate
) и y (pop
) значения данных. Линия регрессии cubic представляет подгонку после центрирования и масштабирования значений данных. Заметьте, что данные показывают исходные модули данных, даже при том, что инструмент вычисляет подгонку с помощью преобразованных z-очков.
Для сравнения попробуйте подбор другого полиномиального уравнения к данным о переписи путем выбора его в области Plot fits.
В диалоговом окне Basic Fitting кликните по кнопке стрелки, чтобы отобразить предполагаемые коэффициенты и норму невязок в панели Numerical results.
Чтобы просмотреть определенную подгонку, выберите его из списка Fit. Это отображает коэффициенты в диалоговом окне Basic Fitting, но не строит подгонку в окне рисунка.
Если вы также хотите отобразить подгонку на графике, необходимо установить соответствующий флажок Plot fits.
Сохраните данные подгонки в рабочее пространство MATLAB путем нажатия кнопки Save to workspace на Числовой панели результатов. Диалоговое окно Save Fit to Workspace открывается.
Со всеми установленными флажками нажмите OK, чтобы сохранить подходящие параметры как структуру MATLAB:
fit fit = type: 'polynomial degree 3' coeff: [0.9210 25.1834 73.8598 61.7444]
Теперь, можно использовать результаты подгонки в программировании MATLAB, за пределами Пользовательского интерфейса Basic Fitting.
Можно получить индикацию относительно того, как хорошо параболическая регрессия предсказывает наблюдаемые данные путем вычисления coefficient of determination, или R-square (записанный как R2). Статистическая величина R2, которая колеблется от 0 до 1, меры, насколько полезный независимая переменная находится в предсказании значений зависимой переменной:
Значение R2 около 0 указывает, что подгонка не намного лучше, чем модель y = constant
.
Значение R2 около 1 указывает, что независимая переменная объясняет большую часть изменчивости в зависимой переменной.
Чтобы вычислить R2, сначала вычислите подгонку, и затем получите residuals из него. Невязка является различием со знаком между наблюдаемым зависимым значением и значением, которое ваша подгонка предсказывает для него.
невязки = yobserved - yfitted
После того, как у вас есть остаточные значения, можно сохранить их в рабочую область, где можно вычислить R2. Завершите предыдущую часть этого примера, чтобы соответствовать кубическому полиному к данным о переписи, и затем выполнить эти шаги:
Вычислите остаточные данные и R2 для кубического соответствия
Кликните по кнопке стрелки в нижнем правом углу, чтобы открыть вкладку Numerical results, если это не уже видимо.
От Fit выпадающее меню выберите cubic
, если это уже не показывает.
Сохраните подходящие коэффициенты, норму невязок и невязок путем нажатия на Save to Workspace.
Диалоговое окно Save Fit to Workspace открывается тремя флажками и тремя текстовыми полями.
Установите все три флажка, чтобы сохранить подходящие коэффициенты, норму невязок и остаточные значения.
Идентифицируйте сохраненные переменные как принадлежащий кубическому соответствию. Измените имена переменных путем добавления 3
в каждое имя по умолчанию (например, fit3
, normresid3
и resids3
). Диалоговое окно должно выглядеть так фигура.
Нажмите OK. Basic Fitting сохраняет невязки как вектор-столбец чисел, подходящие коэффициенты как struct и норма невязок как скаляр.
Заметьте, что значением, которое Basic Fitting вычисляет для нормы невязок, является 12.2380
. Это число является квадратным корнем из суммы квадратов остатков кубического полинома.
Опционально, можно проверить значение нормы невязок что обеспеченный инструмент Basic Fitting. Вычислите норму невязок сами из массива resids3
что вы только сохраненный:
mynormresid3 = sum(resids3.^2)^(1/2) mynormresid3 = 12.2380
Вычислите total sum of squares зависимой переменной, pop
, чтобы вычислить R2. Полная сумма квадратов является суммой различий в квадрате каждого значения от среднего значения переменной. Например, используйте этот код:
SSpop = (length(pop)-1) * var(pop) SSpop = 1.2356e+005
var(pop)
вычисляет отклонение вектора генеральной совокупности. Вы умножаете его на количество наблюдений после вычитания 1, чтобы составлять степени свободы. И полная сумма квадратов и норма невязок являются положительными скалярными величинами. Теперь, вычислите R2, с помощью квадрата normresid3
и SSpop
:
rsqcubic = 1 - normresid3^2 / SSpop rsqcubic = 0.9988
Наконец, вычислите R2 для линейной подгонки и сравните его с кубическим значением R2, которое вы только получили. Пользовательский интерфейс Basic Fitting также предоставляет вам линейные результаты подгонки. Чтобы получить линейные результаты, повторите шаги 2-6, изменив ваши действия можно следующим образом:
Чтобы вычислить коэффициенты линейной регрессии наименьших квадратов и статистику, в Fit, выпадающем на Числовой панели результатов, выбирают linear
instead of cubic
.
В Сохранении в диалоговое окно Рабочей области добавьте 1
к каждому имени переменной, чтобы идентифицировать его как выводящий от линейной подгонки и нажать OK. Переменные fit1
, normresid1
и resids1
теперь существуют в рабочей области.
Используйте переменную normresid1
(98.778
), чтобы вычислить R2 для линейной подгонки, как вы сделали на шаге 9 для кубического соответствия:
rsqlinear = 1 - normresid1^2 / SSpop rsqlinear = 0.9210
Этот результат показывает, что линейный метод наименьших квадратов данных о населении объясняет 92,1% своего отклонения. Поскольку кубическая подгонка этих данных объясняют 99,9% этой дисперсии, последняя, по-видимому, является лучшим предиктором. Однако, потому что кубическое соответствие предсказывает использование трех переменных (x, x2 и x3), основное значение R2 не полностью отражает, насколько устойчивый подгонка. Более соответствующей мерой для оценки совершенства многомерных соответствий является adjusted R2. Для получения информации о вычислении и использовании скорректированного R2, смотрите Невязки и Качество подгонки.
R2 измеряется, как хорошо ваше полиномиальное уравнение предсказывает зависимую переменную, насколько соответствующий полиномиальная модель для ваших данных. Когда вы анализируете по сути непредсказуемые данные, маленькое значение R2 указывает, что независимая переменная не предсказывает зависимой переменной точно. Однако это не обязательно означает, что существует что-то не так с подгонкой.
Вычислите Остаточные Данные и R2 для Линейной Подгонки. В этом следующем примере используйте Пользовательский интерфейс Basic Fitting, чтобы выполнить линейную подгонку, сохранить результаты в рабочую область и вычислить R2 для линейной подгонки. Можно затем сравнить линейный R2 с кубическим значением R2, которое вы получаете в примере, Вычисляют Остаточные Данные и R2 для Кубического соответствия.
Кликните по кнопке стрелки в нижнем правом углу, чтобы открыть вкладку Numerical results, если это не уже видимо.
Установите флажок linear в области Plot fits.
От Fit выпадающее меню выберите linear
, если это уже не показывает. Коэффициенты и норма области невязок отображают статистику для линейной подгонки.
Сохраните подходящие коэффициенты, норму невязок и невязок путем нажатия на Save to Workspace.
Диалоговое окно Save Fit to Workspace открывается тремя флажками и тремя текстовыми полями.
Установите все три флажка, чтобы сохранить подходящие коэффициенты, норму невязок и остаточные значения.
Идентифицируйте сохраненные переменные как принадлежащий линейной подгонке. Измените имена переменных путем добавления 1
в каждое имя по умолчанию (например, fit1
, normresid1
и resids1
).
Нажмите OK. Basic Fitting сохраняет невязки как вектор-столбец чисел, подходящие коэффициенты как struct и норма невязок как скаляр.
Заметьте, что значением, которое Basic Fitting вычисляет для нормы невязок, является 98.778
. Этот номер является квадратным корнем из суммы квадратов остатков линейной подгонки.
Опционально, можно проверить значение нормы невязок что обеспеченный инструмент Basic Fitting. Вычислите норму невязок сами из массива resids1
что вы только сохраненный:
mynormresid1 = sum(resids1.^2)^(1/2) mynormresid1 = 98.7783
Вычислите total sum of squares зависимой переменной, pop
, чтобы вычислить R2. Полная сумма квадратов является суммой различий в квадрате каждого значения от среднего значения переменной. Например, используйте этот код:
SSpop = (length(pop)-1) * var(pop) SSpop = 1.2356e+005
var(pop)
вычисляет отклонение вектора генеральной совокупности. Вы умножаете его на количество наблюдений после вычитания 1, чтобы составлять степени свободы. И полная сумма квадратов и норма невязок являются положительными скалярными величинами. Теперь, вычислите R2, с помощью квадрата normresid1
и SSpop
:
rsqlinear = 1 - normresid1^2 / SSpop rsqcubic = 0.9210
Этот результат показывает, что линейный метод наименьших квадратов данных о населении объясняет 92,1% своего отклонения. Поскольку кубическая подгонка этих данных объясняют 99,9% этой дисперсии, последняя, по-видимому, является лучшим предиктором. Однако кубическое соответствие имеет четыре коэффициента (x, x2, x3 и константа), в то время как линейная подгонка имеет два коэффициента (x и константа). Простая статистическая величина R2 не составляет различные степени свободы. Более соответствующей мерой для оценки аппроксимаций полиномом является adjusted R2. Для получения информации о вычислении и использовании скорректированного R2, смотрите Невязки и Качество подгонки.
R2 измеряется, как хорошо ваше полиномиальное уравнение предсказывает зависимую переменную, насколько соответствующий полиномиальная модель для ваших данных. Когда вы анализируете по сути непредсказуемые данные, маленькое значение R2 указывает, что независимая переменная не предсказывает зависимой переменной точно. Однако это не обязательно означает, что существует что-то не так с подгонкой.
Предположим, что вы хотите использовать кубическую модель, чтобы интерполировать американскую генеральную совокупность в 1 965 (дата, не обеспеченная в исходных данных).
В диалоговом окне Basic Fitting нажмите кнопку, чтобы задать вектор значений x
, в которых можно оценить текущую подгонку.
В поле Enter value(s)... введите следующее значение:
1965
Используйте немасштабированные и нецентрированные значения x
. Вы не должны центрироваться и масштабироваться сначала, даже при том, что вы выбрали, чтобы масштабироваться, значения x
, чтобы получить коэффициенты в Предсказывают Данные о переписи с Подгонкой Кубического полинома. Инструмент Basic Fitting вносит необходимые корректировки негласно.
Нажмите Evaluate.
Значения x
и соответствующие значения для f(x)
, вычисленного из подгонки и отображенного в таблице, как показано ниже:
Установите флажок Plot evaluated results, чтобы отобразить интерполированное значение как ромбовидный маркер:
Сохраните интерполированную генеральную совокупность в 1 965 к рабочему пространству MATLAB путем нажатия на Save to workspace.
Это открывает следующее диалоговое окно, где вы задаете имена переменных:
Нажмите OK, но сохраните Окно рисунка открытым, если вы намереваетесь выполнить шаги в следующем разделе, Сгенерируйте Файл кода, чтобы Воспроизвести Результат.
После завершения сеанса Basic Fitting можно сгенерировать код MATLAB, который повторно вычисляет модель и воспроизводит графики с новыми данными.
В Окне рисунка выберите File > Generate Code.
Это создает функцию и отображает ее в редакторе MATLAB. Код показывает вам, как программно воспроизвести то, что вы сделали в интерактивном режиме с диалоговым окном Basic Fitting.
Измените имя функции на первой строке от createfigure
до чего-то более определенного, как censusplot
. Сохраните файл кода в свою текущую папку с именем файла censusplot.m
, с которого начинается функция:
function censusplot(X1, Y1, valuesToEvaluate1)
Создайте новые, со случайной ошибкой данные переписи:
randpop = pop + 10*randn(size(pop));
Воспроизведите график с новыми данными и повторно вычислите подгонку:
censusplot(cdate,randpop,1965)
Вам нужны три входных параметра: значения x,y (data 1
), построенный в исходном графике, плюс x - значение для маркера.
Следующая фигура отображает график, который производит сгенерированный код. Новый график совпадает с внешним видом фигуры от который вы сгенерированный код за исключением значений данных y, уравнения для кубического соответствия и остаточных значений в гистограмме, как ожидалось.
Инструмент Basic Fitting вызывает функцию polyfit
, чтобы вычислить аппроксимации полиномом. Это вызывает функцию polyval
, чтобы оценить подгонки. polyfit
анализирует свои входные данные, чтобы определить, хорошо подготовлены ли данные для требуемой степени подгонки.
Когда это находит плохо подготовленные данные, polyfit
вычисляет регрессию, а также это может, но это также возвращает предупреждение, что подгонка могла быть улучшена. Раздел Predict the Census Data Basic Fitting в качестве примера с Подгонкой Кубического полинома выводит это предупреждение.
Один способ улучшить надежность модели состоит в том, чтобы добавить точки данных. Однако добавление наблюдений к набору данных не всегда выполнимо. Альтернативная стратегия состоит в том, чтобы преобразовать переменную прогноза, чтобы нормировать ее центр и шкалу. (В примере предиктор является вектором дат переписи.)
Функция polyfit
нормирует вычислительными z-очками:
где x является данными о предикторе, μ является средним значением x, и σ является стандартным отклонением x. z - очки дают данным среднее значение 0 и стандартное отклонение 1. В Пользовательском интерфейсе Basic Fitting вы преобразовываете данные о предикторе к z - очки путем установки флажка Center and scale x data.
После центрирования и масштабирования, коэффициенты модели вычисляются для данных y как функция z. Они отличаются (и более устойчивы), чем коэффициенты, вычисленные для y как функция x. Форма модели и норма невязок не изменяются. Пользовательский интерфейс Basic Fitting автоматически повторно масштабирует z - очки так, чтобы подгонка построила в той же шкале как исходные данные x.
Чтобы понять путь, которым и масштабированные данные в центре используются в качестве посредника, чтобы создать итоговый график, запустите следующий код в Командном окне:
close load census x = cdate; y = pop; z = (x-mean(x))/std(x); % Compute z-scores of x data plot(x,y,'ro') % Plot data as red markers hold on % Prepare axes to accept new graph on top zfit = linspace(z(1),z(end),100); pz = polyfit(z,y,3); % Compute conditioned fit yfit = polyval(pz,zfit); xfit = linspace(x(1),x(end),100); plot(xfit,yfit,'b-') % Plot conditioned fit vs. x data
И масштабированный кубический полином в центре строит как синяя строка, как показано здесь:
В коде вычисление z
иллюстрирует, как нормировать данные. Функция polyfit
выполняет само преобразование, если вы обеспечиваете три возвращаемых аргумента при вызове его:
[p,S,mu] = polyfit(x,y,n)
p
, теперь основаны, нормировал x
. Возвращенный вектор, mu
, содержит среднее и стандартное отклонение x
. Для получения дополнительной информации смотрите страницу с описанием polyfit
.