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