Чтобы начать соответствовать регрессии, поместите свои данные в форму, которую ожидают подходящие функции. Все методы регрессии начинаются с входных данных в массиве 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
, подходящие функции принимают, что эти типы данных являются категориальными:
Логический вектор
Категориальный вектор
Массив символов
StringArray
Если вы хотите указать, что числовой предиктор является категориальным, используйте пару "имя-значение" 'Categorical'
.
Представляйте недостающие числовые данные как NaN
. Чтобы представлять недостающие данные для других типов данных, смотрите Значения Missing Group.
Создать массив набора данных из электронной таблицы 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 (p + 1) матричные условия определения в модели, где t является количеством условий, p, является количеством переменных прогноза и +1 счетом на переменную отклика. Значение T(i,j)
является экспонентой переменной j
в термине i
.
Например, предположите, что вход включает три переменные прогноза A
, B
, и C
и переменная отклика Y
в порядке A
, B
, C
и Y
. Каждая строка T
представляет один термин:
[0 0 0 0]
— Постоянный термин или прерывание
[0 1 0 0]
— B;
эквивалентно, A^0 * B^1 * C^0
[1 0 1 0]
— A*C
[2 0 0 0]
— A^2
[0 1 2 0]
— B*(C^2)
0
в конце каждого термина представляет переменную отклика. В целом вектор-столбец из нулей в матрице условий представляет положение переменной отклика. Если у вас есть переменные прогноза и переменные отклика в матрице и вектор-столбце, то необходимо включать 0
для переменной отклика в последнем столбце каждой строки.
Формула для образцовой спецификации является вектором символов или скаляром строки формы
,'Y ~ terms'
Y
является именем ответа.
terms
содержит
Имена переменных
+
, чтобы включать следующую переменную
-
, чтобы исключить следующую переменную
:
, чтобы задать взаимодействие, продукт условий
*
, чтобы задать взаимодействие и все условия более низкоуровневые
^
, чтобы возвести предиктор в степень, точно как в повторенном *
, таким образом, ^
включает условия более низкоуровневые также
()
, чтобы сгруппировать условия
Формулы включают константу (прерывание) термин по умолчанию. Чтобы исключить постоянный термин из модели, включайте -1
в формулу.
Примеры:
'Y ~ A + B + C'
является линейной моделью с тремя переменными с прерыванием.
'Y ~ A + B + C - 1'
является линейной моделью с тремя переменными без прерывания.
'Y ~ A + B + C + B^2'
является моделью с тремя переменными с прерыванием и термином B^2
.
'Y ~ A + B^2 + C'
совпадает с предыдущим примером, поскольку B^2
включает термин B
.
'Y ~ A + B + C + A:B'
включает термин A*B
.
'Y ~ A*B + C'
совпадает с предыдущим примером, начиная с A*B = A + B + A:B
.
'Y ~ A*B*C - A:B:C'
имеет все взаимодействия среди A
, B
и C
, кроме взаимодействия с тремя путями.
'Y ~ A*(B + C + D)'
имеет все линейные члены плюс продукты A
с каждой из других переменных.
Например, чтобы задать модель взаимодействия использование 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
, таком как набор '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
.
pValue
для (Intercept)
, x2
и x4
намного больше, чем 0,01. Эти три предиктора не использовались, чтобы создать данные об ответе y
.
Отображение содержит , настроенный , и статистика F.
АНОВА
Чтобы исследовать качество подобранной модели, консультируйтесь с таблицей АНОВОЙ. Например, используйте 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
от приблизительно 2 500 - 4 732 понижает 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
в полной модели. Предиктор Weight^2
только по ребру значения (pValue
<0.05), как вы видите в содействующем табличном отображении. Вы видите это в графике также. Доверительные границы похожи, они не могли содержать горизонтальную строку (постоянный y
), таким образом, нулевая наклонная модель не сопоставима с данными.
Создайте добавленный переменный график для модели в целом.
plotAdded(mdl)
Модель в целом является очень значительной, таким образом, границы не близко подходят содержащий горизонтальную строку. Наклон строки является наклоном подгонки к предикторам, спроектированным на их направление оптимальной подгонки, или другими словами, норма вектора коэффициентов.
Измените модели
Существует два способа изменить модель:
шаг
Добавьте или вычтите условия по одному, где step
выбирает самый важный термин, чтобы добавить или удалить.
addTerms
и removeTerms
— Добавьте или удалите заданные условия. Дайте условия в любой из форм, описанных в, Выбирают 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
.
Объект LinearModel
предлагает три функции, чтобы предсказать или моделировать ответ на новые данные: predict
, feval
и random
.
предсказать
Используйте функцию predict
, чтобы предсказать и получить доверительные интервалы на прогнозах.
Загрузите данные carbig
и создайте линейную модель по умолчанию ответа MPG
к Acceleration
, Displacement
, Horsepower
и предикторам Weight
.
load carbig
X = [Acceleration,Displacement,Horsepower,Weight];
mdl = fitlm(X,MPG);
Создайте три массива строк предикторов от минимальных, средних, и максимальных значений. X
содержит некоторые значения NaN
, таким образом используйте функции, которые игнорируют значения NaN
.
Xnew = [nanmin(X);nanmean(X);nanmax(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,nanmean(Acceleration),nanmean(Displacement),nanmean(Horsepower),nanmean(Weight))
NewMPG = 23.4078
случайный
Используйте функцию random
, чтобы моделировать ответы. Функция random
моделирует новые случайные значения ответа, равные среднему прогнозу плюс случайное воздействие с тем же отклонением как данные тренировки.
Загрузите данные carbig
и создайте линейную модель по умолчанию ответа MPG
к Acceleration
, Displacement
, Horsepower
и предикторам Weight
.
load carbig
X = [Acceleration,Displacement,Horsepower,Weight];
mdl = fitlm(X,MPG);
Создайте три массива строк предикторов от минимальных, средних, и максимальных значений.
Xnew = [nanmin(X);nanmean(X);nanmax(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 array
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
LinearModel
| anova
| fitlm
| lasso
| plotResiduals
| predict
| sequentialfs
| stepwiselm