anova

Анализ отклонения для линейной регрессионой модели

Описание

пример

tbl = anova(mdl) возвращает таблицу со статистикой Дисперсионного Анализа компонентов.

пример

tbl = anova(mdl,anovatype) возвращает статистику Дисперсионный Анализ заданного типа anovatype. Для примера задайте anovatype как 'component'(по умолчанию), чтобы вернуть таблицу со статистикой ANOVA компонента, или указать anovatype как 'summary' для возврата таблицы с суммарной статистикой Дисперсионный Анализ.

tbl = anova(mdl,'component',sstype) вычисляет статистику Дисперсионного Анализа компонентов с помощью заданного типа суммы квадратов.

Примеры

свернуть все

Составьте таблицу ANOVA компонента из линейной регрессионой модели hospital набор данных.

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

load hospital
tbl = table(hospital.Age,hospital.Sex,hospital.BloodPressure(:,2), ...
    'VariableNames',{'Age','Sex','BloodPressure'});
tbl.Sex = categorical(tbl.Sex);
mdl = fitlm(tbl,'BloodPressure ~ Sex + Age^2')
mdl = 
Linear regression model:
    BloodPressure ~ 1 + Age + Sex + Age^2

Estimated Coefficients:
                   Estimate        SE        tStat       pValue  
                   _________    ________    ________    _________

    (Intercept)       63.942      19.194      3.3314    0.0012275
    Age              0.90673      1.0442     0.86837      0.38736
    Sex_Male          3.0019      1.3765      2.1808     0.031643
    Age^2          -0.011275    0.013853    -0.81389      0.41772


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 6.83
R-squared: 0.0577,  Adjusted R-Squared: 0.0283
F-statistic vs. constant model: 1.96, p-value = 0.125

Создайте таблицу ANOVA модели.

tbl = anova(mdl)
tbl=4×5 table
             SumSq     DF    MeanSq       F        pValue 
             ______    __    ______    _______    ________

    Age      18.705     1    18.705    0.40055     0.52831
    Sex      222.09     1    222.09     4.7558    0.031643
    Age^2    30.934     1    30.934    0.66242     0.41772
    Error    4483.1    96    46.699                       

В таблице отображаются следующие столбцы для каждого термина, кроме термина константа ( точка пересечения):

  • SumSq - Сумма квадратов, объясненная термином.

  • DF - Степени свободы. В этом примере DF равен 1 для каждого члена в модели и n - p для члена ошибки, где n - количество наблюдений, а p - количество коэффициентов (включая точку пересечения) в модели. Для примера, DF для члена ошибки в этой модели является 100 - 4 = 96. Если какая-либо переменная в модели является категориальной переменной, DF для этой переменной является количество переменных индикатора, созданных для ее категорий (количество категорий - 1).

  • MeanSq - Средний квадрат, заданный MeanSq = SumSq/DF. Для примера средний квадрат члена ошибки, средней квадратичной невязки (MSE), равен 4 .4831e + 03/96 = 46,6991.

  • F - F-статистическое значение для проверки нулевой гипотезы о том, что соответствующий коэффициент равен нулю, вычисляется F = MeanSq/MSE, где MSE - средняя квадратичная невязка. Когда нулевая гипотеза верна, F-статистика следует F-распределению. Числитель степеней свободы является DF значение для соответствующего члена, и знаменательные степени свободы n - p. В этом примере каждая F-статистика следует F(1,96)-распределение.

  • pValue - p-значение F-статистического значения. Для примера значение p для Age равен 0.5283, что означает, что Age не является значимым на уровне значимости 5%, учитывая другие членов в модели.

Составьте сводную таблицу ANOVA из линейной регрессионой модели hospital набор данных.

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

load hospital
tbl = table(hospital.Age,hospital.Sex,hospital.BloodPressure(:,2), ...
    'VariableNames',{'Age','Sex','BloodPressure'});
