Интерактивный подбор кривой

Пользовательский интерфейс Basic Fitting

MATLAB® Пользовательский интерфейс Basic Fitting позволяет вам в интерактивном режиме:

  • Моделируйте данные с помощью сплайн интерполяции, кубической Эрмитовой интерполяции или полинома до десятой степени

  • Построение графика одной или несколькой подгонки с данными

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

  • Вычислите коэффициенты модели

  • Вычислите норму невязок (статистика, которую вы можете использовать, чтобы проанализировать, насколько хорошо модель подходит для ваших данных)

  • Используйте модель для интерполяции или экстраполяции вне данных

  • Сохраните коэффициенты и вычисленные значения в рабочем пространстве MATLAB для использования вне диалогового окна

  • Сгенерируйте код MATLAB, чтобы пересчитать подгонку и воспроизвести графики с новыми данными

Примечание

Этот Пользовательский интерфейс Basic Fitting доступен только для 2-D графиков. Для получения дополнительной информации подбор кривой и регрессионном анализе смотрите документацию Curve Fitting Toolbox™ и документацию Statistics and Machine Learning Toolbox™.

Подготовка к Basic Fitting

Пользовательский интерфейс Basic Fitting сортирует ваши данные в порядке возрастания перед подбором кривой. Если ваш набор данных велик, и значения не сортируются в порядке возрастания, пользовательскому интерфейсу Basic Fitting требуется больше времени для предварительной обработки данных перед подбором кривой.

Вы можете ускорить пользовательский интерфейс Basic Fitting, предварительно отсортировав свои данные. Чтобы создать отсортированные векторы x_sorted и y_sorted из векторов данных x и y, используйте MATLAB sort функция:

[x_sorted, i] = sort(x);
y_sorted = y(i);

Открытие пользовательского интерфейса Basic Fitting

Чтобы использовать Пользовательский Интерфейс Basic Fitting, необходимо сначала построить график данных в окне рисунка с помощью любой команды построения графического изображения MATLAB, которая производит (только) данные x и y.

Чтобы открыть пользовательский интерфейс Basic Fitting, выберите Tools > Basic Fitting из меню в верхней части окна рисунка.

Пример: Использование Пользовательского интерфейса Basic Fitting

В этом примере показано, как использовать Пользовательский Интерфейс Basic Fitting для подгонки, визуализации, анализа, сохранения и генерации кода для параболических регрессий.

Загрузка и построение данных переписи населения

Файл census.mat содержит население данные США за 1790-1990 годы по состоянию на 10 лет интервалов.

Чтобы загрузить и построить график данных, введите следующие команды в подсказку MATLAB:

load census
plot(cdate,pop,'ro')

The load команда добавляет следующие переменные в рабочее пространство MATLAB:

  • cdate - вектор-столбец, содержащий годы с 1790 по 1990 годы с шагами 10. Это переменная предиктора.

  • pop - Вектор-столбец с населением в США для каждого года в cdate. Это переменная отклика.

Векторы данных сортируются в порядке возрастания по годам. График показывает население как функцию года.

Теперь вы готовы подогнать под уравнение данные для моделирования роста населения с течением времени.

Прогнозирование данных переписи населения с помощью кубической Аппроксимации полиномом

  1. Откройте диалоговое окно Basic Fitting, выбрав Tools > Basic Fitting в окне рисунка.

  2. В области TYPES OF FIT диалогового окна Basic Fitting установите флажок Cubic, чтобы соответствовать кубическому полиному данных.

    MATLAB использует ваш выбор, чтобы соответствовать данным, и добавляет кубическую регрессионую линию к графику следующим образом.

    При вычислении подгонки MATLAB сталкивается с проблемами и выдает следующее предупреждение:

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

  3. Продолжите использовать кубическое соответствие. Поскольку вы не можете добавить новые наблюдения к данным переписи, улучшите подгонку, преобразовав значения, которые у вас есть, в z-оценки перед пересчетом подгонки. Установите флажок Center and scale x-axis data в правом верхнем углу диалогового окна, чтобы инструмент Basic Fitting выполнил преобразование.

    Чтобы узнать, как работает центрирование и масштабирование данных, см. Раздел «Изучение того, как вычисляет Basic Fitting Tool».

  4. В разделе ERROR ESTIMATION (RESIDUALS) установите флажок Norm of residuals. Выберите Bar в качестве Plot Style.

Выбор этих опций создает подграфик невязок как гистограмма.

Кубическое соответствие является плохим предиктором до 1790 года, где она указывает на уменьшение населения. Модель, по-видимому, достаточно хорошо аппроксимирует данные после 1790 года. Однако шаблон в невязках показывает, что модель не соответствует предположению о нормальной ошибке, что является базисом для подбора кривой методом наименьших квадратов. Линией data 1, идентифицированной в легенде, являются наблюдаемые x (cdate) и y (pop) значения данных. Линия регрессии Cubic представляет подгонке после центрирования и масштабирования значений данных. Заметьте, что на рисунке показаны исходные модули данных, даже если инструмент вычисляет подгонку с помощью преобразованных z-значений.

Для сравнения попробуйте подгонять другое полиномиальное уравнение к данным переписи путем выбора его в области TYPES OF FIT.

Просмотр и сохранение параметров кубического соответствия

В диалоговом окне Basic Fitting нажмите кнопку Expand Results, чтобы отобразить предполагаемые коэффициенты и норму невязок.

