stepwiselm
создает линейную модель и автоматически добавляет или обрезает модель. Чтобы создать небольшую модель, начните с постоянной модели. Чтобы создать большую модель, начните с модели, содержащей много членов. Большая модель обычно имеет более низкую ошибку, измеренную подгонкой к исходным данным, но может не иметь никакого преимущества в прогнозировании новых данных.
stepwiselm
может использовать все опции имя-значение из fitlm
, с дополнительными опциями, относящимися к стартовой и ограничивающей модели. В частности:
Для небольшой модели начните с нижней ограничивающей модели по умолчанию: 'constant'
(модель, которая не имеет членов предиктора).
Верхняя ограничивающая модель по умолчанию имеет линейные условия и условия взаимодействия (продукты пар предикторов). Для верхней ограничивающей модели, которая также включает квадратные условия, задайте Upper
Пара "имя-значение" с 'quadratic'
.
В этом примере показано, как сравнить модели, которые stepwiselm
возвращается начиная с постоянной модели и начиная с полной модели взаимодействия.
Загрузите carbig
и составьте таблицу из некоторых данных.
load carbig
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
Создайте модель пробега ступенчато, начиная с постоянной модели.
mdl1 = stepwiselm(tbl,'constant','ResponseVar','MPG')
1. Adding Weight, FStat = 888.8507, pValue = 2.9728e-103 2. Adding Horsepower, FStat = 3.8217, pValue = 0.00049608 3. Adding Horsepower:Weight, FStat = 64.8709, pValue = 9.93362e-15
mdl1 = Linear regression model: MPG ~ 1 + Horsepower*Weight Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 63.558 2.3429 27.127 1.2343e-91 Horsepower -0.25084 0.027279 -9.1952 2.3226e-18 Weight -0.010772 0.00077381 -13.921 5.1372e-36 Horsepower:Weight 5.3554e-05 6.6491e-06 8.0542 9.9336e-15 Number of observations: 392, Error degrees of freedom: 388 Root Mean Squared Error: 3.93 R-squared: 0.748, Adjusted R-Squared: 0.746 F-statistic vs. constant model: 385, p-value = 7.26e-116
Создайте модель пробега ступенчато, начиная с модели полного взаимодействия.
mdl2 = stepwiselm(tbl,'interactions','ResponseVar','MPG')
1. Removing Acceleration:Displacement, FStat = 0.024186, pValue = 0.8765 2. Removing Displacement:Weight, FStat = 0.33103, pValue = 0.56539 3. Removing Acceleration:Horsepower, FStat = 1.7334, pValue = 0.18876 4. Removing Acceleration:Weight, FStat = 0.93269, pValue = 0.33477 5. Removing Horsepower:Weight, FStat = 0.64486, pValue = 0.42245
mdl2 = Linear regression model: MPG ~ 1 + Acceleration + Weight + Displacement*Horsepower Estimated Coefficients: Estimate SE tStat pValue __________ __________ _______ __________ (Intercept) 61.285 2.8052 21.847 1.8593e-69 Acceleration -0.34401 0.11862 -2.9 0.0039445 Displacement -0.081198 0.010071 -8.0623 9.5014e-15 Horsepower -0.24313 0.026068 -9.3265 8.6556e-19 Weight -0.0014367 0.00084041 -1.7095 0.088166 Displacement:Horsepower 0.00054236 5.7987e-05 9.3531 7.0527e-19 Number of observations: 392, Error degrees of freedom: 386 Root Mean Squared Error: 3.84 R-squared: 0.761, Adjusted R-Squared: 0.758 F-statistic vs. constant model: 246, p-value = 1.32e-117
Заметьте, что:
mdl1
имеет четыре коэффициента (Estimate
столбец), и mdl2
имеет шесть коэффициентов.
Скорректированный R-квадрат mdl1
является 0.746
, что несколько меньше (хуже), чем у mdl2
, 0.758
.
Создайте модель пробега ступенчато с полной квадратичной моделью в качестве верхней границы, начиная с полной квадратичной модели:
mdl3 = stepwiselm(tbl,'quadratic','ResponseVar','MPG','Upper','quadratic');
1. Removing Acceleration:Horsepower, FStat = 0.075209, pValue = 0.78405 2. Removing Acceleration:Weight, FStat = 0.072756, pValue = 0.78751 3. Removing Horsepower:Weight, FStat = 0.12569, pValue = 0.72314 4. Removing Weight^2, FStat = 1.194, pValue = 0.27521 5. Removing Displacement:Weight, FStat = 1.2839, pValue = 0.25789 6. Removing Displacement^2, FStat = 2.069, pValue = 0.15114 7. Removing Horsepower^2, FStat = 0.74063, pValue = 0.39
Сравните три сложности модели путем изучения их формул.
mdl1.Formula
ans = MPG ~ 1 + Horsepower*Weight
mdl2.Formula
ans = MPG ~ 1 + Acceleration + Weight + Displacement*Horsepower
mdl3.Formula
ans = MPG ~ 1 + Weight + Acceleration*Displacement + Displacement*Horsepower + Acceleration^2
Приспособленный значения немного улучшаются, когда модели становятся более комплексными:
RSquared = [mdl1.Rsquared.Adjusted, ...
mdl2.Rsquared.Adjusted, mdl3.Rsquared.Adjusted]
RSquared = 1×3
0.7465 0.7580 0.7599
Сравните остаточные графики трех моделей.
subplot(3,1,1) plotResiduals(mdl1) subplot(3,1,2) plotResiduals(mdl2) subplot(3,1,3) plotResiduals(mdl3)
Модели имеют аналогичные невязки. Непонятно, кто лучше подходит к данным.
Интересно, что более сложные модели имеют большие максимальные отклонения невязок:
Rrange1 = [min(mdl1.Residuals.Raw),max(mdl1.Residuals.Raw)]; Rrange2 = [min(mdl2.Residuals.Raw),max(mdl2.Residuals.Raw)]; Rrange3 = [min(mdl3.Residuals.Raw),max(mdl3.Residuals.Raw)]; Rranges = [Rrange1;Rrange2;Rrange3]
Rranges = 3×2
-10.7725 14.7314
-11.4407 16.7562
-12.2723 16.7927
fitlm
| LinearModel
| plotResiduals
| stepwiselm