шаг

Класс: GeneralizedLinearModel

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

Синтаксис

mdl1 = step(mdl)
mdl1 = step(mdl,Name,Value)

Описание

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

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

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

развернуть все

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

Для свойств и методов обобщенного линейного объекта модели, mdl, смотрите страницу класса GeneralizedLinearModel.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

  • 'aic' — Изменитесь в значении Критерия информации о Akaike (AIC).

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

  • 'rsquared' — Увеличение значения R 2.

  • 'adjrsquared' — Увеличение значения настроенного R 2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 0 — Подавите все отображение.

  • 1 — Отобразите меры, принятые на каждом шаге.

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

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

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

развернуть все

Обобщенная линейная модель, возвращенная как объект GeneralizedLinearModel. Чтобы перезаписать mdl, установите mdl1, равный mdl.

Примеры

развернуть все

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

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

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

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

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

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)      1.1278    0.057487    19.618    1.0904e-85
    x1             0.061287     0.04848    1.2642       0.20617


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

Добавьте переменную в модель с помощью step.

mdl1 = step(mdl)
1. Adding x5, Deviance = 134.2976, Chi2Stat = 50.80176, PValue = 1.021821e-12
mdl1 = 
Generalized linear regression model:
    log(y) ~ 1 + x1 + x5
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE        tStat       pValue  
                   ________    ________    _______    __________

    (Intercept)      1.0418    0.062341     16.712      1.07e-62
    x1             0.018803    0.049916    0.37671       0.70639
    x5              0.47881    0.067875     7.0542    1.7357e-12


100 observations, 97 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 52.4, p-value = 4.21e-12

Добавьте другую переменную в модель с помощью step.

mdl1 = step(mdl1)
2. Adding x15, Deviance = 105.9973, Chi2Stat = 28.30027, PValue = 1.038814e-07
mdl1 = 
Generalized linear regression model:
    log(y) ~ 1 + x1 + x5 + x15
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE        tStat       pValue  
                   ________    ________    _______    __________

    (Intercept)      1.0459      0.0627     16.681    1.7975e-62
    x1             0.026907     0.05003    0.53782        0.5907
    x5               0.3983    0.068376     5.8251    5.7073e-09
    x15             0.28949    0.053992     5.3618    8.2375e-08


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

Советы

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

Алгоритмы

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

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

  • 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, чтобы добавить или удалить конкретные условия.