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 выполняет прямой выбор и добавляет x4x1 , и 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год, и 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' имеет точку пересечения и x 1, x 2, x 22x2 3, x 1*x2, и x 1*x22 термины, где x 1 и x 2 является первыми и вторыми предикторами, соответственно.
  • t (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 имя аргумента и 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' — Изменитесь в значении Критерия информации о 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 - значение 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' не применимо к переменным в таблице или массиве набора данных, потому что те переменные уже имеют имена.

Имена переменных не должны быть допустимыми идентификаторами 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 (p + 1) матричные термины определения в модели, где t является количеством терминов, p является количеством переменных предикторов и +1 счетом на переменную отклика. Значение T(i,j) экспонента переменной j в термине i.

Например, предположите, что вход включает три переменных предиктора x1x2 , и x3 и переменная отклика y в порядке x1x2 , 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 положительное целое числоx1x1 2x1 k
x1 + x2x1x2
x1*x2x1x2 x1, x2
x1:x2x1*x2 только
–x2Не включайте x2
x1*x2 + x3x1x2 , x3x1, x2
x1 + x2 + x3 + x1:x2x1x2 , x3x1, x2
x1*x2*x3 – x1:x2:x3x1x2 , x3x1, x2 , x1*x3, x2*x3
x1*(x2 + x3)x1x2 , x3x1, x2 , x1*x3

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

Советы

  • Вы не можете использовать устойчивую регрессию со ступенчатой регрессией. Проверяйте свои данные на выбросы перед использованием 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> значения в tblX, и Y быть отсутствующими значениями. stepwiselm не использует наблюдения с отсутствующими значениями в подгонке. ObservationInfo свойство подобранной модели указывает действительно ли stepwiselm использование каждое наблюдение в подгонке.

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

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

Введенный в R2013b