Як виконати двосторонній дисперсійний аналіз у python
Двосторонній дисперсійний аналіз використовується, щоб визначити, чи існує статистично значуща різниця між середніми значеннями трьох або більше незалежних груп, які були розділені за двома факторами.
Метою двостороннього дисперсійного аналізу є визначення впливу двох факторів на змінну відповіді та визначення того, чи існує взаємодія між двома факторами на змінну відповіді.
У цьому посібнику пояснюється, як виконати двосторонній дисперсійний аналіз у Python.
Приклад: двосторонній дисперсійний аналіз у Python
Ботанік хоче знати, чи впливає на ріст рослин сонячне світло та частота поливу. Вона висаджує 30 насінин і дає їм рости протягом двох місяців у різних умовах сонячного освітлення та частоти поливу. Через два місяці вона записує висоту кожної рослини в дюймах.
Використовуйте наступні кроки, щоб виконати двосторонній дисперсійний аналіз, щоб визначити, чи частота поливу та сонячне опромінення мають значний вплив на ріст рослин, а також визначити, чи існує ефект взаємодії між частотою поливу та сонячним опромінюванням. полив і перебування на сонці.
Крок 1: Введіть дані.
Спочатку ми створимо pandas DataFrame, який містить наступні три змінні:
- вода: як часто поливали кожну рослину: щодня чи щотижня
- сонце: кількість сонячних променів, яку отримувала кожна рослина: низька, середня або висока
- висота: висота кожної рослини (в дюймах) через два місяці
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-значення для кожного з факторів у таблиці:
- вода: р-значення = 0,000527
- сонце: р-значення = 0,0000002
- вода*сонце: p-value = 0,120667
Оскільки p-значення для води і сонця менше ніж 0,05, це означає, що обидва фактори мають статистично значущий вплив на висоту рослин.
І оскільки значення p для ефекту взаємодії (0,120667) становить не менше 0,05, це говорить нам про відсутність значного ефекту взаємодії між перебуванням на сонці та частотою поливу.
Примітка. Незважаючи на те, що результати дисперсійного аналізу свідчать про те, що частота поливу та сонячне світло мають статистично значущий вплив на висоту рослин, нам потрібно буде провести ретельне тестування , щоб точно визначити, як різні рівні води та сонячного світла впливають на висоту рослин.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в Python:
Як виконати односторонній дисперсійний аналіз у Python
Як виконати тристоронній дисперсійний аналіз на Python