tbl.Sex = categorical(tbl.Sex);
mdl = fitlm(tbl,'BloodPressure ~ Sex + Age^2')
mdl = 
Linear regression model:
    BloodPressure ~ 1 + Age + Sex + Age^2

Estimated Coefficients:
                   Estimate        SE        tStat       pValue  
                   _________    ________    ________    _________

    (Intercept)       63.942      19.194      3.3314    0.0012275
    Age              0.90673      1.0442     0.86837      0.38736
    Sex_Male          3.0019      1.3765      2.1808     0.031643
    Age^2          -0.011275    0.013853    -0.81389      0.41772


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 6.83
R-squared: 0.0577,  Adjusted R-Squared: 0.0283
F-statistic vs. constant model: 1.96, p-value = 0.125

Создайте сводную таблицу ANOVA модели.

tbl = anova(mdl,'summary')
tbl=7×5 table
                     SumSq     DF    MeanSq       F        pValue 
                     ______    __    ______    _______    ________

    Total            4757.8    99    48.059                       
    Model            274.73     3    91.577      1.961     0.12501
    . Linear          243.8     2     121.9     2.6103    0.078726
    . Nonlinear      30.934     1    30.934    0.66242     0.41772
    Residual         4483.1    96    46.699                       
    . Lack of fit    1483.1    39    38.028    0.72253     0.85732
    . Pure error       3000    57    52.632                       

В таблице отображаются тесты для групп терминов: Total, Model, и Residual.

  • Total - Эта строка показывает общую сумму квадратов (SumSq), степени свободы (DF), и средняя квадратичная невязка (MeanSq). Обратите внимание, что MeanSq = SumSq/DF.

  • Model - Эта строка включает SumSq, DF, MeanSq, F-статистическое значение (F), и p-значение (pValue). Потому что эта модель включает нелинейный термин (Age^2), anova разбиения суммы квадратов (SumSq) Model в две части: SumSq объясняется линейными терминами (Age и Sex) и SumSq объясняется нелинейным термином (Age^2). Соответствующие F-статистические значения предназначены для проверки значимости линейных членов и нелинейного термина как отдельных групп. Нелинейная группа состоит из Age^2 только термин, поэтому он имеет то же p-значение, что и Age^2 термин в таблице ANOVA компонента.

  • Residual - Эта строка включает SumSq, DF, MeanSq, F, и pValue. Поскольку набор данных включает репликации, anova разделяет остаточные SumSq в часть для репликаций (Pure error) и остальное (Lack of fit). Чтобы проверить отсутствие подгонки, anova вычисляет F-статистическое значение путем сравнения невязок модели с оценкой отклонения без моделей, вычисленной на репликациях. Статистическое значение F не показывает признаков недостаточной подгонки.

Подгонка линейной регрессионой модели, которая содержит категориальный предиктор. Переупорядочите категории категориального предиктора, чтобы контролировать уровень ссылки в модели. Затем используйте anova для проверки значимости категориальной переменной.

Модель с категориальным предиктором

Загрузите carsmall набор данных и создайте линейную регрессионую модель MPG как функцию Model_Year. Чтобы обработать числовой вектор Model_Year как категориальная переменная идентифицируйте предиктор, используя 'CategoricalVars' аргумент пары "имя-значение".

load carsmall
mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE      tStat       pValue  
                     ________    ______    ______    __________

    (Intercept)        17.69     1.0328    17.127    3.2371e-30
    Model_Year_76     3.8839     1.4059    2.7625     0.0069402
    Model_Year_82      14.02     1.4369    9.7571    8.2164e-16


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

Формула модели на отображении, MPG ~ 1 + Model_Year, соответствует

MPG=β0+β1ΙYear=76+β2ΙYear=82+ϵ,

