Можно использовать функцию Statistics and Machine Learning Toolbox™ anovan
выполнять N-сторонний Дисперсионный Анализ. Используйте N-сторонний Дисперсионный Анализ, чтобы определить, отличаются ли средние значения в наборе данных относительно групп (уровни) нескольких факторов. По умолчанию, anovan
обработки все сгруппированные переменные как зафиксированные эффекты. Для примера Дисперсионного Анализа со случайными эффектами смотрите Дисперсионный Анализ со Случайными Эффектами. Для повторных измерений смотрите fitrm
и ranova
.
N-сторонний Дисперсионный Анализ является обобщением двухстороннего Дисперсионного Анализа. Для трех факторов, например, модель может быть записана как
где
yijkr является наблюдением за переменной отклика. i представляет группу i факторного A, i = 1, 2..., I, j представляет группу j факторного B, j = 1, 2..., J, k представляет группу k фактора C, и r представляет номер репликации, r = 1, 2..., R. Для постоянного R существует в общей сложности N = I наблюдения *J*K*R, но количество наблюдений не должно быть тем же самым для каждой комбинации групп факторов.
μ является полным средним значением.
αi является отклонениями групп факторного A от полного среднего μ, должного учитывать A. Значения αi суммируют к 0.
βj является отклонениями групп в факторном B от полного среднего μ, должного учитывать B. Значения βj суммируют к 0.
γk является отклонениями групп в факторном C от полного среднего μ, должного учитывать C. Значения γk суммируют к 0.
(αβ) ij является периодом взаимодействия между факторами A и B. (αβ) сумма ij к 0 по любому индексу.
(αγ) ik является периодом взаимодействия между факторами A и C. Значения (αγ) сумма ik к 0 по любому индексу.
(βγ) jk является периодом взаимодействия между факторами B и C. Значения (βγ) сумма jk к 0 по любому индексу.
(αβγ) ijk является периодом взаимодействия с тремя путями между факторами A, B и C. Значения (αβγ) сумма ijk к 0 по любому индексу.
εijkr является случайными воздействиями. Они приняты, чтобы быть независимыми, нормально распределенными, и иметь постоянное отклонение.
Дисперсионный Анализ с тремя путями тестирует гипотезы об эффектах факторов A, B, C и их взаимодействия на переменной отклика y. Гипотезы о равенстве средних ответов для групп факторного A
Гипотезы о равенстве среднего ответа для групп факторного B
Гипотезы о равенстве среднего ответа для групп факторного C
Гипотезы о взаимодействии факторов
В этом обозначении параметры с двумя индексами, такими как (αβ) ij, представляют эффект взаимодействия двух факторов. Параметр (αβγ) ijk представляет взаимодействие с тремя путями. Модель ANOVA может иметь полный набор параметров или любого подмножества, но традиционно это не включает комплексные периоды взаимодействия, если это также не включает все более простые условия для тех факторов. Например, нельзя было бы обычно включать взаимодействие с тремя путями без также включая все двухсторонние взаимодействия.
В отличие от anova1
и anova2
, anovan
не делает ожидаемых данных в табличной форме. Вместо этого это ожидает вектор измерений ответа и отдельного вектора (или текстовый массив) содержащий значения, соответствующие каждому фактору. Этот формат входных данных более удобен, чем матрицы, когда существует больше чем два фактора или когда количество измерений на факторную комбинацию не является постоянным.
В этом примере показано, как выполнить N-сторонний Дисперсионный Анализ на автомобильных данных с пробегом и другой информацией о 406 автомобилях, сделанных между 1 970 и 1982.
Загрузите выборочные данные.
load carbig
Пример фокусируется на четырех переменных. MPG
количество миль на галлон для каждого из 406 автомобилей (хотя некоторым закодировали отсутствующие значения как NaN
). Другие три переменные являются факторами: cyl4
(автомобиль с четырьмя цилиндрами или не), org
(автомобиль порождается в Европе, Японии или США), и when
(автомобиль был создан рано за указанный период посреди периода, или поздно в период).
Подбирайте полную модель, запрашивая до взаимодействий с тремя путями и сумм квадратов Типа 3.
varnames = {'Origin';'4Cyl';'MfgDate'}; anovan(MPG,{org cyl4 when},3,3,varnames)
ans = 7×1
0.0000
NaN
0.0000
0.7032
0.0001
0.2072
0.6990
Обратите внимание на то, что много условий отмечены # символом как не наличие полного ранга, и один из них имеет нулевые степени свободы и пропускает p-значение. Это может произойти, когда там пропускают факторные комбинации, и модель имеет условия высшего порядка. В этом случае, перекрестное табулирование ниже показов, что нет никаких автомобилей, сделанных в Европе во время начала периода с кроме четырех цилиндров, как обозначено 0 в tbl(2,1,1)
.
[tbl,chi2,p,factorvals] = crosstab(org,when,cyl4)
tbl = tbl(:,:,1) = 82 75 25 0 4 3 3 3 4 tbl(:,:,2) = 12 22 38 23 26 17 12 25 32
chi2 = 207.7689
p = 8.0973e-38
factorvals=3×3 cell
{'USA' } {'Early'} {'Other' }
{'Europe'} {'Mid' } {'Four' }
{'Japan' } {'Late' } {0x0 double}
Следовательно, невозможно оценить, что эффекты взаимодействия с тремя путями, и включая период взаимодействия с тремя путями в модели делают подгонку сингулярной.
Используя даже ограниченную информацию, доступную в таблице ANOVA, вы видите, что взаимодействие с тремя путями имеет p-значение 0,699, таким образом, это не значительно.
Исследуйте только двухсторонние взаимодействия.
[p,tbl2,stats,terms] = anovan(MPG,{org cyl4 when},2,3,varnames);
terms
terms = 6×3
1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
0 1 1
Теперь все условия являются допускающими оценку. P-значения в течение периода взаимодействия 4 (Origin*4Cyl
) и период взаимодействия 6 (4Cyl*MfgDate
) намного больше, чем типичное значение сокращения 0,05, указывая, что эти условия не являются значительными. Вы могли принять решение не использовать эти условия и объединить их эффекты в остаточный член. Выход terms
переменная возвращает матрицу кодов, каждый из которых является небольшим шаблоном, представляющим термин.
Не используйте условия из модели путем удаления их записей из terms
.
terms([4 6],:) = []
terms = 4×3
1 0 0
0 1 0
0 0 1
1 0 1
Запустите anovan
снова, на этот раз предоставляя итоговый вектор в качестве аргумента модели. Также возвратите статистику, требуемую для нескольких сравнений факторов.
[~,~,stats] = anovan(MPG,{org cyl4 when},terms,3,varnames)
stats = struct with fields:
source: 'anovan'
resid: [1x406 double]
coeffs: [18x1 double]
Rtr: [10x10 double]
rowbasis: [10x18 double]
dfe: 388
mse: 14.1056
nullproject: [18x10 double]
terms: [4x3 double]
nlevels: [3x1 double]
continuous: [0 0 0]
vmeans: [3x1 double]
termcols: [5x1 double]
coeffnames: {18x1 cell}
vars: [18x3 double]
varnames: {3x1 cell}
grpnames: {3x1 cell}
vnested: []
ems: []
denom: []
dfdenom: []
msdenom: []
varest: []
varci: []
txtdenom: []
txtems: []
rtnames: []
Теперь у вас есть более экономная модель, указывающая, что пробег этих автомобилей, кажется, связан со всеми тремя факторами, и что эффект производственной даты зависит от того, где автомобиль был сделан.
Выполните несколько сравнений для Источника и Цилиндра.
results = multcompare(stats,'Dimension',[1,2])
results = 15×6
1.0000 2.0000 -5.4891 -3.8412 -2.1932 0.0000
1.0000 3.0000 -4.4146 -2.7251 -1.0356 0.0001
1.0000 4.0000 -9.9992 -8.5828 -7.1664 0.0000
1.0000 5.0000 -14.0237 -12.4240 -10.8242 0.0000
1.0000 6.0000 -12.8980 -11.3080 -9.7180 0.0000
2.0000 3.0000 -0.7171 1.1160 2.9492 0.5085
2.0000 4.0000 -7.3655 -4.7417 -2.1179 0.0000
2.0000 5.0000 -9.9992 -8.5828 -7.1664 0.0000
2.0000 6.0000 -9.7464 -7.4668 -5.1872 0.0000
3.0000 4.0000 -8.5396 -5.8577 -3.1757 0.0000
⋮
anova1
| anovan
| kruskalwallis
| multcompare