Чтобы начать подгонку регрессии, поместите данные в форму, ожидаемую для подгонки функций. Все методы регрессии начинаются с входных данных в массиве X и данные ответа в отдельном векторе yили входные данные в таблице или массиве наборов данных tbl и данные ответа в виде столбца в tbl. Каждая строка входных данных представляет одно наблюдение. Каждый столбец представляет один предиктор (переменную).
Для таблицы или массива наборов данных tbl, укажите переменную ответа с помощью 'ResponseVar' пара имя-значение:
mdl = fitlm(tbl,'ResponseVar','BloodPressure');
Переменная ответа является последним столбцом по умолчанию.
Можно использовать числовые категориальные предикторы. Категориальный предиктор - это тот, который берет значения из фиксированного набора возможностей.
Для числового массива 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' | Модель содержит пересечение, линейные элементы, взаимодействия и квадратные элементы. |
'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-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)
0 в конце каждого члена представляет переменную ответа. В общем случае вектор-столбец нулей в матрице членов представляет положение переменной отклика. Если в матрице и векторе столбца имеются переменные предиктора и отклика, то необходимо включить 0 для переменной ответа в последнем столбце каждой строки.
Формула для спецификации модели - это вектор символов или строковый скаляр формы
',y ~ terms'
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.
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')
Есть одна точка с большим расстоянием Кука. Определите его и удалите из модели. Курсор данных можно использовать для щелчка по отклонению и идентификации его или для программной идентификации:
[~,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 в полной модели. Weight^2 предиктор находится чуть выше края значимости (pValue < 0,05), как видно из таблицы коэффициентов. Вы также можете видеть это на графике. Доверительные границы выглядят так, будто они не могут содержать горизонтальную линию (константа y), поэтому модель с нулевым наклоном не согласуется с данными.
Создайте график добавленной переменной для модели в целом.
plotAdded(mdl)

Модель в целом очень значима, поэтому границы не приближаются к содержанию горизонтальной линии. Наклон линии - это наклон посадки к предикторам, проецируемым на их наиболее подходящее направление, или, другими словами, норма вектора коэффициентов.
Изменить модели
Существует два способа изменения модели:
step - Добавлять или вычитать термины по одному, где step выбирает наиболее важный термин для добавления или удаления.
addTerms и removeTerms - Добавление или удаление указанных терминов. Введите термины в любой из форм, описанных в разделе Выбор модели или диапазона моделей.
При создании модели с использованием 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 функция. 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 для моделирования ответов. 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