где ΙYear=76 и ΙYear=82 являются переменными индикатора, значение которых равно единице, если значение Model_Year составляет 76 и 82, соответственно. The Model_Year переменная включает три различных значения, которые можно проверить с помощью unique функция.

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlm выбирает наименьшее значение в Model_Year как уровень ссылки ('70') и создает две переменные индикатора ΙYear=76 и ΙYear=82. Модель включает только две переменные индикатора, потому что матрица проекта становится дефицитной, если модель включает три переменные индикатора (по одной для каждого уровня) и член точки пересечения.

Модель с полными переменными индикатора

Можно интерпретировать формулу модели mdl как модель, которая имеет три переменные индикатора без термина точки пересечения:

y=β0Ιx1=70+(β0+β1)Ιx1=76+(β0+β2)Ιx2=82+ϵ.

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

temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = 
Linear regression model:
    MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82

Estimated Coefficients:
                     Estimate      SE       tStat       pValue  
                     ________    _______    ______    __________

    Model_Year_70      17.69      1.0328    17.127    3.2371e-30
    Model_Year_76     21.574     0.95387    22.617    4.0156e-39
    Model_Year_82      31.71     0.99896    31.743    5.2234e-51


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56

Выберите ссылочный уровень в модели

Можно выбрать уровень ссылки путем изменения порядка категорий в категориальной переменной. Сначала создайте категориальную переменную Year.

Year = categorical(Model_Year);

Проверьте порядок категорий при помощи categories функция.

categories(Year)
ans = 3x1 cell
    {'70'}
    {'76'}
    {'82'}

Если вы используете Year как переменная предиктора, затем fitlm выбирает первую категорию '70' как уровень ссылки. Переупорядочить Year при помощи reordercats функция.

Year_reordered = reordercats(Year,{'76','70','82'});
categories(Year_reordered)
ans = 3x1 cell
    {'76'}
    {'70'}
    {'82'}

Первая категория Year_reordered является '76'. Создайте линейную регрессионую модель MPG как функцию Year_reordered.

mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE        tStat       pValue  
                     ________    _______    _______    __________

    (Intercept)       21.574     0.95387     22.617    4.0156e-39
    Model_Year_70    -3.8839      1.4059    -2.7625     0.0069402
    Model_Year_82     10.136      1.3812     7.3385    8.7634e-11


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

mdl2 использует '76' как ссылка уровень и включает две переменные индикатора ΙYear=70 и ΙYear=82.

Оценка категориального предиктора

Отображение модели mdl2 включает p-значение каждого члена для проверки, равен ли соответствующий коэффициент нулю. Каждое p-значение исследует каждую переменную индикатора. Чтобы изучить категориальную переменную Model_Year в качестве группы индикаторных переменных используйте anova. Используйте 'components'(по умолчанию) опция для возврата таблицы ANOVA компонента, которая включает статистику Дисперсионный Анализ для каждой переменной в модели, кроме постоянного члена.

anova(mdl2,'components')
ans=2×5 table
                  SumSq     DF    MeanSq      F        pValue  
                  ______    __    ______    _____    __________

    Model_Year    3190.1     2    1595.1    51.56    1.0694e-15
    Error         2815.2    91    30.936                       

Дисперсионный Анализ компонента включает p-значение Model_Year переменная, которая меньше, чем p-значения переменных индикатора.

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

свернуть все

Объект модели линейной регрессии, заданный как LinearModel объект, созданный при помощи fitlm или stepwiselm, или CompactLinearModel объект, созданный при помощи compact.

Тип ANOVA, заданный как одно из следующих значений:

  • 'component'anova возвращает таблицу tbl со статистикой Дисперсионный Анализ для каждой переменной в модели, кроме постоянного члена.

  • 'summary'anova возвращает таблицу tbl с суммарной статистикой Дисперсионный Анализ для сгруппированных переменных и модели в целом.

Для получения дополнительной информации смотрите tbl описание выходного аргумента.

Сумма типа квадратов для каждого члена, заданная как одно из значений в этой таблице.

