Метод дисперсионного анализа в Выполняет ОДНОФАКТОРНЫЙ ДИСПЕРСИОННЫЙ АНАЛИЗ, берет набор сгруппированных данных, и определите, отличается ли среднее значение переменной значительно среди групп. Часто существуют переменные множественного ответа, и вы интересуетесь определением, отличается ли целый набор средних значений от одной группы к следующему. Существует многомерная версия дисперсионного анализа, который может решить проблему.
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: [2.8187 0.7899 0.6187 0.4050 0.8538 4.2337 6.0117 4.9600 ... ]
gmdist: [3x3 double]
gnames: {3x1 cell}
manova1
функция производит три выходных параметров:
Первый выход d
оценка размерности средних значений группы. Если бы средние значения были всеми одинаковыми, размерность была бы 0, указав, что средние значения в той же точке. Если бы средние значения отличались, но упали вдоль линии, размерность была бы 1. В примере размерность равняется 2, указывая, что группа означает падение плоскости, но не вдоль линии. Это - самая большая размерность для средних значений трех групп.
Второй выход p
вектор из p-значений для последовательности тестов. Первое p-значение тестирует, является ли размерность 0, следующее, равняется ли размерность 1 и так далее. В этом случае оба p-значения малы. Вот почему предполагаемая размерность равняется 2.
Третий выход stats
структура, содержащая несколько полей, описанных в следующем разделе.
Поля 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
функционируйте, чтобы чертить схему, которая представляет кластеры групп, сформированное использование расстояний между их средними значениями.
gplotmatrix
| manova1
| gname
| manovacluster