Jak wykonać dwukierunkową anova w pythonie
Dwuczynnikową analizę ANOVA stosuje się w celu określenia, czy istnieje statystycznie istotna różnica pomiędzy średnimi z trzech lub większej liczby niezależnych grup, które zostały podzielone na dwa czynniki.
Celem dwuczynnikowej analizy ANOVA jest określenie wpływu dwóch czynników na zmienną odpowiedzi oraz określenie, czy istnieje interakcja pomiędzy tymi dwoma czynnikami na zmienną odpowiedzi.
W tym samouczku wyjaśniono, jak wykonać dwukierunkową analizę ANOVA w języku Python.
Przykład: dwukierunkowa ANOVA w Pythonie
Botanik chce wiedzieć, czy na wzrost roślin wpływa ekspozycja na światło słoneczne i częstotliwość podlewania. Sadzi 30 nasion i pozwala im rosnąć przez dwa miesiące w różnych warunkach nasłonecznienia i częstotliwości podlewania. Po dwóch miesiącach rejestruje wysokość każdej rośliny w calach.
Wykonaj poniższe kroki, aby wykonać dwukierunkową analizę ANOVA w celu ustalenia, czy częstotliwość podlewania i ekspozycja na słońce mają znaczący wpływ na wzrost roślin oraz w celu ustalenia, czy istnieje efekt interakcji pomiędzy częstotliwością podlewania i ekspozycją na słońce. podlewanie i ekspozycja na słońce.
Krok 1: Wprowadź dane.
Najpierw utworzymy ramkę danych pandy zawierającą następujące trzy zmienne:
- woda: jak często podlewano każdą roślinę: codziennie lub co tydzień
- słońce: stopień nasłonecznienia, jaki otrzymała każda roślina: niski, średni lub wysoki
- wysokość: wysokość każdej rośliny (w calach) po dwóch miesiącach
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
Krok 2: Wykonaj dwukierunkową ANOVA.
Następnie przeprowadzimy dwukierunkową analizę ANOVA przy użyciu funkcji anova_lm() z biblioteki 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
Krok 3: Interpretacja wyników.
W tabeli możemy zobaczyć następujące wartości p dla każdego z czynników:
- woda: wartość p = 0,000527
- słońce: wartość p = 0,0000002
- woda*słońce: wartość p = 0,120667
Ponieważ wartości p dla wody i słońca są mniejsze niż 0,05, oznacza to, że oba czynniki mają statystycznie istotny wpływ na wysokość rośliny.
A ponieważ wartość p dla efektu interakcji (0,120667) jest nie mniejsza niż 0,05, mówi nam to, że nie ma znaczącego efektu interakcji pomiędzy ekspozycją na słońce a częstotliwością podlewania.
Uwaga: Chociaż wyniki ANOVA mówią nam, że częstotliwość podlewania i ekspozycja na słońce mają statystycznie istotny wpływ na wysokość rośliny, będziemy musieli przeprowadzić badania post hoc, aby dokładnie określić, jak różne poziomy wody i światła słonecznego wpływają na wysokość rośliny.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Pythonie:
Jak wykonać jednokierunkową ANOVA w Pythonie
Jak wykonać trójczynnikową ANOVA w Pythonie