Чтобы начать подгонку регрессии, поместите свои данные в форму, которую ожидают функции аппроксимации. Все методы регрессии начинаются с входных данных в массиве X
и данные отклика в отдельном векторе y
, или входные данные в таблице или массиве набора данных tbl
и данные отклика в виде столбца в tbl
. Каждая строка входных данных представляет одно наблюдение. Каждый столбец представляет один предиктор (переменную).
Для таблицы или массива набора данных tbl
, укажите переменную отклика с 'ResponseVar'
Пара "имя-значение":
mdl = fitlm(tbl,'ResponseVar','BloodPressure');
Переменная отклика по умолчанию является последним столбцом.
Можно использовать числовые предикторы categorical. Категориальный предиктор является таким, который принимает значения из фиксированного набора возможностей.
Для числового X
массива, укажите категориальные предикторы, использующие
'Categorical'
Пара "имя-значение". Для примера указать, что предикторы 2
и 3
из шести категоричны:
mdl = fitlm(X,y,'Categorical',[2,3]); % or equivalently mdl = fitlm(X,y,'Categorical',logical([0 1 1 0 0 0]));
Для таблицы или массива набора данных tbl
функции аппроксимации предполагают, что эти типы данных категориальны:
Логический вектор
Категориальный вектор
Символьный массив
Строковые массивы
Если вы хотите указать, что числовой предиктор категориален, используйте 'Categorical'
Пара "имя-значение".
Представьте отсутствующие числовые данные как NaN
. Представление отсутствующих данных для других типов данных смотрите в Отсутствующие значения группы.
Чтобы создать массив набора данных из Excel® электронная таблица:
ds = dataset('XLSFile','hospital.xls', ... 'ReadObsNames',true);
Чтобы создать массив набора данных из переменных рабочей области:
load carsmall
ds = dataset(MPG,Weight);
ds.Year = categorical(Model_Year);
Чтобы создать таблицу из электронной таблицы Excel, выполните следующие действия.
tbl = readtable('hospital.xls', ... 'ReadRowNames',true);
Чтобы создать таблицу из переменных рабочей области:
load carsmall
tbl = table(MPG,Weight);
tbl.Year = categorical(Model_Year);
Например, чтобы создать числовые массивы из переменных рабочей области:
load carsmall
X = [Weight Horsepower Cylinders Model_Year];
y = MPG;
Чтобы создать числовые массивы из электронной таблицы Excel:
[X, Xnames] = xlsread('hospital.xls'); y = X(:,4); % response y is systolic pressure X(:,4) = []; % remove y from the X matrix
Заметьте, что нечисловые значения, такие как sex
, не появляться в X
.
Существует три способа подгонки модели к данным:
Использовать fitlm
чтобы создать аппроксимацию модели к данным методом наименьших квадратов. Этот метод лучше всего, когда вы достаточно уверены в форме модели, и в основном должны найти ее параметры. Этот метод также полезен, когда вы хотите исследовать несколько моделей. Метод требует, чтобы вы исследовали данные вручную, чтобы сбросить выбросы, хотя существуют методы, которые могут помочь (см. «Исследование качества» и «Настройка подобранной модели»).
Использовать fitlm
с RobustOpts
Пара "имя-значение" создать модель, которая мало зависит от выбросов. Устойчивый подбор кривой спасает вас от проблемы вручную отбросить выбросы. Однако, step
не работает с устойчивым подбором кривой. Это означает, что, когда вы используете устойчивый подбор кривой, вы не можете пошагово искать хорошую модель.
Использовать stepwiselm
для поиска модели и подгонки параметров к модели. stepwiselm
начинается с одной модели, такой как константа, и складывает или вычитает условия по одному, выбирая оптимальный термин каждый раз жадным способом, пока он не может улучшиться дальше. Используйте пошаговую аппроксимацию, чтобы найти хорошую модель, которая имеет только релевантные условия.
Результат зависит от стартовой модели. Обычно, начиная с постоянной модели, приводит к небольшой модели. Начиная с большего количества членов может привести к более сложной модели, но той, которая имеет более низкую среднюю квадратичную невязку. См. Сравнение больших и малых ступенчатых моделей.
Вы не можете использовать устойчивые опции наряду с пошаговым подбором кривой. Поэтому после ступенчатой подгонки исследуйте свою модель на выбросы (см. «Исследование качества» и «Настройка подобранной модели»).
Существует несколько способов задать модель для линейной регрессии. Используйте то, что вы найдете наиболее удобным.
Для fitlm
, заданная вами спецификация модели является подобранной моделью. Если вы не даете спецификацию модели, по умолчанию это 'linear'
.
Для stepwiselm
, заданная вами спецификация модели является стартовой моделью, которую пошаговая процедура пытается улучшить. Если вы не даете спецификацию модели, начальная модель по умолчанию 'constant'
, и верхняя ограничивающая модель по умолчанию является 'interactions'
. Измените верхнюю ограничивающую модель с помощью Upper
Пара "имя-значение".
Примечание
Существуют другие способы выбора моделей, такие как использование lasso
, lassoglm
, sequentialfs
, или plsregress
.
Имя | Тип модели |
---|---|
'constant' | Модель содержит только постоянный (перехват) термин. |
'linear' | Модель содержит точку пересечения и линейные условия для каждого предиктора. |
'interactions' | Модель содержит точку пересечения, линейные условия и все продукты пар различных предикторов (без квадратов членов). |
'purequadratic' | Модель содержит точку пересечения, линейные условия и квадратные условия. |
'quadratic' | Модель содержит точку пересечения, линейные условия, взаимодействия и квадратные условия. |
' | Модель является полиномом со всеми терминами до степени i в первом предикторе, степень j во втором предикторе и т.д. Используйте цифры 0 через 9 . Для примера, 'poly2111' имеет константу плюс все линейные и условия продукта, а также содержит условия с предиктором 1 в квадрате. |
Для примера задать модель взаимодействия используя fitlm
с матричными предикторами:
mdl = fitlm(X,y,'interactions');
Чтобы задать модель, используя stepwiselm
и массив таблицы или набора данных tbl
предикторов, предположим, что вы хотите начать с константы и иметь линейную модель верхней границы. Предположим, что переменная отклика в tbl
находится в третьем столбце.
mdl2 = stepwiselm(tbl,'constant', ... 'Upper','linear','ResponseVar',3);
Матрица терминов T
является t -by- (p + 1) матрицей, задающей условия в модели, где t - количество членов, p - количество переменных предиктора, и + 1 учитывает переменную отклика. Значение T(i,j)
- экспонента переменной j
в терминах i
.
Например, предположим, что вход включает три переменные предиктора x1
, x2
, и x3
и переменной отклика y
в порядке x1
, x2
, x3
, и y
. Каждая строка T
представляет собой один термин:
[0 0 0 0]
- Постоянный срок или точка пересечения
[0 1 0 0]
— x2
; эквивалентно x1^0 * x2^1 * x3^0
[1 0 1 0]
— x1*x3
[2 0 0 0]
— x1^2
[0 1 2 0]
— x2*(x3^2)
The 0
в конце каждого термина представляет переменную отклика. В целом векторе-столбце из нулей в матрице терминов представляет положение переменной отклика. Если у вас есть переменные предиктора и отклика в матрице и векторе-столбце, то вы должны включать 0
для переменной отклика в последнем столбце каждой строки.
Формула для спецификации модели является вектором символов или строковым скаляром вида
'
,y
~ <reservedrangesplaceholder0>
'
y
- имя отклика.
terms
содержит
Имена переменных
+
чтобы включить следующую переменную
-
чтобы исключить следующую переменную
:
для определения взаимодействия, продукта терминов
*
для определения взаимодействия и всех членов более низкого порядка
^
поднять предиктор в степень, точно как в *
повторяется, так ^
включает также условия более низкого порядка
()
к групповым терминам
Совет
Формулы включают постоянный (перехват) термин по умолчанию. Чтобы исключить постоянный термин из модели, включите -1
в формуле.
Примеры:
'y ~ x1 + x2 + x3'
является линейной моделью с тремя переменными с точкой пересечения.
'y ~ x1 + x2 + x3 - 1'
является линейной моделью с тремя переменными без точки пересечения.
'y ~ x1 + x2 + x3 + x2^2'
является моделью с тремя переменными с точкой пересечения и x2^2
срок.
'y ~ x1 + x2^2 + x3'
является тем же самым, что и в предыдущем примере, поскольку x2^2
включает в себя x2
срок.
'y ~ x1 + x2 + x3 + x1:x2'
включает в себя x1*x2
срок.
'y ~ x1*x2 + x3'
является тем же самым, что и в предыдущем примере, поскольку x1*x2 = x1 + x2 + x1:x2
.
'y ~ x1*x2*x3 - x1:x2:x3'
имеет все взаимодействия между x1
, x2
, и x3
, кроме трехстороннего взаимодействия.
'y ~ x1*(x2 + x3 + x4)'
имеет все линейные условия, плюс продукты x1
с каждой из других переменных.
Для примера задать модель взаимодействия используя fitlm
с матричными предикторами:
mdl = fitlm(X,y,'y ~ x1*x2*x3 - x1:x2:x3');
Чтобы задать модель, используя stepwiselm
и массив таблицы или набора данных tbl
предикторов, предположим, что вы хотите начать с константы и иметь линейную модель верхней границы. Предположим, что переменная отклика в tbl
называется 'y'
, и переменные предиктора имеют имена 'x1'
, 'x2'
, и 'x3'
.
mdl2 = stepwiselm(tbl,'y ~ 1','Upper','y ~ x1 + x2 + x3');
Наиболее распространенные необязательные аргументы для подбора кривой:
Для устойчивой регрессии в fitlm
, установите 'RobustOpts'
Пара "имя-значение" с 'on'
.
Задайте соответствующую верхнюю связанную модель в stepwiselm
, таких как set 'Upper'
на 'linear'
.
Укажите, какие переменные являются категориальными, используя 'CategoricalVars'
Пара "имя-значение". Укажите вектор с номерами столбцов, такими как [1 6]
чтобы указать, что предикторы 1
и 6
являются категориальными. Кроме того, дайте логическому вектору ту же длину, что и столбцам данных, со 1
запись, указывающая, что переменная категориальна. Если предикторов семь, и предикторов 1
и 6
категориальны, задайте logical([1,0,0,0,0,1,0])
.
Для таблицы или массива набора данных задайте переменную отклика с помощью 'ResponseVar'
Пара "имя-значение". По умолчанию это последний столбец массива.
Для примера,
mdl = fitlm(X,y,'linear', ... 'RobustOpts','on','CategoricalVars',3); mdl2 = stepwiselm(tbl,'constant', ... 'ResponseVar','MPG','Upper','quadratic');
После подбора кривой модели исследуйте результат и внесите корректировки.
Отображение модели
Линейная регрессионая модель показывает несколько диагностик, когда вы вводите его имя или вводите disp(mdl)
. Это отображение даёт некоторую базовую информацию, чтобы проверить, представляет ли подобранная модель данные адекватно.
Для примера подбирайте линейную модель к данным, построенным с двумя из пяти предикторов, которые не присутствуют, и без точки пересечения термина:
X = randn(100,5); y = X*[1;0;3;0;-1] + randn(100,1); mdl = fitlm(X,y)
mdl = Linear regression model: y ~ 1 + x1 + x2 + x3 + x4 + x5 Estimated Coefficients: Estimate SE tStat pValue _________ ________ ________ __________ (Intercept) 0.038164 0.099458 0.38372 0.70205 x1 0.92794 0.087307 10.628 8.5494e-18 x2 -0.075593 0.10044 -0.75264 0.45355 x3 2.8965 0.099879 29 1.1117e-48 x4 0.045311 0.10832 0.41831 0.67667 x5 -0.99708 0.11799 -8.4504 3.593e-13 Number of observations: 100, Error degrees of freedom: 94 Root Mean Squared Error: 0.972 R-squared: 0.93, Adjusted R-Squared: 0.926 F-statistic vs. constant model: 248, p-value = 1.5e-52
Заметьте, что:
Отображение содержит оценочные значения каждого коэффициента в Estimate
столбец. Эти значения достаточно близки к истинным значениям [0;1;0;3;0;-1]
.
Существует стандартный столбец ошибок для оценок коэффициентов.
Отчетная pValue
(которые получают из статистики t (tStat
) при допущении нормальных ошибок) для предикторов 1, 3 и 5 чрезвычайно малы. Это три предиктора, которые использовались для создания данных отклика y
.
The pValue
для (Intercept)
, x2
и x4
намного больше 0,01. Эти три предиктора не использовались для создания данных отклика y
.
Отображение содержит , скорректированный , и F статистики.
ДИСПЕРСИОННЫЙ АНАЛИЗ
Чтобы изучить качество подобранной модели, смотрите таблицу ANOVA. Для примера используйте anova
на линейной модели с пятью предикторами:
tbl = anova(mdl)
tbl=6×5 table
SumSq DF MeanSq F pValue
_______ __ _______ _______ __________
x1 106.62 1 106.62 112.96 8.5494e-18
x2 0.53464 1 0.53464 0.56646 0.45355
x3 793.74 1 793.74 840.98 1.1117e-48
x4 0.16515 1 0.16515 0.17498 0.67667
x5 67.398 1 67.398 71.41 3.593e-13
Error 88.719 94 0.94382
Эта таблица дает несколько другие результаты, чем отображение модели. Таблица четко показывает, что эффекты x2
и x4
не являются значимыми. В зависимости от ваших целей, рассмотрите удаление x2
и x4
из модели.
Диагностические графики
Диагностические графики помогают вам идентифицировать выбросы и увидеть другие проблемы в вашей модели или подгонке. Для примера загрузите carsmall
данных и сделать модель MPG
как функцию Cylinders
(категориальный) и Weight
:
load carsmall tbl = table(Weight,MPG,Cylinders); tbl.Cylinders = categorical(tbl.Cylinders); mdl = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2');
Создайте график рычагов данных и модели.
plotDiagnostics(mdl)
Есть несколько точки с высоким плечом. Но этот график не показывает, являются ли точки высокого рычага выбросами.
Ищите точки с большим расстоянием Кука.
plotDiagnostics(mdl,'cookd')
Есть одна точка с большим расстоянием Кука. Идентифицируйте его и удалите из модели. Можно использовать Data Cursor, чтобы кликнуть выбросы и идентифицировать его, или программно идентифицировать его:
[~,larg] = max(mdl.Diagnostics.CooksDistance); mdl2 = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2','Exclude',larg);
Невязки - Моделирование качества для обучающих данных
Существует несколько остаточных графиков, которые помогут вам обнаружить ошибки, выбросы или корреляции в модели или данных. Простейшие остаточные графики являются графиком гистограммы по умолчанию, который показывает область значений невязок и их частот, и графиком вероятностей, который показывает, как распределение невязок сравнивается с нормальным распределением с совпадающим отклонением.
Исследуйте невязки:
plotResiduals(mdl)
Наблюдения выше 12 являются потенциальными выбросами.
plotResiduals(mdl,'probability')
Два потенциальных выброса также появляются на этом графике. В противном случае график вероятностей кажется достаточно прямым, что означает разумную подгонку к нормально распределенным невязкам.
Можно идентифицировать два выброса и удалить их из данных:
outl = find(mdl.Residuals.Raw > 12)
outl = 2×1
90
97
Чтобы удалить выбросы, используйте Exclude
Пара "имя-значение":
mdl3 = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2','Exclude',outl);
Исследуйте график невязок mdl2:
plotResiduals(mdl3)
Новые невязки графика выглядят довольно симметрично, без явных проблем. Однако может быть некоторая последовательная корреляция среди невязок. Создайте новый график, чтобы увидеть, существует ли такой эффект.
plotResiduals(mdl3,'lagged')
График поля точек показывает гораздо больше крестов в верхнем правом и нижнем левом квадрантах, чем в двух других квадрантах, что указывает на положительную последовательную корреляцию среди невязок.
Другой потенциальной проблемой является то, когда невязки большие для больших наблюдений. Посмотрите, есть ли у текущей модели эта проблема.
plotResiduals(mdl3,'fitted')
Существует некоторая тенденция к тому, что большие установленные значения имеют большие невязки. Возможно, ошибки модели пропорциональны измеренным значениям.
Графики, чтобы понять эффекты предиктора
Этот пример показывает, как понять эффект каждый предиктор оказывает на регрессионую модель, используя множество доступных графиков.
Исследуйте график среза откликов. Это отображает эффект каждого предиктора отдельно.
plotSlice(mdl)
Можно перетащить отдельные значения предиктора, которые представлены штриховыми синими вертикальными линиями. Можно также выбрать между одновременными и не одновременными доверительными границами, которые представлены штриховыми красными кривыми.
Используйте график эффектов, чтобы показать другое представление влияния предикторов на ответ.
plotEffects(mdl)
Этот график показывает, что изменение Weight
примерно с 2500 до 4732 понижает MPG
примерно на 30 (расположение верхнего синего круга). Это также показывает, что изменение количества цилиндров с 8 до 4 повышает MPG
примерно на 10 (нижний синий круг). Горизонтальные синие линии представляют доверительные интервалы для этих предсказаний. Предсказания происходят от усреднения по одному предиктору, когда другой изменяется. В таких случаях, когда два предиктора коррелируют, будьте осторожны при интерпретации результатов.
Вместо просмотра эффекта усреднения по предиктору, поскольку другое изменено, исследуйте взаимодействие соединений на графике взаимодействия.
plotInteraction(mdl,'Weight','Cylinders')
График взаимодействия показывает эффект изменения одного предиктора с другим сохраненным фиксированным. В этом случае график намного познавательнее. Это показывает, например, что уменьшение количества цилиндров в относительно легком автомобиле (Weight
= 1795) приводит к увеличению пробега, но снижению количества цилиндров в относительно тяжелом автомобиле (Weight
= 4732) приводит к уменьшению пробега.
Для еще более подробного просмотра взаимодействий посмотрите на график взаимодействия с предсказаниями. Этот график содержит один предиктор, фиксированный при изменении другого, и строит график эффекта как кривая. Проверьте взаимодействие для различных фиксированных количеств цилиндров.
plotInteraction(mdl,'Cylinders','Weight','predictions')
Теперь посмотрите на взаимодействия с различными фиксированными уровнями веса.
plotInteraction(mdl,'Weight','Cylinders','predictions')
Графики, чтобы понять термины эффекты
Этот пример показывает, как понять эффект каждого термина в регрессионой модели с помощью множества доступных графиков.
Создайте добавленный график переменной с Weight^2
как добавленная переменная.
plotAdded(mdl,'Weight^2')
Этот график показывает результаты подбора кривой обоих Weight^2
и MPG
к терминам, отличным от Weight^2
. Причина использования plotAdded
понять, какое дополнительное улучшение в модели вы получаете путем добавления Weight^2
. Коэффициент линии, подгоняемый к этим точкам, является коэффициентом Weight^2
в полной модели. The Weight^2
предиктор находится чуть выше ребра значимости (pValue
< 0,05), как вы можете видеть в таблице коэффициентов отображения. Это видно и на графике. Доверительные границы выглядят так, будто они не могут содержать горизонтальную линию (константу y
), поэтому модель с нулевым уклоном не согласуется с данными.
Создайте добавленный график переменной для модели в целом.
plotAdded(mdl)
Модель в целом очень значима, поэтому границы не приближаются к содержанию горизонтальной линии. Наклон линии является наклоном подгонки предикторам, проецируемым на их наиболее подходящее направление, или другими словами, нормой вектора коэффициента.
Изменение моделей
Существует два способа изменить модель:
step
- Добавляйте или вычитайте термины по одному за раз, где step
выбирает наиболее важный термин для добавления или удаления.
addTerms
и removeTerms
- Добавить или удалить указанные условия. Приведите термины в любой из форм, описанных в Choose a Model или Range of Models.
Если вы создали модель с помощью stepwiselm
, затем step
может иметь эффект, только если вы даете различные верхние или более низкие модели. step
не работает, когда вы подбираете модель используя RobustOpts
.
Например, начните с линейной модели пробега от carbig
данные:
load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG')
mdl = Linear regression model: MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight Estimated Coefficients: Estimate SE tStat pValue __________ __________ ________ __________ (Intercept) 45.251 2.456 18.424 7.0721e-55 Acceleration -0.023148 0.1256 -0.1843 0.85388 Displacement -0.0060009 0.0067093 -0.89441 0.37166 Horsepower -0.043608 0.016573 -2.6312 0.008849 Weight -0.0052805 0.00081085 -6.5123 2.3025e-10 Number of observations: 392, Error degrees of freedom: 387 Root Mean Squared Error: 4.25 R-squared: 0.707, Adjusted R-Squared: 0.704 F-statistic vs. constant model: 233, p-value = 9.63e-102
Постарайтесь улучшить модель с помощью шага до 10 шагов:
mdl1 = step(mdl,'NSteps',10)
1. Adding Displacement:Horsepower, FStat = 87.4802, pValue = 7.05273e-19
mdl1 = Linear regression model: MPG ~ 1 + Acceleration + Weight + Displacement*Horsepower Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 61.285 2.8052 21.847 1.8593e-69 Acceleration -0.34401 0.11862 -2.9 0.0039445 Displacement -0.081198 0.010071 -8.0623 9.5014e-15 Horsepower -0.24313 0.026068 -9.3265 8.6556e-19 Weight -0.0014367 0.00084041 -1.7095 0.088166 Displacement:Horsepower 0.00054236 5.7987e-05 9.3531 7.0527e-19 Number of observations: 392, Error degrees of freedom: 386 Root Mean Squared Error: 3.84 R-squared: 0.761, Adjusted R-Squared: 0.758 F-statistic vs. constant model: 246, p-value = 1.32e-117
step
остановился только после одной смены.
Чтобы попытаться упростить модель, удалите Acceleration
и Weight
условия из mdl1
:
mdl2 = removeTerms(mdl1,'Acceleration + Weight')
mdl2 = Linear regression model: MPG ~ 1 + Displacement*Horsepower Estimated Coefficients: Estimate SE tStat pValue __________ _________ _______ ___________ (Intercept) 53.051 1.526 34.765 3.0201e-121 Displacement -0.098046 0.0066817 -14.674 4.3203e-39 Horsepower -0.23434 0.019593 -11.96 2.8024e-28 Displacement:Horsepower 0.00058278 5.193e-05 11.222 1.6816e-25 Number of observations: 392, Error degrees of freedom: 388 Root Mean Squared Error: 3.94 R-squared: 0.747, Adjusted R-Squared: 0.745 F-statistic vs. constant model: 381, p-value = 3e-115
mdl2
использует просто Displacement
и Horsepower
, и имеет почти такую же хорошую подгонку к данным, как mdl1
в Adjusted R-Squared
метрический.
A LinearModel
объект предлагает три функции для предсказания или симуляции отклика на новые данные: predict
, feval
, и random
.
predict
Используйте predict
функция для предсказания и получения доверительных интервалов на предсказаниях.
Загрузите carbig
Данные и создайте линейную модель отклика по умолчанию MPG
на Acceleration
, Displacement
, Horsepower
, и Weight
предикторы.
load carbig
X = [Acceleration,Displacement,Horsepower,Weight];
mdl = fitlm(X,MPG);
Создайте трехрядный массив предикторов из минимальных, средних и максимальных значений. X
содержит некоторые NaN
значения, поэтому задайте 'omitnan'
опция для mean
функция. The min
и max
функции опускаются NaN
значения в вычислении по умолчанию.
Xnew = [min(X);mean(X,'omitnan');max(X)];
Найдите предсказанные ответы модели и доверительные интервалы на предсказаниях.
[NewMPG, NewMPGCI] = predict(mdl,Xnew)
NewMPG = 3×1
34.1345
23.4078
4.7751
NewMPGCI = 3×2
31.6115 36.6575
22.9859 23.8298
0.6134 8.9367
Доверительная граница среднего отклика уже, чем для минимальных или максимальных откликов.
feval
Используйте feval
функция для предсказания ответов. Когда вы создаете модель из таблицы или массива набора данных, feval
часто удобнее, чем predict
для предсказания ответов. Когда у вас есть новые данные предиктора, вы можете передать его feval
без создания таблицы или матрицы. Однако feval
не обеспечивает доверительных границ.
Загрузите carbig
Данные установите и создайте линейную модель отклика по умолчанию MPG
к предикторам Acceleration
, Displacement
, Horsepower
, и Weight
.
load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG');
Спрогнозируйте ответ модели для средних значений предикторов.
NewMPG = feval(mdl,mean(Acceleration,'omitnan'),mean(Displacement,'omitnan'),mean(Horsepower,'omitnan'),mean(Weight,'omitnan'))
NewMPG = 23.4078
random
Используйте random
функция для симуляции откликов. The random
функция симулирует новые случайные значения отклика, равные среднему предсказанию плюс случайное нарушение порядка с тем же отклонением, что и обучающие данные.
Загрузите carbig
Данные и создайте линейную модель отклика по умолчанию MPG
на Acceleration
, Displacement
, Horsepower
, и Weight
предикторы.
load carbig
X = [Acceleration,Displacement,Horsepower,Weight];
mdl = fitlm(X,MPG);
Создайте трехрядный массив предикторов из минимальных, средних и максимальных значений.
Xnew = [min(X);mean(X,'omitnan');max(X)];
Сгенерируйте новые предсказанные ответы модели, включая некоторую случайность.
rng('default') % for reproducibility NewMPG = random(mdl,Xnew)
NewMPG = 3×1
36.4178
31.1958
-4.8176
Потому что отрицательное значение MPG
не кажется разумным, попробуйте предсказать еще два раза.
NewMPG = random(mdl,Xnew)
NewMPG = 3×1
37.7959
24.7615
-0.7783
NewMPG = random(mdl,Xnew)
NewMPG = 3×1
32.2931
24.8628
19.9715
Ясно, что предсказания для третьей (максимальной) строки Xnew
не являются надежными.
Предположим, что у вас есть линейная регрессионая модель, такая как mdl
из следующих команд.
load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG');
Чтобы поделиться моделью с другими людьми, можно:
Предоставьте отображение модели.
mdl
mdl = Linear regression model: MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight Estimated Coefficients: Estimate SE tStat pValue __________ __________ ________ __________ (Intercept) 45.251 2.456 18.424 7.0721e-55 Acceleration -0.023148 0.1256 -0.1843 0.85388 Displacement -0.0060009 0.0067093 -0.89441 0.37166 Horsepower -0.043608 0.016573 -2.6312 0.008849 Weight -0.0052805 0.00081085 -6.5123 2.3025e-10 Number of observations: 392, Error degrees of freedom: 387 Root Mean Squared Error: 4.25 R-squared: 0.707, Adjusted R-Squared: 0.704 F-statistic vs. constant model: 233, p-value = 9.63e-102
Предоставьте определение модели и коэффициенты.
mdl.Formula
ans = MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight
mdl.CoefficientNames
ans = 1x5 cell
Columns 1 through 4
{'(Intercept)'} {'Acceleration'} {'Displacement'} {'Horsepower'}
Column 5
{'Weight'}
mdl.Coefficients.Estimate
ans = 5×1
45.2511
-0.0231
-0.0060
-0.0436
-0.0053
anova
| fitlm
| lasso
| LinearModel
| plotResiduals
| predict
| sequentialfs
| stepwiselm