ЗначениеОписание
1Тип 1 сумма квадратов - Сокращение остаточной суммы квадратов, полученное путем добавления термина к подгонке, которая уже включает предыдущие условия
2Тип 2 сумма квадратов - Сокращение остаточной суммы квадратов, полученное путем добавления термина к модели, которая содержит все другие условия
3Тип 3 сумма квадратов - Сокращение остаточной суммы квадратов, полученное путем добавления термина к модели, которая содержит все другие условия, но с их эффектами, ограниченными для подчинения обычным «сигма-ограничениям», которые делают модели оцениваемыми
'h'Иерархическая модель - Подобна типу 2, но использует как непрерывные, так и категориальные факторы для определения иерархии членов

Сумма квадратов для любого члена определяется путем сравнения двух моделей. Для модели, содержащей основные эффекты, но без взаимодействий, значение sstype влияет на расчеты только на несбалансированные данные.

Предположим, что вы подбираете модель с двумя факторами и их взаимодействием, и условия появляются в A порядка точности, B, AB. Пусть R (·) представляет остаточную сумму квадратов для модели. Итак, R (A, B, AB) - остаточная сумма квадратов, подгоняющая целую модель, R (A) - остаточная сумма квадратов, подгоняющая основной эффект только A, а R (1) - остаточная сумма квадратов, подгоняющая только среднее. Три типа квадратов :

ТерминТип 1 Сумма квадратовТип 2 Сумма квадратовТип 3 Сумма квадратов

A

R (1) – R (<reservedrangesplaceholder0>)

R (<reservedrangesplaceholder3>) – R (A, B)

R (B, AB) – R (A, B, AB)

B

R (<reservedrangesplaceholder3>) – R (A, B)

R (<reservedrangesplaceholder3>) – R (A, B)

R (A, AB) – R (A, B, AB)

AB

R (A, B) – R (A, B, AB)

R (A, B) – R (A, B, AB)

R (A, B) – R (A, B, AB)

Модели для суммы квадратов типа 3 имеют введенные сигма-ограничения. Это означает, для примера, что в подбор кривой R (B, AB) массив AB эффектов ограничивается суммой, чтобы 0 больше A для каждого значения B и больше B для каждого значения A.

Для суммы квадратов типа 3:

  • Если mdl является CompactLinearModel объект и регрессионная модель негиерархичны, anova возвращает ошибку.

  • Если mdl является LinearModel объект и регрессионная модель негиерархичны, anova отменяет модель, используя кодирование эффектов, каждый раз, когда ей нужно вычислить сумму квадратов типа 3.

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

sstype применяется только в том случае, если anovatype является 'component'.

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

свернуть все

Сводная статистическая таблица ANOVA, возвращенная как таблица.

