stepwiselm

Подходящая модель линейной регрессии использование пошаговой регрессии

Синтаксис

mdl = stepwiselm(tbl)
mdl = stepwiselm(X,y)
mdl = stepwiselm(___,modelspec)
mdl = stepwiselm(___,Name,Value)

Описание

пример

mdl = stepwiselm(tbl) создает линейную модель для переменных в таблице или массиве набора данных tbl с помощью пошаговой регрессии, чтобы добавить или удалить предикторы, начиная с постоянной модели. stepwiselm использует последнюю переменную tbl как переменная отклика. stepwiselm использует прямую и обратную пошаговую регрессию, чтобы определить итоговую модель. На каждом шаге функция ищет условия, чтобы добавить модель в или удалить из модели, на основе значения аргумента 'Criterion'.

пример

mdl = stepwiselm(X,y) создает линейную модель ответов y к переменным прогноза в матрице данных X.

пример

mdl = stepwiselm(___,modelspec) задает стартовую модель modelspec с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

mdl = stepwiselm(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать категориальные переменные, самый маленький или самый большой набор условий, чтобы использовать в модели, максимальном количестве шагов, чтобы взять, или критерий что использование stepwiselm, чтобы добавить или удалить условия.

Примеры

свернуть все

Загрузите набор данных hald, который измеряет эффект цементного состава на его стабилизирующем тепле.

load hald

Этот набор данных включает переменные ingredients и heat. Матричный ingredients содержит состав процента четырех химикатов, существующих в цементе. Векторный heat содержит значения для тепла, укрепляющегося после 180 дней для каждой цементной выборки.

Соответствуйте пошаговой модели линейной регрессии к данным. Задайте 0.06 как порог для критерия, чтобы добавить термин в модель.

 mdl = stepwiselm(ingredients,heat,'PEnter',0.06)
1. Adding x4, FStat = 22.7985, pValue = 0.000576232
2. Adding x1, FStat = 108.2239, pValue = 1.105281e-06
3. Adding x2, FStat = 5.0259, pValue = 0.051687
4. Removing x4, FStat = 1.8633, pValue = 0.2054
mdl = 
Linear regression model:
    y ~ 1 + x1 + x2

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)     52.577       2.2862    22.998    5.4566e-10
    x1              1.4683       0.1213    12.105    2.6922e-07
    x2             0.66225     0.045855    14.442     5.029e-08


Number of observations: 13, Error degrees of freedom: 10
Root Mean Squared Error: 2.41
R-squared: 0.979,  Adjusted R-Squared: 0.974
F-statistic vs. constant model: 230, p-value = 4.41e-09

По умолчанию стартовая модель является постоянной моделью. stepwiselm выполняет прямой выбор и добавляет x4, x1 и условия x2 (в том порядке), потому что соответствующие p-значения являются меньше, чем значение PEnter 0,06. stepwiselm затем использует обратное устранение и удаляет x4 из модели, потому что, если x2 находится в модели, p-значение x4 больше, чем значение по умолчанию PRemove, 0.1.

Выполните пошаговые переменные использования регрессии, сохраненные в массиве набора данных. Задайте стартовую модель с помощью обозначения Уилкинсона и идентифицируйте переменные отклика и переменные прогноза с помощью дополнительных аргументов.

Загрузите выборочные данные.

load hospital

Массив набора данных больницы включает пол, возраст, вес и курение состояния пациентов.

Соответствуйте линейной модели стартовой моделью постоянного термина и Smoker как переменная прогноза. Задайте переменную отклика, Weight, и категориальные переменные прогноза, Sex, Age и Smoker.

mdl = stepwiselm(hospital,'Weight~1+Smoker',...
'ResponseVar','Weight','PredictorVars',{'Sex','Age','Smoker'},...
'CategoricalVar',{'Sex','Smoker'})
1. Adding Sex, FStat = 770.0158, pValue = 6.262758e-48
2. Removing Smoker, FStat = 0.21224, pValue = 0.64605
mdl = 
Linear regression model:
    Weight ~ 1 + Sex

