exponenta event banner

addTerms

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

Описание

пример

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

Примеры

свернуть все

Создание модели линейной регрессии carsmall набор данных без каких-либо взаимодействий, а затем добавьте термин взаимодействия.

Загрузить carsmall набор данных и создание модели MPG как функции веса и года модели.

load carsmall
tbl = table(MPG,Weight);
tbl.Year = categorical(Model_Year);
mdl = fitlm(tbl,'MPG ~ Year + Weight^2')
mdl = 
Linear regression model:
    MPG ~ 1 + Weight + Year + Weight^2

Estimated Coefficients:
                    Estimate         SE         tStat       pValue  
                   __________    __________    _______    __________

    (Intercept)        54.206        4.7117     11.505    2.6648e-19
    Weight          -0.016404     0.0031249    -5.2493    1.0283e-06
    Year_76            2.0887       0.71491     2.9215     0.0044137
    Year_82            8.1864       0.81531     10.041    2.6364e-16
    Weight^2       1.5573e-06    4.9454e-07      3.149     0.0022303


Number of observations: 94, Error degrees of freedom: 89
Root Mean Squared Error: 2.78
R-squared: 0.885,  Adjusted R-Squared: 0.88
F-statistic vs. constant model: 172, p-value = 5.52e-41

Модель включает пять терминов, Intercept, Weight, Year_76, Year_82, и Weight^2, где Year_76 и Year_82 являются переменными индикатора для категориальной переменной Year имеет три различных значения.

Добавление термина взаимодействия между Year и Weight переменные в mdl.

terms = 'Year*Weight';
NewMdl = addTerms(mdl,terms)
NewMdl = 
Linear regression model:
    MPG ~ 1 + Weight*Year + Weight^2

Estimated Coefficients:
                       Estimate          SE         tStat        pValue  
                      ___________    __________    ________    __________

    (Intercept)            48.045         6.779      7.0874    3.3967e-10
    Weight              -0.012624     0.0041455     -3.0454     0.0030751
    Year_76                2.7768        3.0538     0.90931        0.3657
    Year_82                16.416        4.9802      3.2962     0.0014196
    Weight:Year_76    -0.00020693    0.00092403    -0.22394       0.82333
    Weight:Year_82     -0.0032574     0.0018919     -1.7217      0.088673
    Weight^2           1.0121e-06      6.12e-07      1.6538       0.10177


Number of observations: 94, Error degrees of freedom: 87
Root Mean Squared Error: 2.76
R-squared: 0.89,  Adjusted R-Squared: 0.882
F-statistic vs. constant model: 117, p-value = 1.88e-39

NewMdl включает два дополнительных срока, Weight*Year_76 и Weight*Year_82.

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

свернуть все

Модель линейной регрессии, заданная как LinearModel объект, созданный с помощью fitlm или stepwiselm.

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

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

свернуть все

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

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

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

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

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

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

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

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