Содержимое tbl зависят от типа ANOVA, заданного в anovatype.

  • Если anovatype является 'component', затем tbl содержит статистику Дисперсионный Анализ для каждой переменной в модели, за исключением постоянного (перехвата) термина. Таблица включает следующие столбцы для каждой переменной:

    СтолбецОписание
    SumSq

    Сумма квадратов, объясненная термином, вычисляемая в зависимости от sstype

    DF

    Степени свободы

    • DF числовой переменной - 1.

    • DF категориальной переменной является количество переменных индикатора, созданных для категории (количество категорий - 1). Обратите внимание, что tbl содержит по одной строке для каждой категориальной переменной вместо одной строки для каждой переменной индикатора, как на отображении модели. Использовать anova чтобы протестировать категориальную переменную как группу переменных индикатора.

    • DF члена ошибки n - p, где n - количество наблюдений и p - количество коэффициентов в модели.

    MeanSq

    Средний квадрат, заданный как MeanSq = SumSq/ DF

    MeanSq для термина ошибки является средней квадратичной невязкой (MSE).

    F

    F -статистическое значение, чтобы проверить нулевую гипотезу о том, что соответствующий коэффициент равен нулю, вычисляется F = MeanSq/ MSE

    Когда гипотеза null верна, F -statistic следует F -распределение. Числитель степеней свободы является DF значение для соответствующего члена, а знаменательные степени свободы n - p.

    pValue

    p -значение F -статистического значения

    Для получения примера см. раздел «Таблица Дисперсионного Анализа компонентов».

  • Если anovatype является 'summary', затем tbl содержит сводную статистику сгруппированных терминов для каждой строки. Таблица содержит те же столбцы, что и 'component' и эти строки:

    РядОписание
    Total

    Общая статистика

    • SumSq - Общая сумма квадратов, которая является суммой квадратов отклонений отклика вокруг его среднего

    • DF - Сумма степеней свободы Model и Residual

    Model

    Статистика для модели в целом

    • SumSq - Моделируйте сумму квадратов, которая является суммой квадратов отклонений подобранного значения вокруг среднего отклика.

    • F и pValue - Эти значения обеспечивают проверку того, подходит ли модель в целом значительно лучше, чем вырожденная модель, состоящая только из постоянного члена.

    Если mdl включает только линейные условия, тогда anova не разлагается Model в Linear и NonLinear.

    Linear

    Статистика для линейных терминов

    • SumSq - Сумма квадратов для линейных членов, которая является различием между модельной суммой квадратов и суммой квадратов для нелинейных членов.

    • F и pValue - Эти значения обеспечивают проверку того, подходит ли модель только с линейными терминами лучше, чем вырожденная модель, состоящая только из постоянного термина. anova использует среднюю квадратичную невязку, которая основана на полной модели, чтобы вычислить это F -value, поэтому F -value, полученное путем удаления нелинейных членов и повторения теста, не совпадает со значением в этой строке.

    Nonlinear

    Статистика для нелинейных членов

    • SumSq - Сумма квадратов для нелинейных (более высокого порядка или взаимодействия) членов, которая является увеличением остаточной суммы квадратов, полученной путем сохранения только линейных членов и отбрасывания всех нелинейных членов.

    • F и pValue - Эти значения обеспечивают проверку того, подходит ли полная модель значительно лучше, чем меньшая модель, состоящая только из линейных терминов.

    Residual

    Статистика по невязкам

    • SumSq - Остаточная сумма квадратов, которая является суммой квадратов остаточных значений

    • MeanSq - Средняя квадратичная невязка, используемая для вычисления F -статистических значений для Model, Linear, и NonLinear

    Если mdl является полным LinearModel объект и выборочные данные содержат репликации (несколько наблюдений с одинаковыми значениями предиктора), затем anova разлагает остаточную сумму квадратов на сумму квадратов для реплицированных наблюдений (Lack of fit) и оставшуюся сумму квадратов (Pure error).

    Lack of fit

    Несоответствующая статистика

    • SumSq - Сумма квадратов из-за отсутствия подгонки, которая является различием между остаточной суммой квадратов и суммой репликации квадратов.

    • F и pValue - F-статическое значение является отношением недостатка подгонки MeanSq в чистую ошибку MeanSq. Отношение обеспечивает тест смещения путем измерения, является ли изменение невязок большим, чем изменение репликаций. Низкое p -значение подразумевает, что добавление дополнительных членов к модели может улучшить подгонку.

    Pure error

    Статистика для чистой ошибки

    • SumSq - Сумма репликации квадратов, полученная путем нахождения наборов точек с идентичными предикторными значениями, вычисления суммы квадратов отклонений вокруг среднего в каждом наборе и объединения вычисленных значений

    • MeanSq - Безмодельная оценка отклонения чистой ошибки отклика

    Для получения примера смотрите Сводку Дисперсионного Анализа таблицу.

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

Более полная статистика Дисперсионный Анализ доступна в anova1, anova2, и anovan функций.

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

Введенный в R2012a