exponenta event banner

шаг

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КритерийЗначение по умолчаниюРешение
'Deviance'0.05Если p-значение F-статистики или хи-квадрата статистики меньше, чем PEnter (введите значение p), добавьте термин в модель.
'SSE'0.05Если p-значение F-статистики меньше, чем 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-значение F-статистики или хи-квадрата статистики больше, чем PRemove (удаляемое значение p), удалите термин из модели.
'SSE'0.10Если p-значение F-статистики больше, чем 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'Модель содержит член пересечения, линейные и квадратные члены для каждого предиктора и все произведения пар различных предикторов.
    '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 в Нотации Уилкинсона. Имена переменных в формуле должны быть допустимыми идентификаторами 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)

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

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

Алгоритмы

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

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

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

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

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

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

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

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

Представлен в R2012a