exponenta event banner

anova

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

Описание

пример

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

пример

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

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

Примеры

свернуть все

Создание таблицы 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 соответственно. Model_Year переменная включает три различных значения, которые можно проверить с помощью unique функция.

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlm выбирает наименьшее значение в Model_Year в качестве опорного уровня ('70') и создаёт две индикаторные переменные GroupYear = 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 для каждой переменной в модели, за исключением члена константы.

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                       

Таблица ANOVA компонента включает значение p Model_Year переменная, которая меньше, чем p-значения переменных индикатора.

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

свернуть все

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

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

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

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

Для получения более подробной информации см. 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 (A)

R (B) - R (A, B)

R (B, AB) - R (A, B, AB)

B

R (A) - R (A, B)

R (A) - 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 содержит статистику ANOVA для каждой переменной в модели, за исключением члена константы (перехвата). Таблица содержит следующие столбцы для каждой переменной:

    КолонкаОписание
    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

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

    pValue

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

    Пример см. в разделе Таблица ANOVA компонента.

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

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

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

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

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

    Model

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

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

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

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

    Linear

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

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

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

    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 - Безмодельная оценка дисперсии чистой ошибки ответа

    Пример см. в разделе Сводная таблица ANOVA.

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

Более полная статистика ANOVA доступна в anova1, anova2, и anovan функции.

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

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