GeneralizedLinearModel.stepwise

Класс: GeneralizedLinearModel

(Не Рекомендуемый), Создают обобщенную модель линейной регрессии пошаговой регрессией

GeneralizedLinearModel.stepwise не рекомендуется. Используйте stepwiseglm вместо этого.

Синтаксис

mdl = GeneralizedLinearModel.stepwise(tbl,modelspec)
mdl = GeneralizedLinearModel.stepwise(X,y,modelspec)
mdl = GeneralizedLinearModel.stepwise(...,modelspec,Name,Value)

Описание

mdl = GeneralizedLinearModel.stepwise(tbl,modelspec) создает обобщенную линейную модель таблицы или массива набора данных tbl, с помощью пошаговой регрессии, чтобы добавить или удалить предикторы. modelspec является стартовой моделью для пошаговой процедуры.

mdl = GeneralizedLinearModel.stepwise(X,y,modelspec) создает обобщенную линейную модель ответов y к матрице данных X, с помощью пошаговой регрессии, чтобы добавить или удалить предикторы.

mdl = GeneralizedLinearModel.stepwise(...,modelspec,Name,Value) создает обобщенную линейную модель с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

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

Входные данные, заданные как таблица или массив набора данных. Когда modelspec является формулой, формула задает переменные прогноза и переменные отклика. В противном случае, если вы не задаете переменные прогноза и переменные отклика, последняя переменная в tbl является переменной отклика, и другие - переменные прогноза по умолчанию.

Переменные прогноза и переменная отклика могут быть числовыми, логическими, категориальными, символ или строка. Переменная отклика может иметь тип данных кроме числового, только если 'Distribution' является 'binomial'.

Чтобы установить различный столбец как переменную отклика, используйте аргумент пары "имя-значение" ResponseVar. Чтобы использовать подмножество столбцов как предикторы, используйте аргумент пары "имя-значение" PredictorVars.

Переменные прогноза, заданные как n-by-p матрица, где n является количеством наблюдений и p, являются количеством переменных прогноза. Каждый столбец X представляет одну переменную, и каждая строка представляет одно наблюдение.

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

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

Переменная отклика, заданная как n-by-1 вектор, где n является количеством наблюдений. Каждая запись в y является ответом для соответствующей строки X.

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

Стартовая модель, заданная как одно из следующего:

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

    ЗначениеТип модели
    'constant'Модель содержит только константу (прерывание) термин.
    'linear'Модель содержит прерывание и линейный член для каждого предиктора.
    'interactions'Модель содержит прерывание, линейный член для каждого предиктора и все продукты пар отличных предикторов (никакие условия в квадрате).
    'purequadratic'Модель содержит термин прерывания и линейный и придает условиям квадратную форму для каждого предиктора.
    'quadratic'Модель содержит термин прерывания, линейный, и придает квадратную форму условиям для каждого предиктора и всем продуктам пар отличных предикторов.
    'polyijk'Модель является полиномом со всеми условиями до степени i в первом предикторе, степень j во втором предикторе, и так далее. Задайте максимальную степень для каждого предиктора при помощи цифр 0 хотя 9. Модель содержит периоды взаимодействия, но степень каждого периода взаимодействия не превышает максимальное значение заданных степеней. Например, 'poly13' имеет прерывание и x 1, x 2, x 22, x 23, x 1*x2, и x 1*x22 условия, где x 1 и x 2 является первыми и вторыми предикторами, соответственно.
  • t (p +1) матрица, а именно, матрица условий, задавая условия, чтобы включать в модель, где t является количеством условий и p, является количеством переменных прогноза, и плюс каждый для переменной отклика.

  • Вектор символов или скаляр строки представление формулы в форме

    'Y ~ terms',

    где terms находится в Обозначении Уилкинсона.

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

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

Количество испытаний за биномиальное распределение, которое является объемом выборки, заданным как пара, разделенная запятой, состоящая из скалярного значения или вектор той же длины как ответ. Это - параметр n для подходящего биномиального распределения. BinomialSize применяется только, когда параметром Distribution является 'binomial'.

Если BinomialSize является скалярным значением, которое означает, что все наблюдения имеют то же количество испытаний.

Как альтернатива BinomialSize, можно задать ответ как 2D вектор-столбец с количествами в столбце 1 и BinomialSize в столбце 2.

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

Категориальный список переменных, заданный как пара, разделенная запятой, состоящая из 'CategoricalVars' и или массив строк или массив ячеек из символьных векторов, содержащий категориальные имена переменных в таблице или массиве набора данных tbl или логический или числовой индексный вектор указание, какие столбцы являются категориальными.

  • Если данные находятся в таблице или массиве набора данных tbl, то по умолчанию GeneralizedLinearModel.stepwise обрабатывает все категориальные значения, логические значения, символьные массивы, строковые массивы и массивы ячеек из символьных векторов как категориальные переменные.

  • Если данные находятся в матричном X, то значением по умолчанию 'CategoricalVars' является пустой матричный []. Таким образом, никакая переменная не является категориальной, если вы не задаете его как категориальный.