Estimated Coefficients:
                   Estimate      SE      tStat       pValue   
                   ________    ______    ______    ___________

    (Intercept)     130.47     1.1995    108.77    5.2762e-104
    Sex_Male         50.06     1.7496    28.612     2.2464e-49


Number of observations: 100, Error degrees of freedom: 98
Root Mean Squared Error: 8.73
R-squared: 0.893,  Adjusted R-Squared: 0.892
F-statistic vs. constant model: 819, p-value = 2.25e-49

На каждом шаге stepwiselm ищет условия, чтобы добавить и удалить. В первом шаге пошаговый алгоритм добавляет Sex в модель с a p- значение 6.26e-48. Затем удаляет Курильщика из модели, поскольку данный Sex в модели, переменная Smoker становится избыточной. stepwiselm только включает Sex в итоговую линейную модель. Вес пациентов, кажется, значительно не отличается согласно возрасту или состоянию курения.

Загрузите набор выборочных данных и задайте матрицу предикторов.

load carsmall
X = [Acceleration,Weight];

Задайте стартовую модель и верхнюю модель с помощью матриц условий.

T_starting = [0 0 0] % a constant model
T_starting = 1×3

     0     0     0

T_upper = [0 0 0;1 0 0;0 1 0;1 1 0] % a linear model with interactions
T_upper = 4×3

     0     0     0
     1     0     0
     0     1     0
     1     1     0

Создайте модель линейной регрессии использование пошаговой регрессии. Задайте стартовую модель и верхнюю границу модели с помощью матриц условий, и задайте 'Verbose' как 2, чтобы отобразить процесс оценки и решение, принятое на каждом шаге.

mdl = stepwiselm(X,MPG,T_starting,'upper',T_upper,'Verbose',2)
   pValue for adding x1 is 4.0973e-06
   pValue for adding x2 is 1.6434e-28
1. Adding x2, FStat = 259.3087, pValue = 1.643351e-28
   pValue for adding x1 is 0.18493
   No candidate terms to remove
mdl = 
Linear regression model:
    y ~ 1 + x2

Estimated Coefficients:
                    Estimate        SE         tStat       pValue  
                   __________    _________    _______    __________

    (Intercept)        49.238       1.6411     30.002    2.7015e-49
    x2             -0.0086119    0.0005348    -16.103    1.6434e-28


Number of observations: 94, Error degrees of freedom: 92
Root Mean Squared Error: 4.13
R-squared: 0.738,  Adjusted R-Squared: 0.735
F-statistic vs. constant model: 259, p-value = 1.64e-28

Соответствуйте модели линейной регрессии категориальным предиктором с помощью пошаговой регрессии. stepwiselm добавляет или удаляет группу переменных индикатора за один шаг, чтобы добавить или удаляет категориальный предиктор. Этот пример также показывает, как создать переменные индикатора вручную и передать их stepwiselm так, чтобы stepwiselm обработал каждую переменную индикатора как отдельный предиктор.

Загрузите набор данных carsmall и составьте таблицу с помощью Weight, Model_Year и переменных MPG.

load carsmall
Year = categorical(Model_Year);
tbl1 = table(MPG,Weight,Year);

Соответствуйте модели линейной регрессии MPG с помощью пошаговой регрессии. Задайте стартовую модель как функцию Weight. Установите верхнюю границу модели к 'poly21', подразумевая, что модель может включать (самое большее) константу и условия Weight, Weight^2, Year и Weight*Year. Задайте 'Verbose' как 2, чтобы отобразить процесс оценки и решение, принятое на каждом шаге.

mdl1 = stepwiselm(tbl1,'MPG ~ Weight','Upper','poly21','Verbose',2)
   pValue for adding Year is 8.2284e-15
   pValue for adding Weight^2 is 0.15454
