step

Улучшите обобщенную линейную регрессионую модель путем добавления или удаления членов

Описание

NewMdl = step(mdl) возвращает обобщенную линейную регрессионую модель, основанную на mdl использование ступенчатой регрессии для добавления или удаления одного предиктора.

пример

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

Примеры

свернуть все

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

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

rng('default') % For reproducibility
X = randn(100,20);
mu = exp(X(:,[5 10 15])*[.4;.2;.3] + 1);
y = poissrnd(mu);

Создайте обобщенную линейную регрессионую модель данных Пуассона с помощью X(:,2) как единственный предиктор.

mdl = fitglm(X,y,'y ~ x2','Distribution','poisson')
mdl = 
Generalized linear regression model:
    log(y) ~ 1 + x2
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE        tStat       pValue  
                   ________    ________    _______    __________

    (Intercept)      1.1386    0.056722     20.073    1.2817e-89
    x2             0.010768    0.056564    0.19037       0.84902


100 observations, 98 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 0.0362, p-value = 0.849

Улучшите mdl при помощи step. Задайте 'NSteps' как 5, чтобы позволить самое большее 5 шагов ступенчатой регрессии.

mdl1 = step(mdl,'NSteps',5)
1. Adding x5, Deviance = 134.4375, Chi2Stat = 52.21338, PValue = 4.978574e-13
2. Adding x15, Deviance = 106.1925, Chi2Stat = 28.24496, PValue = 1.068927e-07
3. Adding x10, Deviance = 94.708, Chi2Stat = 11.4845, PValue = 0.000701792
4. Removing x2, Deviance = 95.021, Chi2Stat = 0.31263, PValue = 0.57607
mdl1 = 
Generalized linear regression model:
    log(y) ~ 1 + x5 + x10 + x15
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)     1.0115     0.064275    15.737    8.4217e-56
    x5             0.39508     0.066665    5.9263    3.0977e-09
    x10            0.18863      0.05534    3.4085     0.0006532
    x15            0.29295     0.053269    5.4995    3.8089e-08


100 observations, 96 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 91.7, p-value = 9.61e-20

step добавляет три переменные предиктора, используемые для генерации переменной отклика, в модель и удаляет X(:,2) из модели.

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

свернуть все

Обобщенная линейная регрессионая модель, заданная как GeneralizedLinearModel объект, созданный с помощью fitglm или stepwiseglm.

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

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

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

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

  • 'Deviance' - p -value для F-теста или хи-квадратичного теста изменения отклонения, которое является результатом добавления или удаления термина. F-test проверяет одну модель, а тест хи-квадрат сравнивает две различные модели.

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

  • 'aic' - Изменение значения информационного критерия Akaike (AIC).

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

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

  • 'adjrsquared' - Увеличение значения скорректированных R2.

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

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

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

    ЗначениеТип модели
    '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 находятся в Обозначении Уилкинсона. Имена переменных в формуле должны быть допустимыми MATLAB® идентификаторы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ЗначениеТип модели
    '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 находятся в Обозначении Уилкинсона. Имена переменных в формуле должны быть допустимыми идентификаторами MATLAB.

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

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

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

  • 0 - Подавить отображение всех элементов.

  • 1 - Отображать действие, выполняемое на каждом шаге.

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

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

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

свернуть все

Обобщенная линейная регрессионая модель, возвращенная как GeneralizedLinearModel объект.

Чтобы перезаписать входной параметр mdl, присвойте новую модель mdl.

mdl = step(mdl);

Подробнее о

свернуть все

Матрица терминов

Матрица терминов 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

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

Алгоритмы

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

    step функция использует прямую и обратную ступенчатую регрессию, чтобы определить окончательную модель. На каждом шаге функция ищет условия, чтобы добавить к модели или удалить из модели на основе значения '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-квадрата в качестве критерия для добавления или удаления членов.

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

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

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

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

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

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

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

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

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

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

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

  • Использование addTerms или removeTerms чтобы добавить или удалить определенные условия.

Расширенные возможности

Введенный в R2012a