regress

Многофакторная линейная регрессия

Описание

пример

b = regress(y,X) возвращает вектор b оценок коэффициентов для многофакторной линейной регрессии из ответов в вектор y на предикторах в матричной X. Чтобы вычислить оценки коэффициентов для модели с постоянным членом ( точкой пересечения), включите столбец с таковыми в матрицу X.

[b,bint] = regress(y,X) также возвращает матрицу bint 95% доверительных интервалов для оценок коэффициентов.

[b,bint,r] = regress(y,X) также возвращает дополнительный вектор r невязки.

пример

[b,bint,r,rint] = regress(y,X) также возвращает матрицу rint интервалов, которые могут использоваться для диагностики выбросов.

пример

[b,bint,r,rint,stats] = regress(y,X) также возвращает вектор stats который содержит R2 statistic, F-statistic и его p-значение и оценка отклонения ошибки. Матрица X должен включать столбец с таковыми для того, чтобы программное обеспечение правильно вычисляло статистику модели.

пример

[___] = regress(y,X,alpha) использует 100*(1-alpha)% доверительный уровень для вычисления bint и rint. Задайте любой выходной аргумент, комбинации в предыдущих синтаксисах.

Примеры

свернуть все

Загрузите carsmall набор данных. Определите вес и лошадиную силу как предикторы и пробег как ответ.

load carsmall
x1 = Weight;
x2 = Horsepower;    % Contains NaN data
y = MPG;

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

X = [ones(size(x1)) x1 x2 x1.*x2];
b = regress(y,X)    % Removes NaN data
b = 4×1

   60.7104
   -0.0102
   -0.1882
    0.0000

Постройте график данных и модели.

scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
xlabel('Weight')
ylabel('Horsepower')
zlabel('MPG')
view(50,10)
hold off

Figure contains an axes. The axes contains 2 objects of type scatter, surface.

Загрузите examgrades набор данных.

load examgrades

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

y = grades(:,5);
X = [ones(size(grades(:,1))) grades(:,1:2)];

Выполните многофакторную линейную регрессию с альфа = 0,01.

[~,~,r,rint] = regress(y,X,0.01);

Диагностируйте выбросы путем нахождения остаточных интервалов rint которые не содержат 0.

contain0 = (rint(:,1)<0 & rint(:,2)>0);
idx = find(contain0==false)
idx = 2×1

    53
    54

Система наблюдений 53 и 54 являются возможными выбросами.

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

hold on
scatter(y,r)
scatter(y(idx),r(idx),'b','filled')
xlabel("Last Exam Grades")
ylabel("Residuals")
hold off

Figure contains an axes. The axes contains 2 objects of type scatter.

Загрузите hald набор данных. Использование heat как переменная отклика и ingredients как данные предиктора.

load hald
y = heat;
X1 = ingredients;
x1 = ones(size(X1,1),1);
X = [x1 X1];    % Includes column of ones

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

[~,~,~,~,stats] = regress(y,X)
stats = 1×4

    0.9824  111.4792    0.0000    5.9830

Потому что R2 значение 0.9824 близко к 1, и p-значение 0.0000 меньше уровня значимости по умолчанию 0,05, между откликом существует значительная линейная регрессионая связь y и переменные предиктора в X.

Входные параметры

свернуть все

Данные отклика, заданные как n-на-1 числовой вектор. Строки y соответствуют различным наблюдениям. y должно иметь одинаковое число строк как X.

Типы данных: single | double

Данные предиктора, заданные как n -by p числовая матрица. Строки X соответствуют наблюдениям, а столбцы соответствуют переменным предиктора. X должно иметь одинаковое число строк как y.

Типы данных: single | double

Уровень значимости, заданный как положительная скалярная величина. alpha должно быть от 0 до 1.

Типы данных: single | double

Выходные аргументы

свернуть все

Оценки коэффициентов для многофакторной линейной регрессии, возвращенные как числовой вектор. b является вектором p -by-1, где p - количество предикторов в X. Если столбцы X являются линейно зависимыми, regress устанавливает максимальное количество элементов b в нуль.

Типы данных: double

