Чтобы начать соответствовать регрессии, поместите свои данные в форму, которую ожидают подходящие функции. Все методы регрессии начинаются с входных данных в массиве 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
. Чтобы представлять недостающие данные для других типов данных, смотрите Значения 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' | Модель содержит прерывание, линейные члены, взаимодействия, и придает условиям квадратную форму. |
'poly | Модель является полиномом со всеми условиями до степени 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. Например, используйте 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
— Добавьте или вычтите условия по одному, где 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
Используйте 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
функция, чтобы симулировать ответы. 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
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