Как выполнить двусторонний дисперсионный анализ в python
Двусторонний дисперсионный анализ используется для определения того, существует ли статистически значимая разница между средними значениями трех или более независимых групп, которые были разделены по двум факторам.
Целью двустороннего дисперсионного анализа является определение влияния двух факторов на переменную ответа и определение того, существует ли взаимодействие между двумя факторами на переменную ответа.
В этом руководстве объясняется, как выполнить двусторонний дисперсионный анализ в Python.
Пример: двусторонний дисперсионный анализ в Python
Ботаник хочет знать, влияют ли на рост растений воздействие солнечного света и частота полива. Она сажает 30 семян и дает им расти в течение двух месяцев при различных условиях солнечного света и частоты полива. Через два месяца она записывает высоту каждого растения в дюймах.
Используйте следующие шаги, чтобы выполнить двусторонний дисперсионный анализ, чтобы определить, оказывают ли частота полива и воздействие солнца существенное влияние на рост растений, а также определить, существует ли эффект взаимодействия между частотой полива и воздействием солнца. полив и пребывание на солнце.
Шаг 1: Введите данные.
Сначала мы создадим DataFrame pandas, который будет содержать следующие три переменные:
- вода: как часто поливали каждое растение: ежедневно или еженедельно
- солнце: количество солнечного света, получаемое каждым растением: низкое, среднее или высокое.
- высота: высота каждого растения (в дюймах) через два месяца.
import numpy as np import pandas as pd #create data df = pd.DataFrame({'water': np.repeat(['daily', 'weekly'], 15), 'sun': np.tile(np.repeat(['low', 'med', 'high'], 5), 2), 'height': [6, 6, 6, 5, 6, 5, 5, 6, 4, 5, 6, 6, 7, 8, 7, 3, 4, 4, 4, 5, 4, 4, 4, 4, 4, 5, 6, 6, 7, 8]}) #view first ten rows of data df[:10] water sun height 0 daily low 6 1 daily low 6 2 daily low 6 3 daily low 5 4 daily low 6 5 daily med 5 6 daily med 5 7 daily med 6 8 daily med 4 9 daily med 5
Шаг 2: Выполните двусторонний дисперсионный анализ.
Далее мы выполним двусторонний дисперсионный анализ, используя функцию anova_lm() из библиотеки statsmodels:
import statsmodels.api as sm from statsmodels.formula.api import ols #perform two-way ANOVA model = ols('height ~ C(water) + C(sun) + C(water):C(sun)', data=df).fit() sm.stats.anova_lm(model, typ=2) sum_sq df F PR(>F) C(water) 8.533333 1.0 16.0000 0.000527 C(sun) 24.866667 2.0 23.3125 0.000002 C(water):C(sun) 2.466667 2.0 2.3125 0.120667 Residual 12.800000 24.0 NaN NaN
Шаг 3: Интерпретируйте результаты.
Мы можем видеть следующие значения p для каждого из факторов в таблице:
- вода: значение p = 0,000527
- солнце: значение p = 0,0000002
- вода*солнце: значение p = 0,120667
Поскольку значения p для воды и солнца меньше 0,05, это означает, что оба фактора оказывают статистически значимое влияние на высоту растений.
А поскольку значение p для эффекта взаимодействия (0,120667) составляет не менее 0,05, это говорит нам об отсутствии значительного эффекта взаимодействия между воздействием солнца и частотой полива.
Примечание. Хотя результаты ANOVA говорят нам о том, что частота полива и пребывание на солнце оказывают статистически значимое влияние на высоту растений, нам необходимо будет провести апостериорное тестирование , чтобы точно определить, как различные уровни воды и солнечного света влияют на высоту растений.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи на Python:
Как выполнить однофакторный дисперсионный анализ в Python
Как выполнить трехфакторный дисперсионный анализ в Python