1. Adding Year, FStat = 47.5136, pValue = 8.22836e-15
   pValue for adding Weight^2 is 0.0022303
   pValue for adding Weight:Year is 0.0071637
2. Adding Weight^2, FStat = 9.9164, pValue = 0.0022303
   pValue for adding Weight:Year is 0.19519
   pValue for removing Year is 2.9042e-16
mdl1 = 
Linear regression model:
    MPG ~ 1 + Weight + Year + Weight^2

Estimated Coefficients:
                    Estimate         SE         tStat       pValue  
                   __________    __________    _______    __________

    (Intercept)        54.206        4.7117     11.505    2.6648e-19
    Weight          -0.016404     0.0031249    -5.2493    1.0283e-06
    Year_76            2.0887       0.71491     2.9215     0.0044137
    Year_82            8.1864       0.81531     10.041    2.6364e-16
    Weight^2       1.5573e-06    4.9454e-07      3.149     0.0022303


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.78
R-squared: 0.885,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 172, p-value = 5.52e-41

stepwiselm создает две переменные индикатора, Year_76 и Year_82, потому что Year включает три отличных значения.

Поскольку 'Verbose' равняется 2, stepwiselm отображает процесс оценки:

  • stepwiselm создает модель как функцию Weight.

  • stepwiselm вычисляет p-значения для добавления Year или Weight^2. P-значение для Year является меньше и, чем p-значение для Weight^2 и, чем пороговое значение по умолчанию 0,05; поэтому, stepwiselm добавляет Year в модель.

  • stepwiselm вычисляет p-значения для добавления Weight:Year или Weight^2. Поскольку p-значение для Weight^2 является меньше, чем p-значение для Weight:Year, функция stepwiselm добавляет Weight^2 в модель.

  • После добавления квадратичного термина stepwiselm вычисляет p-значение для добавления Weight:Year снова, но p-значение больше, чем пороговое значение. Поэтому stepwiselm не добавляет термин в модель. stepwiselm не исследует добавляющий Weight^3 из-за верхней границы, заданной аргументом пары "имя-значение" 'Upper'.

  • stepwiselm ищет условия, чтобы удалить. stepwiselm уже исследовал Weight^2, таким образом, это вычисляет только p-значение для удаления Year. Поскольку p-значение является меньше, чем пороговое значение по умолчанию 0,10, stepwiselm не удаляет термин.

  • Несмотря на то, что максимальное позволенное количество шагов равняется 5, stepwiselm отключает процесс после двух шагов, потому что модель не улучшается путем добавления или удаления термина.

stepwiselm обрабатывает две переменные индикатора как одну переменную прогноза и добавляет Year за один шаг. Чтобы обработать две переменные индикатора как две отличных переменные прогноза, используйте dummyvar, чтобы создать отдельные категориальные переменные.

temp_Year = dummyvar(Year);
Year_76 = logical(temp_Year(:,2));
Year_82 = logical(temp_Year(:,3));

Составьте таблицу, содержащую MPG, Weight, Year_76 и Year_82.

tbl2 = table(MPG,Weight,Year_76,Year_82);

Создайте пошаговую модель линейной регрессии из той же стартовой модели, используемой для mdl1.

mdl2 = stepwiselm(tbl2,'MPG ~ Weight','Upper','poly211')
1. Adding Year_82, FStat = 83.1956, pValue = 1.76163e-14
2. Adding Weight:Year_82, FStat = 8.0641, pValue = 0.0055818
3. Adding Year_76, FStat = 8.1284, pValue = 0.0054157
mdl2 = 
Linear regression model:
    MPG ~ 1 + Year_76 + Weight*Year_82

Estimated Coefficients:
                         Estimate         SE         tStat       pValue  
                        __________    __________    _______    __________

    (Intercept)             38.844        1.5294     25.397     1.503e-42
    Weight               -0.006272    0.00042673    -14.698    1.5622e-25
    Year_76_1               2.0395       0.71537      2.851     0.0054157
    Year_82_1               19.607        3.8731     5.0623    2.2163e-06
    Weight:Year_82_1    -0.0046268     0.0014979    -3.0888     0.0026806


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.79
R-squared: 0.885,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 171, p-value = 6.54e-41

