МАНОВА

Введение в МАНОВУ

Метод дисперсионного анализа в Выполняет Одностороннюю АНОВУ, берет набор сгруппированных данных, и определите, отличается ли среднее значение переменной значительно среди групп. Часто существуют переменные множественного ответа, и вы интересуетесь определением, отличается ли целый набор средних значений от одной группы к следующему. Существует многомерная версия дисперсионного анализа, который может решить проблему.

АНОВА со множественными ответами

Набор данных carsmall имеет измерения на множестве моделей автомобилей с лет 1970, 1976, и 1982. Предположим, что вы интересуетесь тем, изменялись ли характеристики автомобилей в зависимости от времени.

Загрузите выборочные данные.

load carsmall
whos
  Name                Size            Bytes  Class     Attributes

  Acceleration      100x1               800  double              
  Cylinders         100x1               800  double              
  Displacement      100x1               800  double              
  Horsepower        100x1               800  double              
  MPG               100x1               800  double              
  Mfg               100x13             2600  char                
  Model             100x33             6600  char                
  Model_Year        100x1               800  double              
  Origin            100x7              1400  char                
  Weight            100x1               800  double              

Четыре из этих переменных (Acceleration, Displacement, Horsepower и MPG) являются непрерывными измерениями на отдельных моделях автомобилей. Переменная Model_Year указывает на год, в котором был сделан автомобиль. Можно создать сгруппированную матрицу графика этих переменных с помощью функции gplotmatrix.

Создайте сгруппированную матрицу графика этих переменных с помощью функции gplotmatrix.

x = [MPG Horsepower Displacement Weight];
gplotmatrix(x,[],Model_Year,[],'+xo')

(Когда второй аргумент gplotmatrix пуст, функциональные графики столбцы  аргумента x друг против друга, и помещает гистограммы по диагоналям. Пустой четвертый аргумент производит график с цветами по умолчанию. Пятый аргумент управляет символами, используемыми, чтобы различать группы.)

Кажется, что автомобили действительно отличаются из года в год. Верхний правый график, например, является графиком MPG по сравнению с Weight. Эти 1 982 автомобиля, кажется, имеют более высокий пробег, чем более старые автомобили, и они, кажется, весят меньше в среднем. Но как группа, эти три года существенно отличаются друг от друга? Функция manova1 может ответить на тот вопрос.

[d,p,stats] = manova1(x,Model_Year)
d = 2
p = 2×1
10-6 ×

    0.0000
    0.1141

stats = struct with fields:
           W: [4x4 double]
           B: [4x4 double]
           T: [4x4 double]
         dfW: 90
         dfB: 2
         dfT: 92
      lambda: [2x1 double]
       chisq: [2x1 double]
     chisqdf: [2x1 double]
    eigenval: [4x1 double]
    eigenvec: [4x4 double]
       canon: [100x4 double]
       mdist: [1x100 double]
      gmdist: [3x3 double]
      gnames: {3x1 cell}

Функция manova1 производит три выходных параметров:

  • Первый вывод, d, является оценкой размерности средних значений группы. Если бы средние значения были всеми одинаковыми, размерность была бы 0, указав, что средние значения в той же точке. Если бы средние значения отличались, но упали вдоль строки, размерность была бы 1. В примере размерность равняется 2, указывая, что группа имеет в виду падение плоскости, но не вдоль строки. Это - самая большая размерность для средних значений трех групп.

  • Второй вывод, p, является вектором p - значения для последовательности тестов. Первое значение p тестирует, является ли размерность 0, следующее, равняется ли размерность 1 и так далее. В этом случае оба p - значения являются маленькими. Вот почему предполагаемая размерность равняется 2.

  • Третий вывод, stats, является структурой, содержащей несколько полей, описанных в следующем разделе.

Поля Структуры статистики

W, B и поля T являются матричными аналогами к в, между, и полные суммы квадратов в обычном одностороннем дисперсионном анализе. Следующие три поля являются степенями свободы для этих матриц. Поля lambda, chisq и chisqdf являются компонентами теста для размерности средних значений группы. (p - значения для этих тестов являются первым выходным аргументом manova1.)

Следующие три поля используются, чтобы сделать канонический анализ. Вспомните, что в анализе основных компонентов (Анализ главных компонентов (PCA)) вы ищете комбинацию исходных переменных, которая имеет самое большое изменение. В многомерном дисперсионном анализе вы вместо этого ищете линейную комбинацию исходных переменных, которая имеет самое большое разделение между группами. Это - одна переменная, которая дала бы старший значащий результат в одномерном одностороннем дисперсионном анализе. Найдя, что комбинация, вы затем ищете комбинацию со вторым по высоте разделением и так далее.

Поле eigenvec является матрицей, которая задает коэффициенты линейных комбинаций исходных переменных. Поле eigenval является вектором, измеряющим отношение отклонения между группами к отклонению в группе для соответствующей линейной комбинации. Поле canon является матрицей канонических значений переменных. Каждый столбец является линейной комбинацией сосредоточенных средним значением исходных переменных, с помощью коэффициентов из матрицы eigenvec.

c1 = stats.canon(:,1);
c2 = stats.canon(:,2);

Постройте сгруппированный график рассеивания первых двух канонических переменных.

figure()
gscatter(c2,c1,Model_Year,[],'oxs')

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

Примерно разговор, первая каноническая переменная, c1, разделяет эти 1 982 автомобиля (которые имеют высокие значения c1) от более старых автомобилей. Вторая каноническая переменная, c2, показывает некоторое разделение между 1 970 и 1 976 автомобилями.

Итоговые два поля структуры stats являются расстояниями Mahalanobis. Поле mdist измеряет расстояние от каждой точки до ее среднего значения группы. Точки с большими значениями могут быть выбросами. В этом наборе данных самый большой выброс является тем в графике рассеивания, универсале Buick Estate. (Обратите внимание на то, что вы, возможно, предоставили имя модели к функции gname выше, если вы хотели маркировать точку с ее именем модели, а не ее номером строки.)

Найдите самое большое расстояние от среднего значения группы.

max(stats.mdist)
ans = 31.5273

Найдите точку, которая имеет самое большое расстояние от среднего значения группы.

find(stats.mdist == ans)
ans = 20

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

Model(20,:)
ans = 
'buick estate wagon (sw)          '

Поле gmdist измеряет расстояния между каждой парой средних значений группы. Исследуйте средние значения группы использовать grpstats.

grpstats(x, Model_Year)
ans = 3×4
103 ×

    0.0177    0.1489    0.2869    3.4413
    0.0216    0.1011    0.1978    3.0787
    0.0317    0.0815    0.1289    2.4535

Найдите расстояния между каждой парой средних значений группы.

stats.gmdist
ans = 3×3

         0    3.8277   11.1106
    3.8277         0    6.1374
   11.1106    6.1374         0

Как может ожидаться, многомерное расстояние между экстремальными годами 1970 и 1982 (11.1) больше, чем различие между более близко расположенными годами (3.8 и 6.1). Это сопоставимо с графиками рассеивания, где точки, кажется, следуют за прогрессией, когда год изменяется от 1 970 до 1976 до 1 982. Если у вас было больше групп, вы можете найти, что это поучительный, чтобы использовать manovacluster функционирует, чтобы чертить схему, которая представляет кластеры групп, сформированное использование расстояний между их средними значениями.