Линейная регрессия

Введение

Модель данных явно описывает отношение между predictor и response переменными. Линейная регрессия подходит для модели данных, которая является линейной в коэффициентах модели. Наиболее распространенным типом линейной регрессии является least-squares fit, которая может соответствовать как линиям, так и полиномам, среди других линейных моделей.

Перед моделированием связи между парами величин рекомендуется провести корреляционный анализ, чтобы установить, существует ли линейная связь между этими величинами. Имейте в виду, что переменные могут иметь нелинейные отношения, которые корреляционный анализ не может обнаружить. Для получения дополнительной информации см. Раздел «Линейная корреляция»

MATLAB® Пользовательский интерфейс Basic Fitting помогает вам подгонять данные, поэтому можно вычислить коэффициенты модели и построить график модели поверх данных. Например, см. Пример: Использование Пользовательского интерфейса Basic Fitting. Можно также использовать MATLAB polyfit и polyval функции для подгонки данных к модели, которая является линейной в коэффициентах. Для получения примера см. Программное аппроксимирование.

Если вам нужно подгонять данные с помощью нелинейной модели, преобразуйте переменные, чтобы сделать отношение линейным. Также попробуйте подогнать нелинейную функцию непосредственно с помощью Toolbox™ Statistics and Machine Learning nlinfit function, the Optimization Toolbox™ lsqcurvefit function, или путем применения функций в Curve Fitting Toolbox™.

В этой теме объясняется, как:

  • Выполните простую линейную регрессию, используя \ оператор.

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

  • Подбор линейной модели к данным.

  • Оцените качество подгонки путем построения графиков невязок и поиска шаблонов.

  • Вычислим меры качества подгонки R2 и скорректированный R2

Простая линейная регрессия

В этом примере показано, как выполнить простую линейную регрессию с помощью accidents набор данных. Пример также показывает, как вычислить коэффициент детерминации R2 для оценки регрессий. The accidents набор данных содержит данные о дорожно-транспортных происшествиях со смертельным исходом в состояниях США.

Линейная регрессия моделирует отношение между зависимой, или ответной, переменной y и одну или несколько независимых, или предикторов, переменных x1,...,xn. Простая линейная регрессия рассматривает только одну независимую переменную, используя отношение

y=β0+β1x+ϵ,

где β0 - это свободный член, β1 является наклоном (или коэффициентом регрессии), и ϵ - термин ошибки.

Начните с набора из n наблюдаемые значения x и y даны (x1,y1), (x2,y2), ..., (xn,yn). Используя простое линейное регрессионное отношение, эти значения образуют систему линейных уравнений. Представьте эти уравнения в матричном виде как

[y1y2yn]=[1x11x21xn][β0β1].

Давайте

Y=[y1y2yn],X=[1x11x21xn],B=[β0β1].

Отношение теперь Y=XB.

В MATLAB можно найти B использование mldivide оператор как B = X\Y.

Из набора данных accidents, данные о загрузке аварии в y и данные о населении штатов в x. Найдите линейное регрессионное соотношение y=β1x между авариями в состояние и населением состояния с использованием \ оператор. The \ оператор выполняет регрессию методом наименьших квадратов.

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=β1x=0.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

Figure contains an axes. The axes with title Linear Regression Relation Between Accidents & Population contains 2 objects of type scatter, line.

Улучшите подгонку, включив свободный член β0 в вашей модели как y=β0+β1x. Вычислить β0 путем заполнения x со столбцом таковых и использование \ оператор.

X = [ones(length(x),1) x];
b = X\y
b = 2×1
102 ×

   1.427120171726537
   0.000001256394274

Этот результат представляет отношение y=β0+β1x=142.7120+0.0001256x.

Визуализируйте отношение путем построения графика на том же рисунке.

yCalc2 = X*b;
plot(x,yCalc2,'--')
legend('Data','Slope','Slope & Intercept','Location','best');

Figure contains an axes. The axes with title Linear Regression Relation Between Accidents & Population contains 3 objects of type scatter, line. These objects represent Data, Slope, Slope & Intercept.

