Как выполнить трехфакторный дисперсионный анализ в python
Трехфакторный дисперсионный анализ используется для определения того, существует ли статистически значимая разница между средними значениями трех или более независимых групп, которые были распределены по трем факторам.
В следующем примере показано, как выполнить трехфакторный дисперсионный анализ в Python.
Пример: трехфакторный дисперсионный анализ в Python
Предположим, исследователь хочет определить, приводят ли две тренировочные программы к разным средним улучшениям высоты прыжка среди баскетболистов колледжа.
Исследователь подозревает, что пол и дивизион (Дивизион I или II) также могут влиять на высоту прыжка, поэтому он собирает данные и об этих факторах.
Его цель — провести трехфакторный дисперсионный анализ, чтобы определить, как программа тренировок, пол и дивизион влияют на высоту прыжка.
Используйте следующие шаги, чтобы выполнить этот трехфакторный дисперсионный анализ в Python:
Шаг 1. Создайте данные
Сначала давайте создадим DataFrame pandas для хранения данных:
import numpy as np
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' program ': np.repeat ([1,2],20),
' gender ': np. tile (np. repeat (['M', 'F'], 10), 2),
' division ': np. tile (np. repeat ([1, 2], 5), 4),
' height ': [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 ten rows of DataFrame
df[:10]
program gender division height
0 1 M 1 7
1 1 M 1 7
2 1 M 1 8
3 1 M 1 8
4 1 M 1 7
5 1 M 2 6
6 1 M 2 6
7 1 M 2 5
8 1 M 2 6
9 1 M 2 5
Шаг 2. Выполните трехфакторный дисперсионный анализ.
Далее мы можем использовать функцию anova_lm() из библиотеки statsmodels для выполнения трехфакторного дисперсионного анализа:
import statsmodels. api as sm
from statsmodels. formula . api import ols
#perform three-way ANOVA
model = ols("""height ~ C(program) + C(gender) + C(division) +
C(program):C(gender) + C(program):C(division) + C(gender):C(division) +
C(program):C(gender):C(division)""", data=df) .fit ()
sm. stats . anova_lm (model, typ= 2 )
sum_sq df F PR(>F)
C(program) 3.610000e+01 1.0 6.563636e+01 2.983934e-09
C(gender) 6.760000e+01 1.0 1.229091e+02 1.714432e-12
C(division) 1.960000e+01 1.0 3.563636e+01 1.185218e-06
C(program):C(gender) 2.621672e-30 1.0 4.766677e-30 1.000000e+00
C(program):C(division) 4.000000e-01 1.0 7.272727e-01 4.001069e-01
C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
C(program):C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
Residual 1.760000e+01 32.0 NaN NaN
Шаг 3: Интерпретируйте результаты
В столбце Pr(>F) отображается значение p для каждого отдельного фактора и взаимодействия между факторами.
Из результатов мы видим, что ни одно из взаимодействий между тремя факторами не было статистически значимым.
Мы также можем видеть, что каждый из трех факторов (программа, пол и подразделение) был статистически значимым со следующими значениями p:
- Значение P программы : 0,00000000298
- Половое значение P: 0,00000000000171
- Значение P деления : 0,00000185
В заключение мы хотели бы сказать, что программа тренировок, пол и дивизион — все это важные показатели увеличения высоты прыжка у игроков.
Мы бы также сказали, что между этими тремя факторами нет существенных эффектов взаимодействия.
Дополнительные ресурсы
В следующих руководствах объясняется, как адаптировать другие модели ANOVA в Python:
Как выполнить однофакторный дисперсионный анализ в Python
Как выполнить двусторонний дисперсионный анализ в Python
Как выполнить повторные измерения ANOVA в Python