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'Модель содержит член точки пересечения, линейные и квадратные условия для каждого предиктора и все продукты пар различных предикторов.
    'poly <reservedrangesplaceholder0>'Модель является полиномом со всеми терминами до степени i в первом предикторе, степень j во втором предикторе и так далее. Задайте максимальную степень для каждого предиктора с помощью цифр 0, хотя и 9. Модель содержит условия взаимодействия, но степень каждого термина взаимодействия не превышает максимальное значение заданных степеней. Для примера, 'poly13' имеет перехват и x 1, x 2, x 22, <reservedrangesplaceholder0> 23, x 1 * x 2 и x 1 * x 22 условия, где x 1 и x 2 являются первым и вторым предикторами, соответственно.
  • Матрица t -by-  (p + 1) или Матрица терминов, задающая членов в модели, где 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 -value для F -test изменения суммы квадратной ошибки, которое является результатом добавления или удаления термина

  • 'aic' - Изменение значения информационного критерия Akaike (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 -value F -statistic меньше 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 -value F -statistic больше 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)

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

Формула

Формула для спецификации модели является вектором символов или строковым скаляром вида 'y ~ <reservedrangesplaceholder0>'.

  • 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 + + требуется MATLAB Coder™. Для получения дополнительной информации смотрите Введение в генерацию кода .

Алгоритмы

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

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

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

    Ступенчатая регрессия делает эти шаги, когда '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 не использует наблюдения с отсутствующими значениями в подгонке. The ObservationInfo свойство подобранной модели указывает, указывает или нет stepwiselm использует каждое наблюдение в подгонке.

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

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

Введенный в R2013b