GeneralizedLinearModel.fit

Класс: GeneralizedLinearModel

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

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

Синтаксис

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

Описание

mdl = GeneralizedLinearModel.fit(tbl) создает обобщенную линейную модель таблицы или массива набора данных tbl.

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

mdl = GeneralizedLinearModel.fit(...,modelspec) создает обобщенную линейную модель, как задано modelspec.

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

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

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

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

  • По умолчанию, GeneralizedLinearModel.fit берет последнюю переменную в качестве переменной отклика и других как переменные предикторы.

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

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

  • Чтобы задать спецификацию модели, установите modelspec аргумент с помощью формулы или матрицы условий. Матрица формулы или условий задает который столбцы использовать в качестве переменных предикторов или переменных отклика.

Имена переменных в таблице не должны быть допустимыми идентификаторами MATLAB®. Однако, если имена не допустимы, вы не можете использовать формулу, когда вы соответствуете или настраиваете модель; например:

  • Вы не можете задать modelspec использование формулы.

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

  • Вы не можете использовать формулу, чтобы задать нижние и верхние границы модели, когда вы используете step или stepwiseglm функция с аргументами пары "имя-значение" 'Lower' и 'Upper', соответственно.

Можно проверить имена переменных в tbl при помощи isvarname функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

cellfun(@isvarname,tbl.Properties.VariableNames)
Если имена переменных в tbl не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);

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

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

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

Переменная отклика, заданная как вектор или матрица.

  • Если 'Distribution' не 'binomial', затем y должен быть n-by-1 вектор, где n является количеством наблюдений. Каждая запись в y ответ для соответствующей строки X. Тип данных должен быть одним или двойным.

  • Если 'Distribution' 'binomial', затем y может быть n-by-1 вектор или n-by-2 матрица с количествами в столбце 1 и BinomialSize в столбце 2.

Типы данных: 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 находятся в Обозначении Уилкинсона.

Пример: 'quadratic'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: 'ResponseVar','yield'

Пример: 'ResponseVar',[4]

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

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

Имена переменных, заданных как разделенная запятой пара, состоящая из 'VarNames' и массив строк или массив ячеек из символьных векторов включая имена для столбцов X во-первых, и имя для переменной отклика y в последний раз.

'VarNames' не применимо к переменным в таблице или массиве набора данных, потому что те переменные уже имеют имена.

Имена переменных не должны быть допустимыми идентификаторами MATLAB. Однако, если имена не допустимы, вы не можете использовать формулу, когда вы соответствуете или настраиваете модель; например:

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

  • Вы не можете использовать формулу, чтобы задать нижние и верхние границы модели, когда вы используете step или stepwiseglm функция с аргументами пары "имя-значение" 'Lower' и 'Upper', соответственно.

Прежде, чем задать 'VarNames',varNames, можно проверить имена переменных в varNames при помощи isvarname функция. Следующий код возвращает логический 1 TRUE) для каждой переменной, которая имеет допустимое имя переменной.

cellfun(@isvarname,varNames)
Если имена переменных в varNames не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName функция.
varNames = matlab.lang.makeValidName(varNames);

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

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

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

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

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

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

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

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

Примеры

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

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

Загрузите hospital массив набора данных.

load hospital
ds = hospital; % just to use the ds name

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

modelspec = 'Smoker ~ Age*Weight*Sex - Age:Weight:Sex';

Создайте обобщенную линейную модель.

mdl = fitglm(ds,modelspec,'Distribution','binomial')
mdl = 
Generalized linear regression model:
    logit(Smoker) ~ 1 + Sex*Age + Sex*Weight + Age*Weight
    Distribution = Binomial

Estimated Coefficients:
                        Estimate         SE         tStat      pValue 
                       ___________    _________    ________    _______

    (Intercept)            -6.0492       19.749     -0.3063    0.75938
    Sex_Male               -2.2859       12.424    -0.18399    0.85402
    Age                    0.11691      0.50977     0.22934    0.81861
    Weight                0.031109      0.15208     0.20455    0.83792
    Sex_Male:Age          0.020734      0.20681     0.10025    0.92014
    Sex_Male:Weight        0.01216     0.053168     0.22871     0.8191
    Age:Weight         -0.00071959    0.0038964    -0.18468    0.85348


100 observations, 93 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 5.07, p-value = 0.535

Большое p- значение указывает, что сила модели не отличается статистически от константы.

Больше о

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

Советы

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

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

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

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

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

Ссылки

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

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

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