Модель mdl2 включает период взаимодействия Weight:Year_82_1 вместо Weight^2, термин, включенный в mdl1.

Входные параметры

свернуть все

Входные данные, заданные как таблица или массив набора данных. Когда modelspec является formula, формула задает переменные прогноза и переменные отклика. В противном случае, если вы не задаете переменные прогноза и переменные отклика, последняя переменная в tbl является переменной отклика, и другие - переменные прогноза по умолчанию.

Переменные прогноза могут быть числовыми, логическими, категориальными, символ или строка. Переменная отклика должна быть числовой или логической.

Чтобы установить различный столбец как переменную отклика, используйте аргумент пары "имя-значение" ResponseVar. Чтобы использовать подмножество столбцов как предикторы, используйте аргумент пары "имя-значение" PredictorVars.

Переменные прогноза, заданные как n-by-p матрица, где n является количеством наблюдений и p, являются количеством переменных прогноза. Каждый столбец X представляет одну переменную, и каждая строка представляет одно наблюдение.

По умолчанию существует постоянный член в модели, если вы явным образом не удаляете его, не включайте столбец 1 с в X.

Типы данных: single | double

Переменная отклика, заданная как n-by-1 вектор, где n является количеством наблюдений. Каждая запись в y является ответом для соответствующей строки X.

Типы данных: single | double | logical

Стартовая модель для пошаговой регрессии, заданной как одно из следующего:

  • Вектор символов или скаляр строки именование модели.

    ЗначениеТип модели
    'constant'Модель содержит только константу (прерывание) термин.
    'linear'Модель содержит прерывание и линейный член для каждого предиктора.
    'interactions'Модель содержит прерывание, линейный член для каждого предиктора и все продукты пар отличных предикторов (никакие условия в квадрате).
    'purequadratic'Модель содержит термин прерывания и линейный и придает условиям квадратную форму для каждого предиктора.
    'quadratic'Модель содержит термин прерывания, линейный, и придает квадратную форму условиям для каждого предиктора и всем продуктам пар отличных предикторов.
    'polyijk'Модель является полиномом со всеми условиями до степени 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 находится в Обозначении Уилкинсона.

Если вы хотите задать самый маленький или самый большой набор членов в модели, которым соответствует stepwiselm, используйте аргументы пары "имя-значение" Lower и Upper.

Типы данных: char | string | single | double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Criterion','aic','Upper','interactions','Verbose',1 дает команду stepwiselm использовать критерий информации о Akaike, отображать меры, которые это принимает на каждом шаге, и включайте самое большее периоды взаимодействия в модель.

Категориальный список переменных, заданный как пара, разделенная запятой, состоящая из 'CategoricalVars' и или массив строк или массив ячеек из символьных векторов, содержащий категориальные имена переменных в таблице или массиве набора данных tbl или логический или числовой индексный вектор указание, какие столбцы являются категориальными.

  • Если данные находятся в таблице или массиве набора данных tbl, то по умолчанию stepwiselm обрабатывает все категориальные значения, логические значения, символьные массивы, строковые массивы и массивы ячеек из символьных векторов как категориальные переменные.

  • Если данные находятся в матричном X, то значением по умолчанию 'CategoricalVars' является пустой матричный []. Таким образом, никакая переменная не является категориальной, если вы не задаете его как категориальный.

Например, можно задать наблюдения 2 и 3 из 6 как категориальное использование любого из следующих примеров.

Пример: 'CategoricalVars',[2,3]

Пример: 'CategoricalVars',logical([0 1 1 0 0 0])

Типы данных: single | double | logical | string | cell