Нижняя и верхняя доверительные границы для оценок коэффициентов, возвращенные в виде числовой матрицы. bint является матрицей p -by-2, где p - количество предикторов в X. Первый столбец bint содержит более низкие доверительные границы для каждой из оценок коэффициентов; второй столбец содержит верхние доверительные границы. Если столбцы X являются линейно зависимыми, regress возвращает нули в элементах bint соответствующий нулевым элементам b.

Типы данных: double

Невязки, возвращенные как числовой вектор. r - вектор n -by-1, где n - количество наблюдений, или строк, в X.

Типы данных: single | double

Интервалы для диагностики выбросов, возвращенные как числовая матрица. rint - матрица n -by-2, где n - количество наблюдений, или строк в X. Если интервал rint(i,:) для i наблюдений не содержит нуля, соответствующая невязка больше ожидаемого в 100*(1-alpha)% новых наблюдений, что позволяет предположить выбросы. Для получения дополнительной информации см. «Алгоритмы».

Типы данных: single | double

Статистика модели, возвращенная как числовой вектор, включая R2 statistic, F-statistic и его p-значение и оценка отклонения ошибки.

  • X должен включать столбец таковых, чтобы модель содержала постоянный термин. Значение F-statistic и его p-value вычисляются в этом предположении и не верны для моделей без константы.

  • F -statistic является тестовой статистикой F-test на регрессионой модели. F -test ищет значительную линейную регрессию между переменной отклика и переменными предиктора.

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

Типы данных: single | double

Совет

  • regress лечит NaN значения в X или y как отсутствующие значения. regress опускает наблюдения с отсутствующими значениями из регрессионной подгонки.

Алгоритмы

свернуть все

Остаточные интервалы

В линейной модели наблюдаемые значения y и их невязки являются случайными переменными. Невязки имеют нормальные распределения с нулевым средним, но с различными отклонениями при разных значениях предикторов. Чтобы поставить невязки в сопоставимой шкале, regress «Изучает» невязки. То есть, regress делит невязки на оценку их стандартного отклонения, которое не зависит от их значения. Исследуемые невязки имеют t-искривления с известными степенями свободы. Интервалы, возвращенные в rint являются сдвигами 100*(1-alpha)% доверительные интервалы этих t - распределения, сосредоточенные в невязках.

Альтернативная функциональность

regress полезно, когда вам просто нужны выходные аргументы функции и когда вы хотите повторить подбор кривой модели несколько раз в цикле. Если вам нужно исследовать подобранную регрессионую модель дальше, создайте объект линейной регрессионой модели LinearModel при помощи fitlm или stepwiselm. A LinearModel объект предоставляет больше функций, чем regress.

  • Используйте свойства LinearModel чтобы исследовать подобранную линейную регрессионую модель. Свойства объекта включают информацию о оценках коэффициентов, сводной статистике, методе аппроксимации и входных данных.

  • Используйте функции объекта LinearModel чтобы предсказать ответы и изменить, оценить и визуализировать линейную регрессионую модель.

  • В отличие от этого, regress, fitlm функция не требует столбца таковых во входных данных. Модель, созданная fitlm всегда включает термин точки пересечения, если вы не задаете, чтобы не включать его при помощи 'Intercept' аргумент пары "имя-значение".

  • Вы можете найти информацию в выходах regress использование свойств и функций объекта LinearModel.

    Выход regressЭквивалентные значения в LinearModel
    bСмотрите Estimate столбец Coefficients свойство.
    bintИспользуйте coefCI функция.
    rСмотрите Raw столбец Residuals свойство.
    rintНе поддерживается. Вместо этого используйте исследуемые невязки (Residuals свойство) и диагностика наблюдений (Diagnostics свойство), чтобы найти выбросы.
    statsСмотрите отображение модели в Командном окне. Вы можете найти статистику в свойствах модели (MSE и Rsquared) и при помощи anova функция.

Ссылки

[1] Chatterjee, S., and A. S. Hadi. «Влиятельные наблюдения, высокие точки использования и выбросы в линейной регрессии». Статистическая наука. Том 1, 1986, стр. 379-416.

Представлено до R2006a