addTerms

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

Синтаксис

NewMdl = addTerms(mdl,terms)

Описание

пример

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 регрессии, заданной как одно из следующего:

  • Формула в Обозначении Уилкинсона, представляющем одно или несколько условий.

  • Матрица условий размера 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Постоянный (прерывание) термин
A^k, где k является положительным целым числомA, A2..., Ak
A + BA, B
A*BA, B, A*B
A:BA*B только
–BНе включайте B
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C – A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

Обозначение Statistics and Machine Learning Toolbox™ всегда включает постоянный термин, если вы явным образом не удаляете термин с помощью –1.

Для получения дополнительной информации смотрите Обозначение Уилкинсона.

Алгоритмы

  • 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

Для просмотра документации необходимо авторизоваться на сайте