Сохраните данные подгонки в рабочем пространстве MATLAB, нажав кнопку Export to Workspace на панели Числовые результаты. Откроется диалоговое окно Сохранить подгонку в рабочей области (Save Fit to Workspace).

Если установлены все флажки, щелкните OK, чтобы сохранить параметры подгонки как структуру MATLAB fit:

fit
fit = 

  struct with fields:

     type: 'polynomial degree 3'
    coeff: [0.9210 25.1834 73.8598 61.7444]

Теперь можно использовать результаты подгонки в программировании MATLAB, за пределами пользовательского интерфейса Basic Fitting.

R2, Коэффициент детерминации

Можно получить указание на то, насколько хорошо параболическая регрессия предсказывает ваши наблюдаемые данные путем вычисления coefficient of determination, или R-square (написано как R2). R2 statistic, которая находится в диапазоне от 0 до 1, измеряет, насколько полезна независимая переменная в предсказании значений зависимой переменной:

  • R2 значение около 0 указывает, что подгонка не намного лучше модели y = constant.

  • R2 значение около 1 указывает, что независимая переменная объясняет большую часть переменной в зависимой переменной.

R2 вычисляются из residuals, различия со знаком между наблюдаемым зависимым значением и значением, которое ваша подгонка предсказывает для него.

невязки = yobserved - yited(1)

R2 номер для кубического соответствия в этом примере, 0.9988, расположен под FIT RESULTS в диалоговом окне Basic Fitting.

Для сравнения R2 число для кубического соответствия к линейному методу наименьших квадратов подгонке, выберите Linear под TYPES OF FIT и получите R2 число, 0,921. Этот результат указывает, что линейный метод наименьших квадратов данных о населении объясняет 92,1% своих отклонений. Поскольку кубическое соответствие этих данных объясняют 99,9% этого отклонения, последняя, по-видимому, является лучшим предиктором. Однако, потому что кубическое соответствие предсказывает использование трех переменных (x, x2, и x3), основной R2 значение не полностью отражает, насколько устойчива подгонка. Более подходящая мера для оценки качества многомерных соответствий скорректирована R2. Для получения информации об вычислениях и использовании скорректированных R2, см. Невязки и качество подгонки.

Интерполяция и экстраполяция Населения значений

Предположим, что вы хотите использовать кубическую модель для интерполяции населения США в 1965 году (дата не указана в исходных данных).

В диалоговом окне «Basic Fitting» в разделе INTERPOLATE / EXTRAPOLATE DATA введите значение X 1965 и установите флажок Plot evaluated data.

Примечание

Используйте немасштабированные и uncentered X значения. Вам не нужно сначала центрировать и масштабировать, даже если вы выбрали для масштабирования X значения для получения коэффициентов в разделе Предсказание данных переписи населения с помощью кубической Аппроксимации полиномом. Инструмент Basic Fitting вносит необходимые корректировки за кадром.

The X значений и соответствующих значений для f(X) вычисляются из подгонки и строятся следующим образом:

Сгенерируйте файл кода, чтобы воспроизвести результат

После завершения сеанса Basic Fitting можно сгенерировать код MATLAB, который пересчитывает подгонку и воспроизводит графики с новыми данными.

  1. В окне рисунка выберите File > Generate Code.

    Это создает функцию и отображает ее в редакторе MATLAB. Код показывает, как программно воспроизвести то, что вы сделали в интерактивном режиме с помощью диалогового окна Basic Fitting.

  2. Измените имя функции в первой линии из createfigure к чему-то более конкретному, например censusplot. Сохраните файл кода в текущую папку с именем файла censusplot.m Функция начинается с:

    function censusplot(X1, Y1, valuesToEvaluate1)

  3. Сгенерируйте некоторые новые, случайным образом возмущенные данные переписи:

    rng('default')
    randpop = pop + 10*randn(size(pop));
  4. Воспроизведите график с новыми данными и пересчитайте подгонку:

    censusplot(cdate,randpop,1965)

    Вам нужно три входных параметров: x,y значения (data 1), нанесенный на исходный график, плюс x значение для маркера .

    Следующий рисунок отображает график, который создает сгенерированный код. Новый график соответствует внешнему виду рисунка, из которых вы сгенерированными кодами, за исключением значений y данных, уравнения для кубического соответствия и невязки значений в гистограмму, как и ожидалось.

Узнайте, как вычисления Basic Fitting Tool подходят

Инструмент Basic Fitting вызывает polyfit функция для вычисления аппроксимаций полиномом. Он вызывает polyval функция для оценки подгонок. polyfit анализирует его входы, чтобы определить, хорошо ли данные обусловлены требуемой степенью подгонки.

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

Один из способов улучшить надежность модели - добавить точки данных. Однако добавление наблюдений к набору данных не всегда допустимо. Альтернативная стратегия состоит в том, чтобы преобразовать переменную предиктора, чтобы нормализовать ее центр и шкалу. (В примере предиктором является вектор дат переписи.)

polyfit функция нормализуется путем вычисления z-оценок:

z=xμσ

где x - данные предиктора, μ - среднее значение x, а σ - стандартное отклонение x. Символы z-scores дают данным среднее значение 0 и стандартное отклонение 1. В пользовательском интерфейсе Basic Fitting вы преобразуете данные предиктора в z -счета, установив флажок Center and scale x-axis 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 страница с описанием.