Трехфакторный дисперсионный анализ используется для определения того, существует ли статистически значимая разница между средними значениями трех или более независимых групп, разделенных на три фактора.
В следующем примере показано, как выполнить трехсторонний ANOVA в R.
Пример: Трехфакторный дисперсионный анализ в R
Предположим, исследователь хочет определить, приводят ли две тренировочные программы к различному среднему увеличению высоты прыжка среди баскетболистов колледжа.
Исследователь подозревает, что пол и дивизион (дивизион I или II) также могут влиять на высоту прыжка, поэтому он собирает данные и по этим факторам.
Его цель — провести трехсторонний ANOVA, чтобы определить, как программа тренировок, пол и дивизион влияют на высоту прыжка.
Используйте следующие шаги, чтобы выполнить этот трехсторонний ANOVA в R:
Шаг 1: Создайте данные
Во-первых, давайте создадим фрейм данных для хранения данных:
#create dataset
df <- data.frame(program=rep(c(1, 2), each= 20 ),
gender=rep(c('M', 'F'), each= 10 , times= 2 ),
division=rep(c(1, 2), each= 5 , times= 4 ),
height=c(7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
2, 2, 1, 4, 4, 2, 1, 1, 2, 1))
#view first six rows of dataset
head(df)
program gender division height
1 1 M 1 7
2 1 M 1 7
3 1 M 1 8
4 1 M 1 8
5 1 M 1 7
6 1 M 2 6
Шаг 2. Просмотр описательной статистики
Перед выполнением трехфакторного дисперсионного анализа мы можем использовать dplyr , чтобы быстро суммировать среднее увеличение высоты прыжка, сгруппированное по тренировочной программе, полу и дивизиону:
library(dplyr)
#calculate mean jumping height increase grouped by program, gender, and division
df %>%
group_by(program, gender, division) %>%
summarize(mean_height = mean(height))
# A tibble: 8 x 4
# Groups: program, gender [4]
program gender division mean_height
1 1 F 1 4.6
2 1 F 2 3.2
3 1 M 1 7.4
4 1 M 2 5.6
5 2 F 1 2.6
6 2 F 2 1.4
7 2 M 1 5.2
8 2 M 2 4
Вот как интерпретировать вывод:
- Среднее увеличение высоты прыжка среди женщин первого дивизиона, использовавших тренировочную программу 1, составило 4,6 дюйма .
- Среднее увеличение высоты прыжка среди женщин II дивизиона, использовавших тренировочную программу 1, составило 3,2 дюйма .
- Среднее увеличение высоты прыжка среди мужчин дивизиона I, использовавших тренировочную программу 1, составило 7,4 дюйма .
И так далее.
Шаг 3. Выполните трехсторонний дисперсионный анализ.
Затем мы можем использовать функцию aov() для выполнения трехфакторного дисперсионного анализа:
#perform three-way ANOVA
model <- aov(height ~ program \* gender \* division, data=df)
#view summary of three-way ANOVA
summary(model)
Df Sum Sq Mean Sq F value Pr(>F)
program 1 36.1 36.10 65.636 2.98e-09 \*\*\*
gender 1 67.6 67.60 122.909 1.71e-12 \*\*\*
division 1 19.6 19.60 35.636 1.19e-06 \*\*\*
program:gender 1 0.0 0.00 0.000 1.000
program:division 1 0.4 0.40 0.727 0.400
gender:division 1 0.1 0.10 0.182 0.673
program:gender:division 1 0.1 0.10 0.182 0.673
Residuals 32 17.6 0.55
---
Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
Столбец Pr(>F) показывает p-значение для каждого отдельного фактора и взаимодействия между факторами.
Из результатов мы видим, что ни одно из взаимодействий между тремя факторами не было статистически значимым.
Мы также можем видеть, что каждый из трех факторов — программа, пол и подразделение — были статистически значимыми.
Теперь мы можем снова использовать dplyr, чтобы найти среднее увеличение высоты прыжка для программы, пола и дивизиона отдельно:
library(dplyr)
#find mean jumping increase by program
df %>%
group_by(program) %>%
summarize(mean_height = mean(height))
# A tibble: 2 x 2
program mean_height
1 1 5.2
2 2 3.3
#find mean jumping increase by gender
df %>%
group_by(gender) %>%
summarize(mean_height = mean(height))
# A tibble: 2 x 2
gender mean_height
1 F 2.95
2 M 5.55
#find mean jumping increase by division
df %>%
group_by(division) %>%
summarize(mean_height = mean(height))
# A tibble: 2 x 2
division mean_height
1 1 4.95
2 2 3.55
Из вывода мы можем наблюдать следующее:
- Среднее увеличение высоты прыжка среди людей, которые использовали тренировочную программу 1 ( 5,2 дюйма ), было выше, чем среднее увеличение среди людей, которые использовали тренировочную программу 2 (3,3 дюйма ).
- Среднее увеличение высоты прыжка у мужчин ( 5,55 дюйма ) было выше, чем у женщин (2,95 дюйма ).
- Среднее увеличение высоты прыжка среди игроков 1-го дивизиона ( 4,95 дюйма ) было выше, чем среднее увеличение среди игроков 2-го дивизиона (3,55 дюйма ).
В заключение мы хотели бы заявить, что тренировочная программа, пол и дивизион являются важными предикторами увеличения высоты прыжка среди игроков.
Мы бы также заявили, что между этими тремя факторами нет значительных эффектов взаимодействия.
Дополнительные ресурсы
В следующих руководствах объясняется, как подогнать другие модели ANOVA в R:
Как выполнить односторонний ANOVA в R
Как выполнить двухфакторный дисперсионный анализ в R