Из рисунка два подгонка выглядят одинаково. Одним из методов нахождения лучшей подгонки является вычисление коэффициента детерминации, R2. R2 является одной мерой того, насколько хорошо модель может предсказать данные, и падает между 0 и 1. Чем выше значение R2, чем лучше модель при прогнозировании данных.

Где yˆ представляет вычисленные значения y и y является средним y, R2 определяется как

R2=1-i=1n(yi-yˆi)2i=1n(yi-y)2.

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

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

Невязки и качество подгонки

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

Производство подгонки с использованием линейной модели требует минимизации суммы квадратов невязок. Эта минимизация приводит к тому, что называется аппроксимацией методом наименьших квадратов. Можно получить представление о «качестве» подгонки путем визуального исследования графика невязок. Если остаточный график имеет шаблон (то есть остаточные точки данных, по-видимому, не имеют случайного рассеяния), случайность указывает, что модель неправильно соответствует данным.

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

Одной из мер качества подгонки является coefficient of determination, или R2 (произносится r-квадрат). Эта статистическая величина указывает, насколько близко значения, полученные из подбора кривой модели, соответствуют зависимой переменной, которую модель предназначена для предсказания. Статистики часто определяют R2 использование остаточного отклонения от подобранной модели:

R2 = 1 - SSresid/SStotal

SSresid - сумма квадратов невязок от регрессии. SStotal - сумма квадратов различий от среднего значения зависимой переменной (общая сумма квадратов). Оба являются положительными скалярными величинами.

Чтобы узнать, как вычислить R2 при использовании инструмента «Basic Fitting» см. R2, Коэффициент детерминации. Чтобы узнать больше о вычислении R2 статистический и его многомерное обобщение, продолжите читать здесь.

Пример: Вычисление R2 от аппроксимаций полиномом

Можно вывести R2 из коэффициентов параболической регрессии определить, сколько отклонения в y линейная модель объясняет, как описывает следующий пример:

  1. Создайте две переменные, x и y, из первых двух столбцов count переменная в файле данных count.dat:

    load count.dat
    x = count(:,1);
    y = count(:,2);

  2. Использовать polyfit вычислить линейную регрессию, которая предсказывает y от x:

    p = polyfit(x,y,1)
    
    p =
        1.5229   -2.1911
    

    p(1) - уклон и p(2) - прерывание линейного предиктора. Можно также получить коэффициенты регрессии с помощью пользовательского интерфейса Basic Fitting.

  3. Звонить polyval использовать p для предсказания y, вызывая результат yfit:

    yfit = polyval(p,x);

    Используя polyval спасает вас от ввода уравнения подгонки самостоятельно, которая в данном случае выглядит следующим образом:

    yfit =  p(1) * x + p(2);
  4. Вычислите остаточные значения как вектор со знаком чисел:

    yresid = y - yfit;

  5. Сглаживайте невязки и суммируйте их, чтобы получить остаточную сумму квадратов:

    SSresid = sum(yresid.^2);

  6. Вычислите общую сумму квадратов y путем умножения отклонения y по количеству наблюдений минус 1:

    SStotal = (length(y)-1) * var(y);
    

  7. Вычислите R2 использование формулы, приведенной во введении этой темы:

    rsq = 1 - SSresid/SStotal
    
    rsq =
        0.8707
    Это демонстрирует, что линейное уравнение 1.5229 * x -2.1911 предсказывает 87% отклонения переменной y.

Вычисление скорректированного R2 для параболических регрессий

Обычно можно уменьшить невязки в модели, установив полином более высокой степени. Когда вы добавляете больше членов, вы увеличиваете коэффициент детерминации, R2. Вы получаете более близкую подгонку к данным, но за счет более сложной модели, для которой R2 не удается выполнить учетную запись. Однако уточнение этой статистической, скорректированной R2, включает штраф за количество членов в модели. Скорректированный R2поэтому более подходит для сравнения того, как различные модели подходят к одним и тем же данным. Скорректированный R2 определяется как:

R2скорректированный = 1 - (SSresid/SStotal) * ((n -1 )/( n - d -1))

