exponenta event banner

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

Пошаговая регрессия для выбора подходящих моделей

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

См. также

| | |

Связанные темы