Модель данных явно описывает связь между предиктором и переменными ответа. Линейная регрессия соответствует модели данных, которая является линейной в коэффициентах модели. Наиболее распространенным типом линейной регрессии является подгонка методом наименьших квадратов, которая может подгонять как прямые, так и многочлены среди других линейных моделей.
Перед моделированием взаимосвязи между парами величин рекомендуется выполнить корреляционный анализ для определения наличия линейной взаимосвязи между этими величинами. Помните, что переменные могут иметь нелинейные отношения, которые корреляционный анализ не может обнаружить. Дополнительные сведения см. в разделе Линейная корреляция.
Пользовательский интерфейс «MATLAB ® Basic Fitting» (Основные фитинги MATLAB ®) помогает подгонять данные, позволяя вычислять коэффициенты модели и выводить модель поверх данных. Пример см. в разделе Пример: Использование пользовательского интерфейса базового фитинга. Также можно использовать MATLAB.polyfit и polyval для подгонки данных к модели, которая является линейной в коэффициентах. Пример см. в разделе Программная подгонка.
Если необходимо вписать данные в нелинейную модель, преобразуйте переменные, чтобы сделать отношение линейным. Либо попробуйте подогнать нелинейную функцию непосредственно с помощью статистики и машинного обучения Toolbox™ nlinfit функция «Оптимизация» Toolbox™ lsqcurvefit или путем применения функций в Toolbox™ Фитинг кривой (Curve Fitting).
В этом разделе объясняется, как:
Выполнить простую линейную регрессию с помощью \ оператор.
Используйте корреляционный анализ, чтобы определить, связаны ли две величины для обоснования подгонки данных.
Подгонка линейной модели к данным.
Оцените благость посадки, построив график остатков и найдя узоры.
Рассчитать показатели благости подгонки R2 и скорректированной R2
В этом примере показано, как выполнить простую линейную регрессию с помощью accidents набор данных. В примере также показано, как вычислить коэффициент определения оценить регрессии. accidents набор данных содержит данные о дорожно-транспортных происшествиях со смертельным исходом в штатах США.
Линейная регрессия моделирует связь между зависимой, или ответной, переменной и одной или несколькими независимыми, или предиктором, переменными xn. Простая линейная регрессия учитывает только одну независимую переменную с использованием уравнения
где - y-пересечение, - наклон (или коэффициент регрессии), а - член ошибки.
Начните с набора наблюдаемых значений и , заданных значениями ), y2),..., yn). Используя простое отношение линейной регрессии, эти значения образуют систему линейных уравнений. Представить эти уравнения в матричной форме как
].
Давайте
β0β1].
Теперь отношение Y XB.
В MATLAB можно найти с помощью mldivide оператор как B = X\Y.
Из набора данных accidents, загрузить данные об аварии в y и данные о населении штатов в x. Найдите отношение линейной регрессии β1x между авариями в состоянии и населением состояния с помощью \ оператор. \ оператор выполняет регрессию методом наименьших квадратов.
load accidents x = hwydata(:,14); %Population of states y = hwydata(:,4); %Accidents per state format long b1 = x\y
b1 =
1.372716735564871e-04
b1 - коэффициент наклона или регрессии. Линейное отношение y 0001372x.
Расчет несчастных случаев по состоянию yCalc от x используя уравнение. Визуализация регрессии путем печати фактических значений y и рассчитанные значения yCalc.
yCalc1 = b1*x; scatter(x,y) hold on plot(x,yCalc1) xlabel('Population of state') ylabel('Fatal traffic accidents per state') title('Linear Regression Relation Between Accidents & Population') grid on

Улучшите посадку, включив в модель y-intercept β0 как β1x. Вычислить β0 по заполнениюx со столбцом единиц и с использованием \ оператор.
X = [ones(length(x),1) x]; b = X\y
b = 2×1
102 ×
1.427120171726537
0.000001256394274
Этот результат представляет отношение .0001256x.
Визуализируйте уравнение, выводя его на тот же рисунок.
yCalc2 = X*b; plot(x,yCalc2,'--') legend('Data','Slope','Slope & Intercept','Location','best');

