Подгонка модели линейной регрессии
указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Например, можно указать, какие переменные являются категориальными, выполнить надежную регрессию или использовать веса наблюдения.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.
Подгонка модели линейной регрессии с использованием матрицы терминов.
Матрица терминов для ввода таблицы
Если переменные модели находятся в таблице, то столбец 0s в матрице членов представляет положение переменной ответа.
Загрузить hospital набор данных.
load hospitalСохраните переменные в таблице.
t = table(hospital.Sex,hospital.BloodPressure(:,1),hospital.Age,hospital.Smoker, ... 'VariableNames',{'Sex','BloodPressure','Age','Smoker'});
Представление линейной модели 'BloodPressure ~ 1 + Sex + Age + Smoker' с использованием матрицы терминов. Переменная ответа находится во втором столбце таблицы, поэтому второй столбец матрицы терминов должен быть столбцом 0s для переменной ответа.
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, соответствует
,
где 76, = 82 - переменные индикатора, значение которых равно единице, если значениеModel_Year равно 76 и 82 соответственно. Model_Year переменная включает три различных значения, которые можно проверить с помощью unique функция.
unique(Model_Year)
ans = 3×1
70
76
82
fitlm выбирает наименьшее значение в Model_Year в качестве опорного уровня ('70') и создаёт две индикаторные переменные 76 = 82. Модель включает только две индикаторные переменные, поскольку проектная матрица становится дефицитной, если модель включает три индикаторные переменные (по одной для каждого уровня) и член перехвата.
Модель с полными индикаторными переменными
Можно интерпретировать формулу модели mdl как модель, которая имеет три индикаторные переменные без члена перехвата:
β0 + β2) Ιx2=82+ϵ.
Кроме того, можно создать модель с тремя индикаторными переменными без элемента пересечения, создав вручную индикаторные переменные и указав формулу модели.
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 для каждой переменной в модели, за исключением члена константы.
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, скорректированную в соответствии с диапазоном весов испытуемого набора автомобилей.
Примечание.Если для этого примера используется файл сценария в реальном времени, 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' | Модель содержит член пересечения, линейные и квадратные члены для каждого предиктора и все произведения пар различных предикторов. |
'poly | Модель - многочлен со всеми членами до степени i в первом предикторе, степень j во втором предикторе и так далее. Укажите максимальную степень для каждого предиктора, используя цифры от 0 до 9. Модель содержит члены взаимодействия, но степень каждого члена взаимодействия не превышает максимального значения указанных степеней. Например, 'poly13' имеет члены перехвата и x1, x2, x22, x23, x1 * x2 и x1 * x22, где x1 и x2 являются первым и вторым предикторами соответственно. |
Матрица t-by- ( p + 1), или Terms Matrix, задающая члены в модели, где 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.
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' | Обычные наименьшие квадраты (без весовой функции) | Ничего |
'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 использует М-оценку для формулирования оценочных уравнений и решает их с помощью метода итеративно-переоцененных наименьших квадратов (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)
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 возвращает таблицу необработанных, пирсонов, изученных и стандартизированных остаточных значений для модели.
После обучения модели можно создать код C/C + +, который предсказывает ответы на новые данные. Для создания кода C/C + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода .
Основным алгоритмом подгонки является QR-разложение. Для надежного фитинга, fitlm использует М-оценку для формулирования оценочных уравнений и решает их с помощью метода итеративно-переоцененных наименьших квадратов (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. и F. L. O'Brien. «Интеграция надежного варианта в вычислительную среду множественной регрессии». Информатика и статистика: материалы 21-го симпозиума по интерфейсу. Александрия, Вирджиния: Американская статистическая ассоциация, 1989 год.
[2] Холланд, П. У. и Р. Э. Уэлш. «Надежная регрессия с использованием итеративно повторно взвешенных наименьших квадратов». Сообщения в статистике: теория и методы, A6, 1977, стр. 813-827.
[3] Хубер, P. J. Rustive Statistics. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 1981.
[4] Стрит, Дж. О., Р. Дж. Кэрролл и Д. Руппер. «Примечание по вычислению оценок надежной регрессии с помощью итеративно пересчитанных наименьших квадратов». Американский статистик. Том 42, 1988, стр. 152-154.
Эта функция поддерживает массивы tall для данных из памяти с некоторыми ограничениями.
Если какой-либо входной аргумент для fitlm является массивом высокого уровня, тогда все остальные входы также должны быть массивами высокого уровня. Сюда входят непустые переменные, поставляемые с 'Weights' и 'Exclude' пары имя-значение.
'RobustOpts' пара «имя-значение» не поддерживается массивами tall.
Для высоких данных, 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' параметр не поддерживается.
Дополнительные сведения см. в разделе Tall Arrays for Out-of-Memory Data.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
fitrlinear | LinearModel | predict | stepwiselm
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.