Критерий, чтобы добавить или удалить условия, заданные как пара, разделенная запятой, состоящая из 'Criterion' и одно из этих значений:

  • 'sse'p - значение для F - тест изменения в сумме квадратичной невязки, которая следует из добавления или удаления термина

  • 'aic' — Изменитесь в значении Критерия информации о Akaike (AIC)

  • 'bic' — Изменитесь в значении Байесового информационного критерия (BIC)

  • 'rsquared' — Увеличение значения R 2

  • 'adjrsquared' — Увеличение значения настроенного R 2

Пример: 'Criterion','bic'

Наблюдения, чтобы исключить из подгонки, заданной как пара, разделенная запятой, состоящая из 'Exclude' и логического или числового индексного вектора указание, который наблюдения исключить из подгонки.

Например, можно исключить наблюдения 2 и 3 из 6 использований любого из следующих примеров.

Пример: 'Exclude',[2,3]

Пример: 'Exclude',logical([0 1 1 0 0 0])

Типы данных: single | double | logical

Индикатор для постоянного термина (прерывание) в подгонке, заданной как пара, разделенная запятой, состоящая из 'Intercept' и или true, чтобы включать или false, чтобы удалить постоянный термин из модели.

Используйте 'Intercept' только при определении модели с помощью вектора символов или представьте в виде строки скаляр, не формулу или матрицу.

Пример: 'Intercept',false

Образцовые условия описания спецификации, которые не могут быть удалены из модели, задали как пара, разделенная запятой, состоящая из 'Lower' и одна из опций для modelspec, называющего модель.

Пример: 'Lower','linear'

Максимальное количество шагов, чтобы взять, заданный как пара, разделенная запятой, состоящая из 'NSteps' и положительного целого числа.

Пример: 'NSteps',5

Типы данных: single | double

Порог для критерия, чтобы добавить термин, заданный как пара, разделенная запятой, состоящая из 'PEnter' и скалярного значения, как описано в этой таблице.

КритерийЗначение по умолчаниюРешение
'SSE'0.05Если p - значение F - статистическая величина является меньше, чем PEnter (p - значение, чтобы войти), добавьте термин в модель.
'AIC'0Если изменение в AIC модели является меньше, чем PEnter, добавьте термин в модель.
'BIC'0Если изменение в BIC модели является меньше, чем PEnter, добавьте термин в модель.
'Rsquared'0.1Если увеличение значения R-squared модели больше, чем PEnter, добавьте термин в модель.
'AdjRsquared'0Если увеличение настроенного значения R-squared модели больше, чем PEnter, добавьте термин в модель.

Для получения дополнительной информации смотрите аргумент пары "имя-значение" Criterion.

Пример: 'PEnter',0.075

Переменные прогноза, чтобы использовать в подгонке, заданной как пара, разделенная запятой, состоящая из 'PredictorVars' и или массив строк или массив ячеек из символьных векторов имен переменных в таблице или массиве набора данных tbl или логический или числовой индексный вектор указание, какие столбцы являются переменными прогноза.

Значения строки или векторы символов должны быть среди имен в tbl или имен, вы задаете использование аргумента пары "имя-значение" 'VarNames'.

Значением по умолчанию являются все переменные в X или все переменные в tbl за исключением ResponseVar.

Например, можно задать вторые и третьи переменные как переменные прогноза с помощью любого из следующих примеров.

Пример: 'PredictorVars',[2,3]

Пример: 'PredictorVars',logical([0 1 1 0 0 0])

Типы данных: single | double | logical | string | cell

Порог для критерия, чтобы удалить термин, заданный как пара, разделенная запятой, состоящая из 'PRemove' и скалярного значения, как описано в этой таблице.

КритерийЗначение по умолчаниюРешение
'SSE'0.10Если p - значение F - статистическая величина больше, чем PRemove (p - значение, чтобы удалить), удалите термин из модели.
'AIC'0.01Если изменение в AIC модели больше, чем PRemove, удалите термин из модели.
'BIC'0.01Если изменение в BIC модели больше, чем PRemove, удалите термин из модели.
'Rsquared'0.05Если увеличение значения R-squared модели является меньше, чем PRemove, удалите термин из модели.
'AdjRsquared'-0.05Если увеличение настроенного значения R-squared модели является меньше, чем PRemove, удалите термин из модели.

