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

Введение

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

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

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

Если необходимо соответствовать данным нелинейной моделью, преобразуйте переменные, чтобы сделать отношение линейным. Также попытайтесь соответствовать нелинейной функции непосредственно с помощью или Статистики и Машинного обучения Toolbox™ функция nlinfit, Оптимизация Toolbox™ функция lsqcurvefit, или путем применения функций в Аппроксимировании кривыми Toolbox™.

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

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

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

  • Соответствуйте линейной модели к данным.

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

  • Вычислите меры совершенства подходящего R2 и настроенного R2

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

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

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

где y-прерывание, является наклоном (или коэффициент регрессии) и является остаточным членом.

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

Позволить

Отношение теперь.

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

От набора данных accidents загрузите данные несчастного случая в y и данные о населении состояния в x. Найдите линейное отношение регрессии между несчастными случаями в состоянии и населении состояния с помощью оператора \. Оператор \ выполняет регрессию наименьших квадратов.

load accidents
x = hwydata(:,14); %Population of states
y = hwydata(:,4); %Accidents per state
format long
b1 = x\y
b1 = 
     1.372716735564871e-04

b1 является наклонным или коэффициентом регрессии. Линейное отношение.

Вычислите несчастные случаи на 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-прерывания в вашей модели как. Вычислите путем дополнения x столбцом из единиц и использования оператора \.

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

   1.427120171726537
   0.000001256394274

Этот результат представляет отношение.

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

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

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

То, где представляет расчетные значения и среднее значение, задано как

Найдите лучший припадок двух соответствий путем сравнения значений. Когда значения показывают, второе соответствие, которое включает 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 – 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 задан как:

R2adjusted = 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.

Была ли эта тема полезной?