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

Введение

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

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

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

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

Эта тема объясняет как:

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

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

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

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

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

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

В этом примере показано, как выполнить простую линейную регрессию с помощью accidents набор данных. Пример также показывает вам, как вычислить коэффициент детерминации R2 оценивать регрессии. 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 между несчастными случаями в состоянии и населении состояния с помощью \ оператор. \ оператор выполняет регрессию наименьших квадратов.

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 object. The axes object 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 ×

  142.7120
    0.0001

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

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

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

Figure contains an axes object. The axes object 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. Компьютер2 использование формулы, данной во введении этой темы:

    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.