exponenta event banner

stepwiselm

Выполнить пошаговую регрессию

Описание

пример

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 к модели со значением 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.

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

свернуть все

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

  • По умолчанию stepwiselm принимает последнюю переменную в качестве переменной ответа, а другие - в качестве переменных предиктора.

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

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

  • Чтобы определить спецификацию модели, задайте modelspec аргумент, использующий формулу или матрицу терминов. Формула или матрица терминов определяет, какие столбцы использовать в качестве предикторов или переменных ответа.

Имена переменных в таблице не обязательно должны быть допустимыми идентификаторами MATLAB ®. Однако если имена недопустимы, нельзя использовать формулу при подгонке или корректировке модели; например:

  • Невозможно указать modelspec используя формулу.

  • Нельзя использовать формулу, чтобы указать термины для добавления или удаления при использовании addTerms функции или removeTerms функция, соответственно.

  • Нельзя использовать формулу для указания нижней и верхней границ модели при использовании step или stepwiselm функция с аргументами пары имя-значение 'Lower' и 'Upper'соответственно.

Имена переменных можно проверить в tbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.

Переменные предиктора, определенные как матрица 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' имеет члены перехвата и 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. Поэтому порядок членов в модели может отличаться от порядка членов в указанной формуле.

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

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

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

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

  • 'aic' - Изменение значения информационного критерия Акаике (АПК)

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

  • 'rsquared' - Увеличение стоимости R2

  • 'adjrsquared' - Увеличение величины скорректированного R2

Пример: '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-квадрата модели больше, чем PEnter, добавьте термин в модель.
'AdjRsquared'0Если увеличение скорректированного значения R-квадрата модели больше, чем 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-квадрата модели меньше PRemove, удалите термин из модели.
'AdjRsquared'-0.05Если увеличение скорректированного значения R-квадрата модели меньше 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' неприменима к переменным в таблице или массиве набора данных, поскольку эти переменные уже имеют имена.

Имена переменных не обязательно должны быть допустимыми идентификаторами MATLAB. Однако если имена недопустимы, нельзя использовать формулу при подгонке или корректировке модели; например:

  • Нельзя использовать формулу, чтобы указать термины для добавления или удаления при использовании addTerms функции или removeTerms функция, соответственно.

  • Нельзя использовать формулу для указания нижней и верхней границ модели при использовании step или stepwiselm функция с аргументами пары имя-значение 'Lower' и 'Upper'соответственно.

Перед указанием 'VarNames',varNames, можно проверить имена переменных в varNames с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.

Пример: '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-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 + x2x1, x2
x1*x2x1, x2, x1*x2
x1:x2x1*x2 только
–x2Не включать x2
x1*x2 + x3x1, x2, x3, x1*x2
x1 + x2 + x3 + x1:x2x1, x2, x3, x1*x2
x1*x2*x3 – x1:x2:x3x1, x2, x3, x1*x2, x1*x3, x2*x3
x1*(x2 + x3)x1, x2, x3, x1*x2, x1*x3

Дополнительные сведения см. в статье Нотация Уилкинсона.

Совет

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

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

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

Алгоритмы

  • Ступенчатая регрессия - это систематический метод добавления и удаления членов из линейной или обобщенной линейной модели на основе их статистической значимости при объяснении переменной ответа. Метод начинается с начальной модели, указанной с помощью 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' аргумент пары имя-значение. Например, можно указать изменение значения информационного критерия Акаике, байесовского информационного критерия, R-квадрата или скорректированного R-квадрата в качестве критерия для добавления или удаления членов.

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

  • 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