Подбор линейной регрессионой модели
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Для примера можно задать, какие переменные являются категориальными, выполнить устойчивую регрессию или использовать веса наблюдений.mdl
= fitlm(___,Name,Value
)
Подбор линейной регрессионой модели с помощью матричных входных данных множества.
Загрузите carsmall
набор данных, матричный набор входных данных.
load carsmall
X = [Weight,Horsepower,Acceleration];
Подбор линейной регрессионой модели при помощи fitlm
.
mdl = fitlm(X,MPG)
mdl = Linear regression model: y ~ 1 + x1 + x2 + x3 Estimated Coefficients: Estimate SE tStat pValue __________ _________ _________ __________ (Intercept) 47.977 3.8785 12.37 4.8957e-21 x1 -0.0065416 0.0011274 -5.8023 9.8742e-08 x2 -0.042943 0.024313 -1.7663 0.08078 x3 -0.011583 0.19333 -0.059913 0.95236 Number of observations: 93, Error degrees of freedom: 89 Root Mean Squared Error: 4.09 R-squared: 0.752, Adjusted R-Squared: 0.744 F-statistic vs. constant model: 90, p-value = 7.38e-27
Отображение модели включает формулу модели, оценочные коэффициенты и сводную статистику модели.
Формула модели на отображении, y ~ 1 + x1 + x2 + x3
, соответствует .
На отображении модели также показана информация об оцененном коэффициенте, которая сохранена в Coefficients
свойство. Отобразите Coefficients
свойство.
mdl.Coefficients
ans=4×4 table
Estimate SE tStat pValue
__________ _________ _________ __________
(Intercept) 47.977 3.8785 12.37 4.8957e-21
x1 -0.0065416 0.0011274 -5.8023 9.8742e-08
x2 -0.042943 0.024313 -1.7663 0.08078
x3 -0.011583 0.19333 -0.059913 0.95236
The Coefficient
свойство включает в себя следующие столбцы:
Estimate
- Оценки коэффициентов для каждого соответствующего члена в модели. Для примера - оценка для постоянного члена (intercept
) составляет 47,977.
SE
- Стандартная ошибка коэффициентов.
tStat
- t-статистическая для каждого коэффициента, чтобы проверить нулевую гипотезу о том, что соответствующий коэффициент равен нулю по сравнению с альтернативой, что он отличается от нуля, учитывая другие предикторы в модели. Обратите внимание, что tStat = Estimate/SE
. Для примера t-статистическая величина для точки пересечения составляет 47,977/3,8785 = 12,37.
pValue
- p-значение для t-статистики критерия гипотезы о том, что соответствующий коэффициент равен нулю или не равен. Например, p-значение t-статистики для x2
больше 0,05, поэтому этот термин не является значимым на уровне значимости 5%, учитывая другие членов в модели.
Сводная статистика модели:
Number of observations
- Количество строк без каких-либо NaN
значения. Для примера, Number of observations
93, потому что MPG
вектор данных имеет шесть NaN
значения и Horsepower
вектор данных имеет одно NaN
значение для другого наблюдения, где количество строк в X
и MPG
равен 100.
Error degrees of freedom
- n - p, где n - количество наблюдений, а p - количество коэффициентов в модели, включая точку пересечения. Для примера модель имеет четыре предиктора, поэтому Error degrees of freedom
93 - 4 = 89.
Root mean squared error
- Квадратный корень средней квадратичной невязки, который оценивает стандартное отклонение распределения ошибок.
R-squared
и Adjusted R-squared
- Коэффициент детерминации и скорректированный коэффициент детерминации, соответственно. Для примера, R-squared
значение предполагает, что модель объясняет приблизительно 75% изменчивости переменной отклика MPG
.
F-statistic vs. constant model
- Тестовая статистика для F-теста на регрессионой модели, которая проверяет, подходит ли модель значительно лучше, чем вырожденная модель, состоящая только из постоянного члена.
p-value
- p-значение для F-теста на модели. Для примера модель значима с p-значением 7.3816e-27.
Вы можете найти эту статистику в свойствах модели (NumObservations
, DFE
, RMSE
, и Rsquared
) и при помощи anova
функция.
anova(mdl,'summary')
ans=3×5 table
SumSq DF MeanSq F pValue
______ __ ______ ______ __________
Total 6004.8 92 65.269
Model 4516 3 1505.3 89.987 7.3816e-27
Residual 1488.8 89 16.728
Загрузите выборочные данные.
load carsmall
Сохраните переменные в таблице.
tbl = table(Weight,Acceleration,MPG,'VariableNames',{'Weight','Acceleration','MPG'});
Отображение первых пяти строк таблицы.
tbl(1:5,:)
ans=5×3 table
Weight Acceleration MPG
______ ____________ ___
3504 12 18
3693 11.5 15
3436 11 18
3433 12 16
3449 10.5 17
Подбор линейной регрессионой модели для миль на галлон (MPG). Задайте формулу модели при помощи обозначения Уилкинсона.
lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = Linear regression model: MPG ~ 1 + Weight + Acceleration Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 45.155 3.4659 13.028 1.6266e-22 Weight -0.0082475 0.00059836 -13.783 5.3165e-24 Acceleration 0.19694 0.14743 1.3359 0.18493 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 4.12 R-squared: 0.743, Adjusted R-Squared: 0.738 F-statistic vs. constant model: 132, p-value = 1.38e-27
Модель 'MPG~Weight+Acceleration'
в этом примере эквивалентно установке спецификации модели следующим 'linear'
. Для примера,
lm2 = fitlm(tbl,'linear');
Если вы используете вектор символов для спецификации модели и не задаете переменную отклика, то fitlm
принимает последнюю переменную в tbl
как переменная отклика, а другие переменные как переменные предиктора.
Подгонка линейной регрессионной модели с помощью формулы модели, заданной обозначением Уилкинсона.
Загрузите выборочные данные.
load carsmall
Сохраните переменные в таблице.
tbl = table(Weight,Acceleration,Model_Year,MPG,'VariableNames',{'Weight','Acceleration','Model_Year','MPG'});
Подбор линейной регрессионой модели для миль на галлон (MPG) с весом и ускорением в качестве переменных.
lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm = Linear regression model: MPG ~ 1 + Weight + Acceleration Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 45.155 3.4659 13.028 1.6266e-22 Weight -0.0082475 0.00059836 -13.783 5.3165e-24 Acceleration 0.19694 0.14743 1.3359 0.18493 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 4.12 R-squared: 0.743, Adjusted R-Squared: 0.738 F-statistic vs. constant model: 132, p-value = 1.38e-27
Значение p 0,18493 указывает, что Acceleration
не оказывает существенного влияния на MPG
.
Удаление Acceleration
из модели и попробуйте улучшить модель, добавив переменную предиктора Model_Year
. Сначала задайте Model_Year
как категориальная переменная.
tbl.Model_Year = categorical(tbl.Model_Year);
lm = fitlm(tbl,'MPG~Weight+Model_Year')
lm = Linear regression model: MPG ~ 1 + Weight + Model_Year Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 40.11 1.5418 26.016 1.2024e-43 Weight -0.0066475 0.00042802 -15.531 3.3639e-27 Model_Year_76 1.9291 0.74761 2.5804 0.011488 Model_Year_82 7.9093 0.84975 9.3078 7.8681e-15 Number of observations: 94, Error degrees of freedom: 90 Root Mean Squared Error: 2.92 R-squared: 0.873, Adjusted R-Squared: 0.868 F-statistic vs. constant model: 206, p-value = 3.83e-40
Определение modelspec
использование обозначения Уилкинсона позволяет вам обновить модель, не меняя матрицу проекта. fitlm
использует только переменные, заданные в формуле. Это также создает необходимые две фиктивные переменные индикатора для категориальной переменной Model_Year
.
Подбор линейной регрессионой модели с помощью матрицы терминов.
Матрица терминов для Таблицы Входа
Если переменные модели находятся в таблице, то столбец 0
s в терминовой матрице представляет положение переменной отклика.
Загрузите hospital
набор данных.
load hospital
Сохраните переменные в таблице.
t = table(hospital.Sex,hospital.BloodPressure(:,1),hospital.Age,hospital.Smoker, ... 'VariableNames',{'Sex','BloodPressure','Age','Smoker'});
Представление линейной модели 'BloodPressure ~ 1 + Sex + Age + Smoker'
использование матрицы терминов. Переменная отклика находится во втором столбце таблицы, поэтому второй столбец матрицы членов должен быть столбцом 0
s для переменной отклика.
T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
T = 4×4
0 0 0 0
1 0 0 0
0 0 1 0
0 0 0 1
Подбор линейной модели.
mdl1 = fitlm(t,T)
mdl1 = Linear regression model: BloodPressure ~ 1 + Sex + Age + Smoker Estimated Coefficients: Estimate SE tStat pValue ________ ________ ________ __________ (Intercept) 116.14 2.6107 44.485 7.1287e-66 Sex_Male 0.050106 0.98364 0.050939 0.95948 Age 0.085276 0.066945 1.2738 0.2058 Smoker_1 9.87 1.0346 9.5395 1.4516e-15 Number of observations: 100, Error degrees of freedom: 96 Root Mean Squared Error: 4.78 R-squared: 0.507, Adjusted R-Squared: 0.492 F-statistic vs. constant model: 33, p-value = 9.91e-15
Матрица терминов для матричного входа
Если переменные предиктора и отклика в матрице и векторе-столбце, то вы должны включать 0
для переменной отклика в конце каждой строки в матрице терминов.
Загрузите carsmall
набор данных и задайте матрицу предикторов.
load carsmall
X = [Acceleration,Weight];
Задайте модель 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2'
использование матрицы терминов. Эта модель включает основной эффект и условия двухстороннего взаимодействия для переменных Acceleration
и Weight
, и термин второго порядка для переменной Weight
.
T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
T = 5×3
0 0 0
1 0 0
0 1 0
1 1 0
0 2 0
Подбор линейной модели.
mdl2 = fitlm(X,MPG,T)
mdl2 = Linear regression model: y ~ 1 + x1*x2 + x2^2 Estimated Coefficients: Estimate SE tStat pValue ___________ __________ _______ __________ (Intercept) 48.906 12.589 3.8847 0.00019665 x1 0.54418 0.57125 0.95261 0.34337 x2 -0.012781 0.0060312 -2.1192 0.036857 x1:x2 -0.00010892 0.00017925 -0.6076 0.545 x2^2 9.7518e-07 7.5389e-07 1.2935 0.19917 Number of observations: 94, Error degrees of freedom: 89 Root Mean Squared Error: 4.1 R-squared: 0.751, Adjusted R-Squared: 0.739 F-statistic vs. constant model: 67, p-value = 4.99e-26
Только точка пересечения и x2
термин, который соответствует Weight
переменные, являются значимыми на уровне 5% значимости.
Подгонка линейной регрессионой модели, которая содержит категориальный предиктор. Переупорядочите категории категориального предиктора, чтобы контролировать уровень ссылки в модели. Затем используйте anova
для проверки значимости категориальной переменной.
Модель с категориальным предиктором
Загрузите carsmall
набор данных и создайте линейную регрессионую модель MPG
как функцию Model_Year
. Чтобы обработать числовой вектор Model_Year
как категориальная переменная идентифицируйте предиктор, используя 'CategoricalVars'
аргумент пары "имя-значение".
load carsmall mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = Linear regression model: MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ ______ ______ __________ (Intercept) 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 3.8839 1.4059 2.7625 0.0069402 Model_Year_82 14.02 1.4369 9.7571 8.2164e-16 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531, Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15
Формула модели на отображении, MPG ~ 1 + Model_Year
, соответствует
,
где и являются переменными индикатора, значение которых равно единице, если значение Model_Year
составляет 76 и 82, соответственно. The Model_Year
переменная включает три различных значения, которые можно проверить с помощью unique
функция.
unique(Model_Year)
ans = 3×1
70
76
82
fitlm
выбирает наименьшее значение в Model_Year
как уровень ссылки ('70'
) и создает две переменные индикатора и . Модель включает только две переменные индикатора, потому что матрица проекта становится дефицитной, если модель включает три переменные индикатора (по одной для каждого уровня) и член точки пересечения.
Модель с полными переменными индикатора
Можно интерпретировать формулу модели mdl
как модель, которая имеет три переменные индикатора без термина точки пересечения:
.
Кроме того, можно создать модель, которая имеет три переменные индикатора без термина точки пересечения, вручную создав переменные индикатора и задав формулу модели.
temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = Linear regression model: MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 Estimated Coefficients: Estimate SE tStat pValue ________ _______ ______ __________ Model_Year_70 17.69 1.0328 17.127 3.2371e-30 Model_Year_76 21.574 0.95387 22.617 4.0156e-39 Model_Year_82 31.71 0.99896 31.743 5.2234e-51 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56
Выберите ссылочный уровень в модели
Можно выбрать уровень ссылки путем изменения порядка категорий в категориальной переменной. Сначала создайте категориальную переменную Year
.
Year = categorical(Model_Year);
Проверьте порядок категорий при помощи categories
функция.
categories(Year)
ans = 3x1 cell
{'70'}
{'76'}
{'82'}
Если вы используете Year
как переменная предиктора, затем fitlm
выбирает первую категорию '70'
как уровень ссылки. Переупорядочить Year
при помощи reordercats
функция.
Year_reordered = reordercats(Year,{'76','70','82'}); categories(Year_reordered)
ans = 3x1 cell
{'76'}
{'70'}
{'82'}
Первая категория Year_reordered
является '76'
. Создайте линейную регрессионую модель MPG
как функцию Year_reordered
.
mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = Linear regression model: MPG ~ 1 + Model_Year Estimated Coefficients: Estimate SE tStat pValue ________ _______ _______ __________ (Intercept) 21.574 0.95387 22.617 4.0156e-39 Model_Year_70 -3.8839 1.4059 -2.7625 0.0069402 Model_Year_82 10.136 1.3812 7.3385 8.7634e-11 Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531, Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15
mdl2
использует '76'
как ссылка уровень и включает две переменные индикатора и .
Оценка категориального предиктора
Отображение модели mdl2
включает p-значение каждого члена для проверки, равен ли соответствующий коэффициент нулю. Каждое p-значение исследует каждую переменную индикатора. Чтобы изучить категориальную переменную Model_Year
в качестве группы индикаторных переменных используйте anova
. Используйте 'components'
(по умолчанию) опция для возврата таблицы ANOVA компонента, которая включает статистику Дисперсионный Анализ для каждой переменной в модели, кроме постоянного члена.
anova(mdl2,'components')
ans=2×5 table
SumSq DF MeanSq F pValue
______ __ ______ _____ __________
Model_Year 3190.1 2 1595.1 51.56 1.0694e-15
Error 2815.2 91 30.936
Дисперсионный Анализ компонента включает p-значение Model_Year
переменная, которая меньше, чем p-значения переменных индикатора.
Подбор линейной регрессионной модели к выборочным данным. Задайте переменные отклика и предиктора и включите только парные членов в модели взаимодействия.
Загрузите выборочные данные.
load hospital
Подбор линейной модели с терминами взаимодействия к данным. Укажите вес как переменную отклика, а пол, возраст и статус курения как переменные. Кроме того, укажите, что пол и статус курения являются категориальными переменными.
mdl = fitlm(hospital,'interactions','ResponseVar','Weight',... 'PredictorVars',{'Sex','Age','Smoker'},... 'CategoricalVar',{'Sex','Smoker'})
mdl = Linear regression model: Weight ~ 1 + Sex*Age + Sex*Smoker + Age*Smoker Estimated Coefficients: Estimate SE tStat pValue ________ _______ ________ __________ (Intercept) 118.7 7.0718 16.785 6.821e-30 Sex_Male 68.336 9.7153 7.0339 3.3386e-10 Age 0.31068 0.18531 1.6765 0.096991 Smoker_1 3.0425 10.446 0.29127 0.77149 Sex_Male:Age -0.49094 0.24764 -1.9825 0.050377 Sex_Male:Smoker_1 0.9509 3.8031 0.25003 0.80312 Age:Smoker_1 -0.07288 0.26275 -0.27737 0.78211 Number of observations: 100, Error degrees of freedom: 93 Root Mean Squared Error: 8.75 R-squared: 0.898, Adjusted R-Squared: 0.892 F-statistic vs. constant model: 137, p-value = 6.91e-44
Вес пациентов, по-видимому, не сильно отличается в зависимости от возраста, статуса курения или взаимодействия этих факторов с полом пациента на уровне 5% значимости.
Загрузите hald
набор данных, измеряющий эффект состава цемента на его закалку.
load hald
Этот набор данных включает переменные ingredients
и heat
. Матрица ingredients
содержит процентный состав четырех химических веществ, присутствующих в цементе. Векторная heat
содержит значения для терможидкости через 180 дней для каждой выборки цемента.
Подбор устойчивой линейной регрессионной модели к данным.
mdl = fitlm(ingredients,heat,'RobustOpts','on')
mdl = Linear regression model (robust fit): y ~ 1 + x1 + x2 + x3 + x4 Estimated Coefficients: Estimate SE tStat pValue ________ _______ ________ ________ (Intercept) 60.09 75.818 0.79256 0.4509 x1 1.5753 0.80585 1.9548 0.086346 x2 0.5322 0.78315 0.67957 0.51596 x3 0.13346 0.8166 0.16343 0.87424 x4 -0.12052 0.7672 -0.15709 0.87906 Number of observations: 13, Error degrees of freedom: 8 Root Mean Squared Error: 2.65 R-squared: 0.979, Adjusted R-Squared: 0.969 F-statistic vs. constant model: 94.6, p-value = 9.03e-07
Для получения дополнительной информации смотрите тему «Уменьшение эффектов выбросов с помощью робастной регрессии», которая сравнивает результаты устойчивой подгонки со стандартной аппроксимацией методом наименьших квадратов.
Вычислите среднюю абсолютную ошибку регрессионой модели с помощью 10-кратной перекрестной валидации.
Загрузите carsmall
набор данных. Задайте Acceleration
и Displacement
переменные как предикторы и Weight
переменная в качестве отклика.
load carsmall
X1 = Acceleration;
X2 = Displacement;
y = Weight;
Создайте пользовательскую функцию regf
(показан в конце этого примера). Эта функция подходит для регрессионной модели к обучающим данным, а затем вычисляет предсказанные веса автомобилей на тестовом наборе. Функция сравнивает предсказанные значения веса автомобиля с истинными значениями, а затем вычисляет среднюю абсолютную ошибку (MAE) и MAE, скорректированную с областью значений веса тестового набора автомобилей.
Примечание: Если вы используете файл live скрипта для этого примера, regf
функция уже включена в конец файла. В противном случае вам нужно создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB ®.
По умолчанию crossval
выполняет 10-кратную перекрестную проверку. Для каждого из 10 разделов обучающих и тестовых наборов данных в X1
, X2
, и y
, вычислите MAE и скорректированные значения MAE с помощью regf
функция. Найдите среднее значение MAE и среднее скорректированное MAE.
rng('default') % For reproducibility values = crossval(@regf,X1,X2,y)
values = 10×2
319.2261 0.1132
342.3722 0.1240
214.3735 0.0902
174.7247 0.1128
189.4835 0.0832
249.4359 0.1003
194.4210 0.0845
348.7437 0.1700
283.1761 0.1187
210.7444 0.1325
mean(values)
ans = 1×2
252.6701 0.1129
Этот код создает функцию regf
.
function errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest) tbltrain = table(X1train,X2train,ytrain, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); tbltest = table(X1test,X2test,ytest, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); mdl = fitlm(tbltrain,'Weight ~ Acceleration + Displacement'); yfit = predict(mdl,tbltest); MAE = mean(abs(yfit-tbltest.Weight)); adjMAE = MAE/range(tbltest.Weight); errors = [MAE adjMAE]; end
tbl
- Входные данныеВходные данные, включая переменные предиктора и отклика, заданные как таблица или массив набора данных. Переменные предиктора могут быть числовыми, логическими, категориальными, символьными или строковыми. Переменная отклика должна быть числовой или логической.
По умолчанию, fitlm
принимает последнюю переменную как переменную отклика, а другие как переменные предиктора.
Чтобы задать другой столбец в качестве переменной отклика, используйте ResponseVar
аргумент пары "имя-значение".
Чтобы использовать подмножество столбцов в качестве предикторов, используйте PredictorVars
аргумент пары "имя-значение".
Чтобы определить спецификацию модели, установите modelspec
аргумент с использованием формулы или матрицы терминов. Матрица формул или терминов задает, какие столбцы использовать в качестве переменных предиктора или отклика.
Имена переменных в таблице не должны быть допустимыми MATLAB® идентификаторы. Однако, если имена недопустимы, вы не можете использовать формулу, когда подбираете или корректируете модель; для примера:
Вы не можете задать modelspec
использование формулы.
Вы не можете использовать формулу, чтобы задать условия, которые нужно добавить или удалить при использовании addTerms
функцию или removeTerms
функция, соответственно.
Вы не можете использовать формулу, чтобы задать нижнюю и верхнюю границы модели, когда вы используете step
или stepwiselm
функция с аргументами пары "имя-значение" 'Lower'
и 'Upper'
, соответственно.
Можно проверить имена переменных в tbl
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
X
- Переменные предиктораПеременные предиктора, заданные как n -by - p матрица, где n - количество наблюдений, а p - количество переменных предиктора. Каждый столбец X
представляет одну переменную, и каждая строка представляет одно наблюдение.
По умолчанию существует постоянный член в модели, если вы явно не удаляете ее, поэтому не включайте столбец 1с в X
.
Типы данных: single
| double
y
- Переменная откликаПеременная отклика, заданная как n -by-1 вектор, где n - количество наблюдений. Каждая запись в y
- ответ для соответствующей строки X
.
Типы данных: single
| double
| logical
modelspec
- Спецификация модели'linear'
(по умолчанию) | вектор символов или строковый скаляр с именем модели | t -by- (p + 1) терминов матрица | вектор символов или строковая скалярная формула в форме 'y ~ terms'
Спецификация модели, заданная в качестве одного из следующих значений.
Вектор символов или строковый скаляр с именем модели.
Значение | Тип модели |
---|---|
'constant' | Модель содержит только постоянный (перехват) термин. |
'linear' | Модель содержит точку пересечения и линейный термин для каждого предиктора. |
'interactions' | Модель содержит точку пересечения, линейный член для каждого предиктора и все продукты пар различных предикторов (без квадратов членов). |
'purequadratic' | Модель содержит термин точки пересечения и линейные и квадратные условия для каждого предиктора. |
'quadratic' | Модель содержит член точки пересечения, линейные и квадратные условия для каждого предиктора и все продукты пар различных предикторов. |
' | Модель является полиномом со всеми терминами до степени i в первом предикторе, степень j во втором предикторе и так далее. Задайте максимальную степень для каждого предиктора с помощью цифр 0, хотя и 9. Модель содержит условия взаимодействия, но степень каждого термина взаимодействия не превышает максимальное значение заданных степеней. Для примера, 'poly13' имеет перехват и x 1, x 2, x 22, <reservedrangesplaceholder0> 23, x 1 * x 2 и x 1 * x 22 условия, где x 1 и x 2 являются первым и вторым предикторами, соответственно. |
Матрица t -by- (p + 1) или Матрица терминов, задающая членов в модели, где t количество членов, а p количество переменных предиктора, и + 1 учитывает переменную отклика. Матрица терминов удобна, когда количество предикторов велико, и вы хотите сгенерировать условия программно.
Вектор символов или строковый скаляр Формула в форме
'y ~ terms'
,
где terms
находятся в Обозначении Уилкинсона. Имена переменных в формуле должны быть именами переменных в tbl
или имена переменных, заданные Varnames
. Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB.
Программа определяет порядок терминов в подобранной модели, используя порядок терминов в tbl
или X
. Поэтому порядок членов в модели может отличаться от порядка членов в указанной формуле.
Пример: 'quadratic'
Пример: 'y ~ x1 + x2^2 + x1:x2'
Типы данных: single
| double
| char
| string
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic'
задает устойчивую регрессионую модель без постоянного члена, где алгоритм использует логистическую функцию взвешивания с константой настройки по умолчанию, первая и третья переменные являются переменными предиктора, а пятая переменная - переменной отклика.'CategoricalVars'
- Категориальный список переменныхКатегориальный список переменных, заданный как разделенная разделенными запятой парами, состоящая из 'CategoricalVars'
и строковые массивы или массив ячеек векторов символов, содержащих категориальные имена переменных в таблице или массиве набора данных tbl
, или логический или числовой вектор индекса, указывающий, какие столбцы являются категориальными.
Если данные находятся в таблице или массиве набора данных tbl
, затем, по умолчанию, fitlm
Обработки все категориальные значения, логические значения, символьные массивы, строковые массивы и массивы ячеек векторов символов как категориальные переменные.
Если данные в матрице X
, затем значение по умолчанию 'CategoricalVars'
является пустой матрицей []
. То есть никакая переменная не является категориальной, если вы не задаете ее как категориальную.
Для примера можно задать вторую и третью переменные из шести как категориальные с помощью одного из следующих:
Пример: 'CategoricalVars',[2,3]
Пример: 'CategoricalVars',logical([0 1 1 0 0 0])
Типы данных: single
| double
| logical
| string
| cell
'Exclude'
- Наблюдения, которые нужно исключитьНаблюдения, чтобы исключить из подгонки, заданные как разделенная разделенными запятой парами, состоящая из 'Exclude'
и логический или числовой вектор индекса, указывающий, какие наблюдения исключить из подгонки.
Например, можно исключить наблюдения 2 и 3 из 6, используя любой из следующих примеров.
Пример: 'Exclude',[2,3]
Пример: 'Exclude',logical([0 1 1 0 0 0])
Типы данных: single
| double
| logical
'Intercept'
- Индикатор постоянного срокаtrue
(по умолчанию) | false
Индикатор для постоянного термина (точка пересечения) в подгонке, заданный как разделенная разделенными запятой парами, состоящая из 'Intercept'
и любой из них true
включать или false
чтобы удалить постоянный член из модели.
Использование 'Intercept'
только при задании модели с помощью вектора символов или строкового скаляра, а не формулы или матрицы.
Пример: 'Intercept',false
'PredictorVars'
- Переменные предиктораПеременные предиктора для использования в подгонку, заданные как разделенная разделенными запятой парами, состоящая из 'PredictorVars'
и либо строковый массив, либо массив ячеек из векторов символов с именами переменных в таблице или массиве набора данных tbl
, или логический или числовой вектор индекса, указывающий, какие столбцы являются переменными предиктора.
Строковые значения или векторы символов должны быть среди имен в tbl
, или имена, которые вы задаете используя 'VarNames'
аргумент пары "имя-значение".
По умолчанию все переменные в X
, или все переменные в tbl
кроме ResponseVar
.
Например, можно задать вторую и третью переменные как переменные-предикторы, используя любой из следующих примеров.
Пример: 'PredictorVars',[2,3]
Пример: 'PredictorVars',logical([0 1 1 0 0 0])
Типы данных: single
| double
| logical
| string
| cell
'ResponseVar'
- Переменная откликаtbl
(по умолчанию) | вектор символов или строковый скаляр, содержащий имя переменной | логический или числовой вектор индексаПеременная отклика для использования в подгонке, заданная как разделенная разделенными запятой парами, состоящая из 'ResponseVar'
и либо вектор символов, либо строковый скаляр, содержащий имя переменной в таблице или массиве набора данных tbl
, или логический или числовой вектор индекса, указывающий, какой столбец является переменной отклика. Обычно вам нужно использовать 'ResponseVar'
при подгонке таблицы или массива набора данных tbl
.
Для примера можно задать четвертую переменную, скажем yield
, как ответ из шести переменных, одним из следующих способов.
Пример: 'ResponseVar','yield'
Пример: 'ResponseVar',[4]
Пример: 'ResponseVar',logical([0 0 0 1 0 0])
Типы данных: single
| double
| logical
| char
| string
'RobustOpts'
- Индикатор типа робастной арматуры'off'
(по умолчанию) | 'on'
| вектор символов | строковый скаляр | структуруИндикатор типа устойчивой подгонки, заданный как разделенная разделенными запятой парами, состоящая из 'RobustOpts'
и одно из этих значений.
'off'
- Никакого прочного подбора кривой. fitlm
использует обычные наименьшие квадраты.
'on'
- Устойчивый подбор кривой с использованием 'bisquare'
весовая функция с константой настройки по умолчанию.
Вектор символов или строковый скаляр - имя устойчивой подгонки функции веса из следующей таблицы. fitlm
использует соответствующую настройочную константу по умолчанию, заданную в таблице.
Структурируйте эти два поля RobustWgtFun
и Tune
.
The RobustWgtFun
поле содержит имя устойчивой подходящей функции веса из следующей таблицы или указателя на функцию пользовательской функции веса.
The Tune
поле содержит константу настройки. Если вы не устанавливаете Tune
поле, fitlm
использует соответствующую константу настройки по умолчанию.
Функция веса | Описание | Константа настройки по умолчанию |
---|---|---|
'andrews' | w = (abs(r)<pi) .* sin(r) ./ r | 1.339 |
'bisquare' | w = (abs(r)<1) .* (1 - r.^2).^2 (также называемый biweight) | 4.685 |
'cauchy' | w = 1 ./ (1 + r.^2) | 2.385 |
'fair' | w = 1 ./ (1 + abs(r)) | 1.400 |
'huber' | w = 1 ./ max(1, abs(r)) | 1.345 |
'logistic' | w = tanh(r) ./ r | 1.205 |
'ols' | Обычные наименьшие квадраты (без функции взвешивания) | Ничего |
'talwar' | w = 1 * (abs(r)<1) | 2.795 |
'welsch' | w = exp(-(r.^2)) | 2.985 |
указатель на функцию | Пользовательская функция веса, которая принимает вектор r масштабированных невязок и возвращает вектор весов того же размера, что и r | 1 |
Константы настройки по умолчанию встроенных функций веса дают оценки коэффициентов, которые примерно 95% так же статистически эффективны, как и обычные оценки методом наименьших квадратов, при условии, что ответ имеет нормальное распределение без выбросов. Уменьшение константы настройки увеличивает понижающий вес, присвоенный большим невязкам; увеличение константы настройки уменьшает понижающий вес, присвоенный большим невязкам.
Значение, r в весовых функциях,
r = resid/(tune*s*sqrt(1–h))
,
где resid
- вектор невязок от предыдущей итерации, tune
- константа настройки, h
- вектор значений рычага от аппроксимации методом наименьших квадратов и s
- оценка стандартного отклонения термина ошибки, заданная в
s = MAD/0.6745
.
MAD
- медианное абсолютное отклонение невязок от их медианы. Константа 0,6745 делает оценку объективной для нормального распределения. Если X
имеет p столбцов, программа исключает наименьшие p абсолютные отклонения при вычислении медианы.
Для робастного подбора кривой, fitlm
использует M-оценку, чтобы сформулировать оценочные уравнения и решает их с помощью метода итерационно перевзвешенных наименьших квадратов (IRLS).
Пример: 'RobustOpts','andrews'
'VarNames'
- Имена переменных{'x1','x2',...,'xn','y'}
(по умолчанию) | строковый массив | массивов ячеек из векторов символовИмена переменных, заданные как разделенная разделенными запятой парами, состоящая из 'VarNames'
и строковые массивы или массив ячеек из векторов символов, включая имена для столбцов X
во-первых, и имя переменной отклика y
последний.
'VarNames'
не применяется к переменным в таблице или массиве набора данных, поскольку эти переменные уже имеют имена.
Имена переменных не должны быть допустимыми идентификаторами MATLAB. Однако, если имена недопустимы, вы не можете использовать формулу, когда подбираете или корректируете модель; для примера:
Вы не можете использовать формулу, чтобы задать условия, которые нужно добавить или удалить при использовании addTerms
функцию или removeTerms
функция, соответственно.
Вы не можете использовать формулу, чтобы задать нижнюю и верхнюю границы модели, когда вы используете step
или stepwiselm
функция с аргументами пары "имя-значение" 'Lower'
и 'Upper'
, соответственно.
Перед указанием 'VarNames',varNames
можно проверить имена переменных в varNames
при помощи isvarname
функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName
функция.
Пример: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}
Типы данных: string
| cell
'Weights'
- Веса наблюденийones(n,1)
(по умолчанию) | n вектор -by-1 неотрицательных скалярных значенийВеса наблюдений, заданные как разделенная разделенными запятой парами, состоящая из 'Weights'
и вектор n -by-1 неотрицательных скалярных значений, где n - количество наблюдений.
Типы данных: single
| double
mdl
- Линейная модельLinearModel
объектЛинейная модель, представляющая аппроксимацию отклика на данные методом наименьших квадратов, возвращенная как LinearModel
объект.
Если значение 'RobustOpts'
Пара "имя-значение" не []
или 'ols'
, модель не является аппроксимацией методом наименьших квадратов, но использует устойчивую функцию аппроксимации.
Матрица терминов 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
представляет предикторные условия в модели, использующей обозначение Уилкинсона.
Чтобы представлять переменные предиктора и отклика, используйте имена переменных входных tbl
таблицы или имена переменных, заданные при помощи
VarNames
. Значение по умолчанию VarNames
является {'x1','x2',...,'xn','y'}
.
Для примера:
'y ~ x1 + x2 + x3'
задает линейную модель с тремя переменными с точкой пересечения.
'y ~ x1 + x2 + x3 – 1'
задает линейную модель с тремя переменными без точки пересечения. Обратите внимание, что формулы включают постоянный (перехват) термин по умолчанию. Чтобы исключить постоянный термин из модели, вы должны включить –1
в формуле.
Формула включает в себя постоянный термин, если вы явным образом не удаляете термин используя –1
.
Уилкинсон обозначения описывает термины, присутствующие в модели. Обозначение относится к терминам, присутствующим в модели, а не к умножителям (коэффициентам) этих членов.
Уилкинсон обозначения использует эти символы:
+
средства включают следующую переменную.
–
средства не включают следующую переменную.
:
задает взаимодействие, которое является продуктом терминов.
*
задает взаимодействие и все условия более низкого порядка.
^
поднимает предиктор в степень, в точности как в *
повторяется, так ^
включает также условия более низкого порядка.
()
группы терминов.
Эта таблица показывает типичные примеры обозначению Уилкинсона.
Уилкинсон Обозначение | Термины в стандартном обозначении |
---|---|
1 | Константа ( точку пересечения) термин |
x1^k , где k является положительным целым числом | x1 , x12 ..., x1k |
x1 + x2 | x1 , x2 |
x1*x2 | x1 , x2 , x1*x2 |
x1:x2 | x1*x2 только |
–x2 | Не включать x2 |
x1*x2 + x3 | x1 , x2 , x3 , x1*x2 |
x1 + x2 + x3 + x1:x2 | x1 , x2 , x3 , x1*x2 |
x1*x2*x3 – x1:x2:x3 | x1 , x2 , x3 , x1*x2 , x1*x3 , x2*x3 |
x1*(x2 + x3) | x1 , x2 , x3 , x1*x2 , x1*x3 |
Для получения дополнительной информации см. Обозначение Уилкинсона.
Для доступа к свойствам модели LinearModel
mdl объекта
, можно использовать запись через точку. Для примера, mdl.Residuals
возвращает таблицу необработанных, Pearson, Studentized и стандартизированных остаточных значений для модели.
После обучения модели можно сгенерировать код C/C + +, который предсказывает ответы для новых данных. Для генерации кода C/C + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода .
Основным алгоритмом аппроксимации является QR-разложение. Для робастного подбора кривой, fitlm
использует M-оценку, чтобы сформулировать оценочные уравнения и решает их с помощью метода итерационно перевзвешенных наименьших квадратов (IRLS).
fitlm
рассматривает категориальный предиктор следующим образом:
Модель с категориальным предиктором, которая имеет L уровни (категории), включает L - 1 переменные показателя. Модель использует первую категорию в качестве ссылочного уровня, поэтому она не включает переменную индикатора для ссылочного уровня. Если тип данных категориального предиктора categorical
, затем можно проверить порядок категорий при помощи categories
и переупорядочить категории при помощи reordercats
для настройки уровня ссылки. Для получения дополнительной информации о создании переменных индикатора, смотрите Автоматическое создание переменных фиктива.
fitlm
рассматривает группу переменных индикатора L-1 как одну переменную. Если вы хотите считать переменные индикатора отдельными переменными предиктора, создайте переменные индикатора вручную при помощи dummyvar
. Затем используйте переменные индикатора, кроме той, которая соответствует ссылочному уровню категориальной переменной, когда вы подбираете модель. Для категориального предиктора X
, если вы задаете все столбцы dummyvar(X)
и точка пересечения член как предикторы, тогда матрица дизайна становится неполным рангом.
Условия взаимодействия между непрерывным предиктором и категориальным предиктором с L уровнями состоят из поэлементного произведения переменных показателя L-1 с непрерывным предиктором.
Условия взаимодействия между двумя категориальными предикторами с L и M уровнями состоят из переменных (L - 1) * (M - 1) индикатора, чтобы включать все возможные комбинации двух категориальных уровней предиктора.
Вы не можете задать условия более высокого порядка для категориального предиктора, потому что квадрат индикатора равен себе.
fitlm
рассматривает NaN
, ''
(пустой символьный вектор), ""
(пустая строка), <missing>
, и <undefined>
значения в tbl
, X
, и Y
чтобы быть отсутствующими значениями. fitlm
не использует наблюдения с отсутствующими значениями в подгонке. The ObservationInfo
свойство подобранной модели указывает, указывает или нет fitlm
использует каждое наблюдение в подгонке.
Для сокращения времени вычисления на высоко-размерных наборах данных подбирайте линейную регрессионую модель используя fitrlinear
функция.
Чтобы упорядочить регрессию, используйте fitrlinear
, lasso
, ridge
, или plsregress
.
fitrlinear
регулирует регрессию для высоко-размерных наборов данных, используя регрессию лассо или гребня.
lasso
удаляет избыточные предикторы в линейной регрессии с помощью лассо или эластичной сети.
ridge
регулирует регрессию с коррелированными терминами, используя регрессию гребня.
plsregress
регулирует регрессию с коррелированными терминами, используя частичные наименьшие квадраты.
[1] DuMouchel, W. H., and F. L. O'Brien. «Интеграция робастной опции в окружение нескольких регрессионных вычислений». Информатика и статистика: материалы 21-го симпозиума по интерфейсам. Александрия, VA: Американская статистическая ассоциация, 1989.
[2] Holland, P. W., and R. E. Welsch. Робастная регрессия с использованием итерационно переоцененных методом наименьших квадратов. Коммуникации в статистике: теория и методы, A6, 1977, с. 813-827.
[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.
[4] Стрит, Дж. О., Р. Дж. Кэрролл и Д. Рупперт. «Примечание по вычислению надежных оценок регрессии через итерационно переоцененные наименьшие квадраты». Американский статистик. Том 42, 1988, стр. 152-154.
Эта функция поддерживает длинные массивы для данной , которой не помещаютси в память, с некоторыми ограничениями.
Если какой-либо входной параметр в fitlm
является длинный массив, тогда все другие входы также должны быть длинные массивы. Это включает непустые переменные, поставляемые с 'Weights'
и 'Exclude'
Пары "имя-значение".
The 'RobustOpts'
пара "имя-значение" не поддерживается в длинные массивы.
Для высоких данных, fitlm
возвращает CompactLinearModel
объект, который содержит большую часть тех же свойств, что и LinearModel
объект. Основное различие заключается в том, что компактный объект чувствителен к требованиям памяти. Компактный объект не включает свойства, которые включают данные или включают массив того же размера, что и данные. Компактный объект не содержит эти LinearModel
свойства:
Diagnostics
Fitted
ObservationInfo
ObservationNames
Residuals
Steps
Variables
Можно вычислить невязки непосредственно из компактного объекта, возвращенного LM = fitlm(X,Y)
использование
RES = Y - predict(LM,X); S = LM.RMSE; histogram(RES,linspace(-3*S,3*S,51))
Если на CompactLinearModel
в объекте отсутствуют термины нижнего порядка, которые включают категориальные факторы:
plotEffects
и plotInteraction
методы не поддерживаются.
anova
метод с 'components'
опция не поддерживается.
Для получения дополнительной информации см. Раздел «Длинные массивы для данных , которых не помещаютсь в память,».
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
fitrlinear
| LinearModel
| predict
| stepwiselm
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.