Ступенчатая регрессия

Ступенчатая регрессия для выбора соответствующих моделей

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

Приспособленный R2 значения немного улучшаются, когда модели становятся более комплексными:

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)

Figure contains 3 axes. Axes 1 with title Histogram of residuals contains an object of type patch. Axes 2 with title Histogram of residuals contains an object of type patch. Axes 3 with title Histogram of residuals contains an object of type patch.

Модели имеют аналогичные невязки. Непонятно, кто лучше подходит к данным.

Интересно, что более сложные модели имеют большие максимальные отклонения невязок:

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

См. также

| | |

Похожие темы