На каждом шаге функция stepwiselm также проверяет, избыточен ли термин (линейно зависимый) с другими условиями в текущей модели. Когда любой термин линейно зависит с другими условиями в текущей модели, функция stepwiselm удаляет избыточный термин, независимо от значения критерия.

Для получения дополнительной информации смотрите аргумент пары "имя-значение" Criterion.

Пример: 'PRemove',0.05

Переменная отклика, чтобы использовать в подгонке, заданной как пара, разделенная запятой, состоящая из 'ResponseVar' и или вектор символов или представить в виде строки скаляр, содержащий имя переменной в таблице или массиве набора данных tbl или логический или числовой индексный вектор указание, какой столбец является переменной отклика. Обычно необходимо использовать 'ResponseVar' при подборе кривой таблице или массиву набора данных tbl.

Например, можно задать четвертую переменную, сказать yield, как ответ из шести переменных, одним из следующих способов.

Пример: 'ResponseVar','yield'

Пример: 'ResponseVar',[4]

Пример: 'ResponseVar',logical([0 0 0 1 0 0])

Типы данных: single | double | logical | char | string

Образцовая спецификация, описывающая самый большой набор условий в подгонке, заданной как пара, разделенная запятой, состоящая из 'Upper' и одна из опций для modelspec, называющего модель.

Пример: 'Upper','quadratic'

Имена переменных, заданных как пара, разделенная запятой, состоящая из 'VarNames' и массива строк или массива ячеек из символьных векторов включая имена для столбцов X сначала и имя для переменной отклика y в последний раз.

'VarNames' не применим к переменным в таблице или массиве набора данных, потому что те переменные уже имеют имена.

Например, если в ваших данных, лошадиная сила, ускорение, и модельный год автомобилей являются переменными прогноза, и мили на галлон (MPG) являются переменной отклика, то можно назвать переменные можно следующим образом.

Пример: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

Типы данных: string | cell

Управляйте для отображения информации, указанной как пара, разделенная запятой, состоящая из 'Verbose' и одно из этих значений:

  • 0 — Подавите все отображение.

  • 1 — Отобразите меры, принятые на каждом шаге.

  • 2 — Отобразите процесс оценки и меры, принятые на каждом шаге.

Пример: 'Verbose',2

Веса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights' и n-by-1 вектор неотрицательных скалярных значений, где n является количеством наблюдений.

Типы данных: single | double

Выходные аргументы

свернуть все

Линейная модель, представляющая припадок наименьших квадратов ответа на данные, возвращенные как объект LinearModel.

Для свойств и методов линейного объекта модели, mdl, смотрите страницу класса LinearModel.

Больше о

свернуть все

Матрица условий

Матрица условий T является t (p + 1) матричные условия определения в модели, где t является количеством условий, p, является количеством переменных прогноза и +1 счетом на переменную отклика. Значение T(i,j) является экспонентой переменной j в термине i.

Например, предположите, что вход включает три переменные прогноза A, B, и C и переменная отклика Y в порядке A, B, C и Y. Каждая строка T представляет один термин:

  • [0 0 0 0] — Постоянный термин или прерывание

  • [0 1 0 0]B; эквивалентно, A^0 * B^1 * C^0

  • [1 0 1 0]A*C

  • [2 0 0 0]A^2

  • [0 1 2 0]B*(C^2)

0 в конце каждого термина представляет переменную отклика. В целом вектор-столбец из нулей в матрице условий представляет положение переменной отклика. Если у вас есть переменные прогноза и переменные отклика в матрице и вектор-столбце, то необходимо включать 0 для переменной отклика в последнем столбце каждой строки.

Формула