На рисунке эти две посадки выглядят похожими. Одним из методов нахождения лучшего соответствия является вычисление коэффициента определения, . является одним из показателей того, насколько хорошо модель может прогнозировать данные и находится в диапазоне от до . Чем выше значение , тем лучше модель при прогнозировании данных.
Где представляет вычисленные значения и ‾ - среднее значение y, R2 определяется как
‾) 2.
Найдите лучшую подгонку двух посадок, сравнив значения . Как показывают R2 значения, вторая посадка, включающая y-перехват, лучше.
Rsq1 = 1 - sum((y - yCalc1).^2)/sum((y - mean(y)).^2)
Rsq1 = 0.822235650485566
Rsq2 = 1 - sum((y - yCalc2).^2)/sum((y - mean(y)).^2)
Rsq2 = 0.838210531103428
Остатки - это разница между наблюдаемыми значениями переменной отклика (зависимой) и значениями, которые предсказывает модель. При подгонке модели, подходящей для данных, остатки аппроксимируют независимые случайные ошибки. То есть распределение остатков не должно демонстрировать заметную закономерность.
Для создания посадки с использованием линейной модели требуется минимизация суммы квадратов остатков. Эта минимизация дает то, что называется наименьшим квадратом. Вы можете получить представление о «благости» посадки, визуально исследуя график остатков. Если остаточный график имеет шаблон (то есть остаточные точки данных, по-видимому, не имеют случайного рассеяния), случайность указывает на то, что модель не соответствует должным образом данным.
Оцените каждое вписывание в контексте данных. Например, если целью подбора данных является извлечение коэффициентов, имеющих физический смысл, то важно, чтобы модель отражала физику данных. Понимание того, что представляют ваши данные, как они были измерены и как они моделируются, важно при оценке благости соответствия.
Одним из показателей благости посадки является коэффициент определения, или R2 (выраженный r-квадрат). Эта статистика показывает, насколько близко значения, полученные при подборе модели, соответствуют зависимой переменной, для прогнозирования которой предназначена модель. Статистики часто определяют R2, используя остаточную дисперсию из подогнанной модели:
R2 = 1 - SSD resd/SStotal
SSresd - сумма квадратичных остатков регрессии. SStotal - сумма квадратичных разностей от среднего значения зависимой переменной (общая сумма квадратов). Оба являются положительными скалярами.
Сведения о том, как вычислять R2 при использовании инструмента «Базовый фитинг», см. в разделе R2 «Коэффициент определения». Чтобы узнать больше о расчете статистики R2 и ее многомерном обобщении, продолжите читать здесь.
Можно вывести R2 из коэффициентов полиномиальной регрессии, чтобы определить величину дисперсии в y линейная модель объясняет, как описано в следующем примере:
Создайте две переменные, x и y, из первых двух столбцов count переменная в файле данных count.dat:
load count.dat x = count(:,1); y = count(:,2);
Использовать polyfit для вычисления линейной регрессии, которая предсказывает y от x:
p = polyfit(x,y,1)
p =
1.5229 -2.1911
p(1) - наклон и p(2) - пересечение линейного предиктора. Коэффициенты регрессии можно также получить с помощью пользовательского интерфейса «Базовый фитинг».
Звонить polyval использовать p предсказать y, вызов результата yfit:
yfit = polyval(p,x);
Используя polyval избавляет вас от необходимости самостоятельно вводить уравнение посадки, которое в данном случае выглядит следующим образом:
yfit = p(1) * x + p(2);
Вычислите остаточные значения как вектор знаковых чисел:
yresid = y - yfit;
Квадратные остатки и суммировать их для получения остаточной суммы квадратов:
SSresid = sum(yresid.^2);
Вычислить общую сумму квадратов y умножая дисперсию y по количеству наблюдений минус 1:
SStotal = (length(y)-1) * var(y);
Вычислить R2 по формуле, приведенной во введении к этой теме:
rsq = 1 - SSresid/SStotal
rsq =
0.87071.5229 * x -2.1911 прогнозирует 87% дисперсии в переменной y.Обычно можно уменьшить остатки в модели, подгоняя многочлен более высокой степени. При добавлении дополнительных терминов увеличивается коэффициент определения, R2. Вы получаете более близкое соответствие данным, но за счет более сложной модели, за которую R2 не можете отчитаться. Однако уточнение этой статистики, скорректированное R2, действительно включает штраф за количество терминов в модели. Поэтому скорректированные R2 более подходят для сравнения соответствия различных моделей одним и тем же данным. Скорректированная R2 определяется как:
R2adjusted = 1 - (SSresd/SStotal) * ((n-1 )/( n-d-1 ))
Следующий пример повторяет шаги предыдущего примера, Пример: Вычисление R2 из полиномиальных посадок, но выполняет кубическое (степень 3) вписывание вместо линейного (степень 1). Из кубического подгонки вычисляются как простые, так и скорректированные значения R2, чтобы оценить, улучшают ли дополнительные термины прогнозирующую мощность:
Создайте две переменные, x и y, из первых двух столбцов count переменная в файле данных count.dat:
load count.dat x = count(:,1); y = count(:,2);
Звонить polyfit для создания кубического вписывания для прогнозирования y от x:
p = polyfit(x,y,3) p = -0.0003 0.0390 0.2233 6.2779
p(4) - перехват кубического предиктора. Коэффициенты регрессии можно также получить с помощью пользовательского интерфейса «Базовый фитинг».
Звонить polyval для использования коэффициентов в p предсказать y, присвоение имени результату yfit:
yfit = polyval(p,x);
polyval оценивает явное уравнение, которое можно ввести вручную, как:
yfit = p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);
Вычислите остаточные значения как вектор знаковых чисел:
yresid = y - yfit;
Квадратные остатки и суммировать их для получения остаточной суммы квадратов:
SSresid = sum(yresid.^2);
Вычислить общую сумму квадратов y умножая дисперсию y по количеству наблюдений минус 1:
SStotal = (length(y)-1) * var(y);
Вычислите простые R2 для кубической посадки по формуле, приведенной во введении этой темы:
rsq = 1 - SSresid/SStotal
rsq =
0.9083Наконец, вычислите скорректированные R2 для учета степеней свободы:
rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))
rsq_adj =
0.8945Во многих моделях полиномиальной регрессии добавление членов к уравнению увеличивает как R2, так и скорректированные R2. В предыдущем примере использование кубического подгонки увеличило статистику по сравнению с линейным подгонкой. (Можно вычислить скорректированные R2 для линейной посадки для себя, чтобы продемонстрировать, что она имеет меньшее значение.) Однако не всегда верно, что линейная посадка хуже посадки более высокого порядка: более сложная посадка может иметь более низкий регулируемый R2, чем более простая посадка, указывая на то, что повышенная сложность не оправдана. Кроме того, хотя R2 всегда изменяется в диапазоне от 0 до 1 для моделей полиномиальной регрессии, которые создает инструмент «Базовый фитинг» (Basic Fitting), скорректированные R2 для некоторых моделей могут быть отрицательными, указывая, что модель имеет слишком много терминов.
Корреляция не подразумевает причинно-следственной связи. Всегда интерпретируйте коэффициенты корреляции и определения осторожно. Коэффициенты определяют только величину дисперсии в зависимой переменной, удаляемой подгоняемой моделью. Такие измерения не описывают, насколько подходит модель или выбранные независимые переменные для объяснения поведения переменной, которую предсказывает модель.
Программное обеспечение Curve Fitting Toolbox расширяет основные функциональные возможности MATLAB, предоставляя следующие возможности подгонки данных:
Линейный и нелинейный параметрический фитинг, включая стандартные линейные наименьшие квадраты, нелинейные наименьшие квадраты, взвешенные наименьшие квадраты, ограниченные наименьшие квадраты и надежные процедуры фитинга
Непараметрический фитинг
Статистика для определения благости соответствия
Экстраполяция, дифференциация и интеграция
Диалоговое окно, упрощающее секционирование и сглаживание данных
Сохранение результатов подгонки в различных форматах, включая файлы кода MATLAB, MAT-файлы и переменные рабочей области
Дополнительные сведения см. в документации «Панель инструментов фитинга кривой».