где n - количество наблюдений в ваших данных, а d - степень полинома. (Линейная подгонка имеет степень 1, квадратичную подгонку 2, кубическое соответствие 3 и так далее.)

В следующем примере повторяются шаги предыдущего примера, Пример: Вычисление R2 из Аппроксимации полиномом, но выполняется кубическая (степень 3) подгонка вместо линейной (степень 1) подгонки. Из кубического соответствия вы вычисляете как простой, так и скорректированный R2 значения, чтобы оценить, улучшают ли дополнительные условия прогнозирующую степень:

  1. Создайте две переменные, x и y, из первых двух столбцов count переменная в файле данных count.dat:

    load count.dat
    x = count(:,1);
    y = count(:,2);

  2. Звонить polyfit чтобы сгенерировать кубическое соответствие для предсказания y от x:

    p = polyfit(x,y,3)
    
    p =
       -0.0003    0.0390    0.2233    6.2779

    p(4) - точка пересечения кубического предиктора. Можно также получить коэффициенты регрессии с помощью пользовательского интерфейса Basic Fitting.

  3. Звонить polyval для использования коэффициентов в p для предсказания y, присвоение имени результату yfit:

    yfit = polyval(p,x);

    polyval оценивает явное уравнение, которое можно было ввести вручную как:

    yfit =  p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);

  4. Вычислите остаточные значения как вектор со знаком чисел:

    yresid = y - yfit;

  5. Сглаживайте невязки и суммируйте их, чтобы получить остаточную сумму квадратов:

    SSresid = sum(yresid.^2);

  6. Вычислите общую сумму квадратов y путем умножения отклонения y по количеству наблюдений минус 1:

    SStotal = (length(y)-1) * var(y);
    

  7. Вычисление простого R2 для кубического соответствия по формуле, приведенной во введении этой темы:

    rsq = 1 - SSresid/SStotal
    
    rsq =
        0.9083

  8. Наконец, вычислите скорректированный R2 для расчета степеней свободы:

    rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))
    
    rsq_adj =
        0.8945
    Скорректированный R2, 0,8945, меньше, чем простой R2, .9083. Это обеспечивает более надежную оценку степени вашей полиномиальной модели для предсказания.

Во многих моделях параболической регрессии добавление членов к уравнению увеличивает обе R2 и скорректированный R2. В предыдущем примере использование кубического соответствия увеличило обе статистики по сравнению с линейной подгонкой. (Можно вычислить скорректированный R2 для линейной подгонки для себя, чтобы продемонстрировать, что она имеет меньшее значение.) Однако не всегда верно, что линейная подгонка хуже, чем подгонка более высокого порядка: более сложная подгонка может иметь более низкую скорректированную R2 чем более простая подгонка, что указывает на то, что повышенная сложность не оправдана. Кроме того, в то время как R2 всегда изменяется между 0 и 1 для моделей параболической регрессии, которые генерирует инструмент Basic Fitting, скорректированный R2 для некоторых моделей может быть отрицательным, что указывает на то, что модель, которая имеет слишком много членов.

Корреляция не подразумевает причинность. Всегда интерпретируйте коэффициенты корреляции и дискриминации осторожно. Коэффициенты только количественно определяют, какое отклонение в зависимой переменной удаляет подобранная модель. Такие меры не описывают, насколько подходят ваша модель - или независимые переменные, которые вы выбираете - для объяснения поведения переменной, которую модель предсказывает.

Подбор данных с помощью функций Curve Fitting Toolbox

Программное обеспечение Curve Fitting Toolbox расширяет основные функциональные возможности MATLAB, предоставляя следующие возможности подгонки данных:

  • Линейный и нелинейный параметрический подбор кривой, включая стандартные линейные методы наименьших квадратов, нелинейные методы наименьших квадратов, взвешенные наименьшие квадраты, методы наименьших квадратов с ограничениями и робастные методы подбора

  • Непараметрический подбор кривой

  • Статистика для определения качества подгонки

  • Экстраполяция, дифференциация и интегрирование

  • Диалоговое окно, которое облегчает сглаживание и сглаживание данных

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

Для получения дополнительной информации см. документацию по Curve Fitting Toolbox.