exponenta event banner

addTerms

Добавление членов в обобщенную модель линейной регрессии

Описание

пример

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

Примеры

свернуть все

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

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

rng('default') % For reproducibility
rndvars = randn(100,2);
X = [2 + rndvars(:,1),rndvars(:,2)];
mu = exp(1 + X*[1;2]);
y = poissrnd(mu);

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

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)     2.7784      0.014043    197.85      0   
    x1              1.1732     0.0033653     348.6      0   


100 observations, 98 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 1.25e+05, p-value = 0

Добавьте второй предиктор к модели.

mdl1 = addTerms(mdl,'x2')
mdl1 = 
Generalized linear regression model:
    log(y) ~ 1 + x1 + x2
    Distribution = Poisson

Estimated Coefficients:
                   Estimate       SE        tStat     pValue
                   ________    _________    ______    ______

    (Intercept)     1.0405      0.022122    47.034      0   
    x1              0.9968      0.003362    296.49      0   
    x2               1.987     0.0063433    313.24      0   


100 observations, 97 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 2.95e+05, p-value = 0

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

свернуть все

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

Термины, добавляемые к регрессионной модели mdl, указано как одно из следующих:

  • Вектор символов или строковая скалярная формула в нотации Уилкинсона, представляющая один или несколько терминов. Имена переменных в формуле должны быть допустимыми идентификаторами MATLAB ®.

  • Матрица терминов T размера t-by-p, где t - число членов, а p - число переменных предиктора в mdl. Значение T(i,j) - экспонента переменной j в термине i.

    Например, предположим mdl имеет три переменные A, B, и C в таком порядке. Каждая строка T представляет собой один термин:

    • [0 0 0] - Постоянный термин или перехват

    • [0 1 0]B; эквивалентно, A^0 * B^1 * C^0

    • [1 0 1]A*C

    • [2 0 0]A^2

    • [0 1 2]B*(C^2)

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

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

свернуть все

Обобщенная модель линейной регрессии с дополнительными членами, возвращенная как GeneralizedLinearModel объект. NewMdl - это новая модель, которая использует входные данные и настройки в mdl с дополнительными условиями, указанными в terms.

Перезапись входного аргумента mdl, назначить вновь установленную модель mdl:

mdl = addTerms(mdl,terms);

Подробнее

свернуть все

Нотация Уилкинсона

Нотация Уилкинсона описывает термины, присутствующие в модели. Обозначение относится к терминам, присутствующим в модели, а не к умножителям (коэффициентам) этих терминов.

Нотация Уилкинсона использует следующие символы:

  • + средства включают следующую переменную.

  • означает не включать следующую переменную.

  • : определяет взаимодействие, которое является продуктом терминов.

  • * определяет взаимодействие и все термины нижнего порядка.

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

  • () группирует термины.

В этой таблице приведены типичные примеры нотации Уилкинсона.

Нотация УилкинсонаТермины в стандартной нотации
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

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

Алгоритмы

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

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

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

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

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

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

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

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

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

  • Использовать step для оптимального улучшения модели путем добавления или удаления терминов.

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

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