Например, можно задать наблюдения 2 и 3 из 6 как категориальное использование любого из следующих примеров.

Пример: 'CategoricalVars',[2,3]

Пример: 'CategoricalVars',logical([0 1 1 0 0 0])

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

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

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

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

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

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

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

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

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

Индикатор, чтобы вычислить дисперсионный параметр для 'binomial' и дистрибутивов 'poisson', заданных как пара, разделенная запятой, состоящая из 'DispersionFlag' и одно из следующих.

trueОцените дисперсионный параметр при вычислении стандартных погрешностей
falseЗначение по умолчанию. Используйте теоретическое значение при вычислении стандартных погрешностей

Подходящая функция всегда оценивает дисперсию для других дистрибутивов.

Пример: 'DispersionFlag',true

Распределение переменной отклика, заданной как пара, разделенная запятой, состоящая из 'Distribution' и одно из следующих.

'normal'Нормальное распределение
'binomial'Биномиальное распределение
'poisson'Распределение Пуассона
'gamma'Гамма распределение
'inverse gaussian'Обратное Распределение Гаусса

Пример: 'Distribution','gamma'

Наблюдения, чтобы исключить из подгонки, заданной как пара, разделенная запятой, состоящая из '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'

Сместите переменную в подгонке, заданной как пара, разделенная запятой, состоящая из 'Offset' и вектора или имени переменной с той же длиной как ответ.

GeneralizedLinearModel.stepwise использует Offset в качестве дополнительного предиктора с содействующим значением, зафиксированным в 1,0. Другими словами, формула для подбора кривой

f (μ) ~ Offset + (terms involving real predictors)

с предиктором Offset, имеющим коэффициент 1.

Например, рассмотрите модель регрессии Пуассона. Предположим, что количество количеств известно по теоретическим причинам быть пропорциональным предиктору A. При помощи логарифмической функции ссылки и путем определения log(A) как смещения, можно обеспечить модель, чтобы удовлетворить это теоретическое ограничение.

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

Порог для критерия, чтобы добавить термин, заданный как пара, разделенная запятой, состоящая из '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

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

Значения строки или векторы символов должны быть среди имен в tbl или имен, вы задаете использование аргумента пары "имя-значение" 'VarNames'.

Значением по умолчанию являются все переменные в X или все переменные в tbl за исключением ResponseVar.

Например, можно задать вторые и третьи переменные как переменные прогноза с помощью любого из следующих примеров.

Пример: 'PredictorVars',[2,3]

Пример: 'PredictorVars',logical([0 1 1 0 0 0])

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

Порог для критерия, чтобы удалить термин, заданный как пара, разделенная запятой, состоящая из '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, удалите термин из модели.

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

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

Например, если в ваших данных, лошадиная сила, ускорение, и модельный год автомобилей являются переменными прогноза, и мили на галлон (MPG) являются переменной отклика, то можно назвать переменные можно следующим образом.

Пример: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

Типы данных: string | cell

Веса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights' и n-by-1 вектор неотрицательных скалярных значений, где n является количеством наблюдений.

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

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

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

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

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

Примеры

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

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

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

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

Соответствуйте обобщенной линейной модели с помощью распределения Пуассона.

mdl =  stepwiseglm(X,y,...
    'constant','upper','linear','Distribution','poisson')
1. Adding x5, Deviance = 134.439, Chi2Stat = 52.24814, PValue = 4.891229e-13
2. Adding x15, Deviance = 106.285, Chi2Stat = 28.15393, PValue = 1.1204e-07
3. Adding x10, Deviance = 95.0207, Chi2Stat = 11.2644, PValue = 0.000790094
mdl = 
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

Больше о

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

Советы

  • Обобщенная линейная модель mdl является стандартной линейной моделью, если вы не задаете в противном случае с парой "имя-значение" Distribution.

  • Для других методов, таких как devianceTest или свойства объекта GeneralizedLinearModel, смотрите GeneralizedLinearModel.

Алгоритмы

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

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

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

Альтернативы

Можно также создать пошаговую обобщенную линейную модель с помощью stepwiseglm.

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

Ссылки

[1] Collett, D. Моделирование двоичных данных. Нью-Йорк: Chapman & Hall, 2002.

[2] Добсон, A. J. Введение в обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.

[3] Маккуллаг, P. и Дж. А. Нелдер. Обобщенные линейные модели. Нью-Йорк: Chapman & Hall, 1990.