Подбирайте модель линейной регрессии
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать, какие переменные являются категориальными, выполняют устойчивую регрессию или используют веса наблюдения.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
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, соответственно. 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
Выберите Reference Level in Model
Можно выбрать контрольный уровень путем изменения порядка категорий в категориальной переменной. Во-первых, создайте категориальную переменную 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
Таблица ANOVA компонента включает 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
функция. Следующий код возвращает логический 1
TRUE
) для каждой переменной, которая имеет допустимое имя переменной.
cellfun(@isvarname,tbl.Properties.VariableNames)
tbl
не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName
функция.tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);
X
— Переменные предикторыПеременные предикторы в виде n-by-p матрица, где n является количеством наблюдений и p, являются количеством переменных предикторов. Каждый столбец X
представляет одну переменную, и каждая строка представляет одно наблюдение.
По умолчанию существует постоянный член в модели, если вы явным образом не удаляете его, не включайте столбец 1 с в X
.
Типы данных: single
| double
y
— Переменная откликаПеременная отклика в виде n-by-1 вектор, где n является количеством наблюдений. Каждая запись в y
ответ для соответствующей строки X
.
Типы данных: single
| double
| logical
modelspec
— Спецификация модели'linear'
(значение по умолчанию) | вектор символов или строковый скаляр, называющий модель | t (p + 1), называет матрицу | вектор символов или формула строкового скаляра в форме 'y ~ terms'
Спецификация модели в виде одного из этих значений.
Вектор символов или строковый скаляр, называющий модель.
Значение | Тип модели |
---|---|
'constant' | Модель содержит только константу (прерывание) термин. |
'linear' | Модель содержит прерывание и линейный член для каждого предиктора. |
'interactions' | Модель содержит прерывание, линейный член для каждого предиктора и все продукты пар отличных предикторов (никакие условия в квадрате). |
'purequadratic' | Модель содержит термин прерывания и линейный и придает условиям квадратную форму для каждого предиктора. |
'quadratic' | Модель содержит термин прерывания, линейный, и придает квадратную форму условиям для каждого предиктора и всем продуктам пар отличных предикторов. |
'poly | Модель является полиномом со всеми условиями до степени i в первом предикторе, степень j во втором предикторе, и так далее. Задайте максимальную степень для каждого предиктора при помощи цифр 0 хотя 9. Модель содержит периоды взаимодействия, но степень каждого периода взаимодействия не превышает максимальное значение заданных степеней. Например, 'poly13' имеет прерывание и x 1, x 2, x 22, x 23, x 1*x2, и x 1*x22 условия, где x 1 и x 2 является первыми и вторыми предикторами, соответственно. |
t (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'
пустой матричный []
. Таким образом, никакая переменная не является категориальной, если вы не задаете его как категориальный.
Например, можно задать наблюдения 2 и 3 из 6 как категориальное использование любого из следующих примеров.
Пример: '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
.
RobustWgtFun
поле содержит имя устойчивой подходящей функции веса из следующей таблицы или указателя на функцию пользовательской функции веса.
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' | Обычные наименьшие квадраты (никакая функция взвешивания) | 'none' |
'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
функция. Следующий код возвращает логический 1
TRUE
) для каждой переменной, которая имеет допустимое имя переменной.
cellfun(@isvarname,varNames)
varNames
не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName
функция.varNames = matlab.lang.makeValidName(varNames);
Пример: '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 (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
представляет условия предиктора в модели с помощью обозначения Уилкинсона.
Чтобы представлять переменные прогноза и переменные отклика, используйте имена переменных табличного входа 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
возвращает таблицу сырых данных, Пирсона, 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
не использует наблюдения с отсутствующими значениями в подгонке. ObservationInfo
свойство подобранной модели указывает действительно ли fitlm
использование каждое наблюдение в подгонке.
Для сокращения времени вычисления на высоко-размерных наборах данных подбирайте модель линейной регрессии использование fitrlinear
функция.
Чтобы упорядочить регрессию, использовать fitrlinear
, lasso
, ridge
, или plsregress
.
fitrlinear
упорядочивает регрессию для высоко-размерных наборов данных с помощью лассо или гребенчатой регрессии.
lasso
удаляет избыточные предикторы в линейной регрессии с помощью лассо или эластичной сети.
ridge
упорядочивает регрессию с коррелироваными условиями с помощью гребенчатой регрессии.
plsregress
упорядочивает регрессию с коррелироваными условиями с помощью частичных наименьших квадратов.
[1] DuMouchel, W. H. и Ф. Л. О'Брайен. “Интегрируя Устойчивую Опцию в Вычислительную среду Регрессии кратного”. Информатика и Статистика: Продолжения 21-го Симпозиума по Интерфейсу. Александрия, ВА: американская Статистическая Ассоциация, 1989.
[2] Голландия, P. W. и Р. Э. Велш. “Устойчивая Регрессия Используя Итеративно Перевзвешенные Наименьшие квадраты”. Коммуникации в Статистике: Теория и Методы, A6, 1977, стр 813–827.
[3] Хубер, P. J. Устойчивая статистика. Хобокен, NJ: John Wiley & Sons, Inc., 1981.
[4] Улица, J. O. Р. Дж. Кэрролл и Д. Рапперт. “Примечание по Вычислению Устойчивых Оценок Регрессии через Итеративно Перевзвешенные Наименьшие квадраты”. Американский Статистик. Издание 42, 1988, стр 152–154.
Эта функция поддерживает длинные массивы для данных, которые не помещаются в память, с некоторыми ограничениями.
Если любой входной параметр к fitlm
длинный массив, затем все другие входные параметры должны быть длинными массивами также. Это включает непустые переменные, предоставленные 'Weights'
и 'Exclude'
пары "имя-значение".
'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'
опция не поддерживается.
Для получения дополнительной информации смотрите Длинные массивы для Данных, которые не помещаются в память.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
fitrlinear
| LinearModel
| predict
| stepwiselm
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.