Формула для образцовой спецификации является вектором символов или скаляром строки формы 'Y ~ terms'.

  • Y является именем ответа.

  • terms представляет условия предиктора в модели с помощью обозначения Уилкинсона.

Например:

  • 'Y ~ A + B + C' задает линейную модель с тремя переменными с прерыванием.

  • 'Y ~ A + B + C – 1' задает линейную модель с тремя переменными без прерывания. Обратите внимание на то, что формулы включают константу (прерывание) термин по умолчанию. Чтобы исключить постоянный термин из модели, необходимо включать –1 в формулу.

Обозначение Уилкинсона

Обозначение Уилкинсона описывает условия, существующие в модели. Обозначение относится к условиям, существующим в модели, не ко множителям (коэффициенты) тех условий.

Обозначение Уилкинсона использует эти символы:

  • Средние значения + включают следующую переменную.

  • Средние значения не включают следующую переменную.

  • : задает взаимодействие, которое является продуктом условий.

  • * задает взаимодействие и все условия более низкоуровневые.

  • ^ возводит предиктор в степень, точно как в повторенном *, таким образом, ^ включает условия более низкоуровневые также.

  • Условия групп ().

Эта таблица показывает типичные примеры обозначения Уилкинсона.

Обозначение УилкинсонаТермин в стандартном обозначении
1Постоянный (прерывание) термин
A^k, где k является положительным целым числомA, A2..., Ak
A + BA, B
A*BA, B, A*B
A:BA*B только
–BНе включайте B
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C – A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

Обозначение Statistics and Machine Learning Toolbox™ всегда включает постоянный термин, если вы явным образом не удаляете термин с помощью –1.

Для получения дополнительной информации смотрите Обозначение Уилкинсона.

Советы

  • Вы не можете использовать устойчивую регрессию с пошаговой регрессией. Проверяйте свои данные на выбросы перед использованием stepwiselm.

  • Для других методов, таких как anova или свойства объекта LinearModel, смотрите LinearModel.

  • После обучения модель можно сгенерировать код C/C++, который предсказывает ответы для новых данных. Генерация кода C/C++ требует MATLAB® Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.

Алгоритмы

  • Stepwise regression является систематическим методом для добавления и удаления условий от линейного или обобщенного, линейного основанный на модели на их статистическом значении в объяснении переменной отклика. Метод начинается с первоначальной модели, заданное использование modelspec, и затем сравнивает объяснительную силу инкрементно больших и меньших моделей.

    Функция stepwiselm использует прямую и обратную пошаговую регрессию, чтобы определить итоговую модель. На каждом шаге функция ищет условия, чтобы добавить к модели или удалить из основанного на модели на значении аргумента пары "имя-значение" 'Criterion'.

    Значением по умолчанию 'Criterion' для модели линейной регрессии является 'sse'. В этом случае stepwiselm и step LinearModel используют p - значение F - статистическая величина к тестовым моделям с и без потенциального термина в каждом шаге. Если бы термин не находится в настоящее время в модели, нулевая гипотеза - то, что термин имел бы нулевой коэффициент, если добавлено к модели. Если существуют достаточные доказательства, чтобы отклонить нулевую гипотезу, функция добавляет термин в модель. С другой стороны, если термин находится в настоящее время в модели, нулевая гипотеза - то, что термин имеет нулевой коэффициент. Если существуют недостаточные доказательства, чтобы отклонить нулевую гипотезу, функция удаляет термин из модели.

    Пошаговая регрессия делает эти шаги, когда 'Criterion' является 'sse':

    1. Соответствуйте первоначальной модели.

    2. Исследуйте набор доступных условий не в модели. Если какое-либо из условий имеет p - значения меньше, чем допуск входа (то есть, если бы маловероятно, что термин имел бы нулевой коэффициент, если добавлено к модели), добавьте термин с самым маленьким p - значение и повторите этот шаг; в противном случае перейдите к шагу 3.

    3. Если какой-либо из доступных членов в модели имеет p - значения, больше, чем выходной допуск (то есть, гипотеза нулевого коэффициента не может быть отклонена), удалите термин с самым большим p - значение и возвратитесь к шагу 2; в противном случае закончите процесс.

    На любом этапе функция не добавит термин высшего порядка, если модель не будет также включать все условия более низкоуровневые, которые являются подмножествами термина высшего порядка. Например, функция не попытается добавить термин X1:X2^2, если и X1 и X2^2 уже не будут в модели. Точно так же функция не удалит условия более низкоуровневые, которые являются подмножествами условий высшего порядка, которые остаются в модели. Например, функция не попытается удалить X1 или X2^2, если X1:X2^2 останется в модели.

    Значением по умолчанию 'Criterion' для обобщенной линейной модели является 'Deviance'. stepwiseglm и step GeneralizedLinearModel выполняют подобную процедуру для добавления или удаления условий.

    Можно задать другие критерии при помощи аргумента пары "имя-значение" 'Criterion'. Например, можно задать изменение в значении критерия информации о Akaike, Байесового информационного критерия, R-squared или настроенного R-squared как критерий, чтобы добавить или удалить условия.

    В зависимости от условий, включенных в первоначальную модель и порядок, в котором функция добавляет и удаляет условия, функциональная сила создает различные модели от того же набора потенциальных условий. Функция останавливается, когда никакой один шаг не улучшает модель. Однако различная первоначальная модель или различная последовательность шагов не гарантируют лучшую подгонку. В этом смысле пошаговые модели локально оптимальны, но не могут быть глобально оптимальными.

  • stepwiselm обрабатывает категориальный предиктор можно следующим образом:

    • Модель с категориальным предиктором, который имеет уровни L (категории), включает   переменные индикатора L - 1. Модель использует первую категорию в качестве контрольного уровня, таким образом, это не включает переменную индикатора для контрольного уровня. Если типом данных категориального предиктора является categorical, то можно проверять порядок категорий при помощи categories и переупорядочить категории при помощи reordercats, чтобы настроить контрольный уровень.

    • stepwiselm обрабатывает группу   переменных индикатора L - 1 как одна переменная. Если вы хотите обработать переменные индикатора как отличные переменные прогноза, создайте переменные индикатора вручную при помощи dummyvar. Затем используйте переменные индикатора, кроме той, соответствующей контрольному уровню категориальной переменной, когда вы подберете модель. Для категориального предиктора X, если вы задаете все столбцы dummyvar(X) и термина прерывания в качестве предикторов, затем матрица проекта, становится неполным рангом.

    • Периоды взаимодействия между непрерывным предиктором и категориальным предиктором с уровнями L состоят из поэлементного произведения   переменных индикатора L - 1 с непрерывным предиктором.

    • Периоды взаимодействия между двумя категориальными предикторами с L и уровнями M состоят из (L – 1) *   переменные индикатора (M - 1), чтобы включать все возможные комбинации двух категориальных уровней предиктора.

    • Вы не можете задать условия высшего порядка для категориального предиктора, потому что квадрат индикатора равен себе.

    Поэтому, если stepwiselm добавляет или удаляет категориальный предиктор, функция на самом деле добавляет или удаляет группу переменных индикатора за один шаг. Точно так же, если stepwiselm добавляет или удаляет период взаимодействия с категориальным предиктором, функция на самом деле добавляет или удаляет группу периодов взаимодействия включая категориальный предиктор.

  • stepwiselm полагает, что NaN, '' (пустой символьный вектор), "" (пустая строка), <missing> и значения <undefined> в tbl, X и Y отсутствующие значения. stepwiselm не использует наблюдения с отсутствующими значениями в подгонке. Свойство ObservationInfo подобранной модели указывает, использует ли stepwiselm каждое наблюдение в подгонке.

Альтернативная функциональность

  • Можно создать модель с помощью fitlm, и затем вручную настроить модель с помощью step, addTerms или removeTerms.

Введенный в R2013b