Jak wykonać test tukeya w pythonie
Jednoczynnikową ANOVA stosuje się do określenia, czy istnieje statystycznie istotna różnica pomiędzy średnimi z trzech lub więcej niezależnych grup.
Jeśli ogólna wartość p tabeli ANOVA jest poniżej pewnego poziomu istotności, wówczas mamy wystarczające dowody, aby stwierdzić, że co najmniej jedna ze średnich grupowych różni się od pozostałych.
Nie mówi nam to jednak , które grupy różnią się od siebie. To po prostu mówi nam, że nie wszystkie średnie grupowe są równe. Aby dokładnie wiedzieć, które grupy się od siebie różnią, należy przeprowadzićtest post hoc .
Jednym z najczęściej stosowanych testów post hoc jest test Tukeya , który umożliwia przeprowadzenie porównań parami pomiędzy średnimi każdej grupy, kontrolując jednocześnie współczynnik błędu rodzinnego .
W tym samouczku przedstawiono krok po kroku przykład wykonania testu Tukeya w języku Python.
Krok 1: Załaduj niezbędne pakiety i funkcje
Najpierw załadujemy niezbędne pakiety i funkcje w Pythonie:
import pandas as pd
import numpy as np
from scipy. stats import f_oneway
from statsmodels. stats . multicomp import pairwise_tukeyhsd
Krok 2: Dopasuj model ANOVA
Poniższy kod pokazuje, jak utworzyć fałszywy zbiór danych z trzema grupami (A, B i C) i dopasować do danych jednokierunkowy model ANOVA, aby określić, czy średnie wartości każdej grupy są równe:
#enter data for three groups a = [85, 86, 88, 75, 78, 94, 98, 79, 71, 80] b = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96] c = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81] #perform one-way ANOVA f_oneway(a, b, c) F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)
Widzimy, że ogólna wartość p z tabeli ANOVA wynosi 0,01258 .
Ponieważ liczba ta jest mniejsza niż 0,05, mamy wystarczające dowody, aby stwierdzić, że średnie wartości w każdej grupie nie są równe.
Możemy więc wykonać test Tukeya, aby dokładnie określić, które średnie grupowe są różne.
Krok 3: Wykonaj test Tukeya
Aby wykonać test Tukeya w Pythonie, możemy użyć funkcji pairwise_tukeyhsd() z biblioteki statsmodels :
#create DataFrame to hold data df = pd. DataFrame ({'score': [85, 86, 88, 75, 78, 94, 98, 79, 71, 80, 91, 92, 93, 90, 97, 94, 82, 88, 95, 96, 79, 78, 88, 94, 92, 85, 83, 85, 82, 81], 'group': np. repeat (['a', 'b', 'c'], repeats= 10 )}) # perform Tukey's test tukey = pairwise_tukeyhsd(endog=df['score'], groups=df['group'], alpha= 0.05 ) #display results print (tukey) Multiple Comparison of Means - Tukey HSD, FWER=0.05 ==================================================== === group1 group2 meandiff p-adj lower upper reject -------------------------------------------------- --- ab 8.4 0.0158 1.4272 15.3728 True ac 1.3 0.8864 -5.6728 8.2728 False bc -7.1 0.0453 -14.0728 -0.1272 True -------------------------------------------------- ---
Oto jak zinterpretować wynik:
- Wartość P dla różnicy średnich między aib: 0,0158
- Wartość P dla różnicy średnich między a i c: 0,8864
- Wartość P dla różnicy średnich między b i c: 0,0453
Zatem doszlibyśmy do wniosku, że istnieje statystycznie istotna różnica pomiędzy średnimi grup a i b oraz grup b i c , ale nie ma statystycznie istotnej różnicy pomiędzy średnimi grup a i c .
Dodatkowe zasoby
Jak wykonać jednokierunkową ANOVA w Pythonie
Jak wykonać dwukierunkową ANOVA w Pythonie
Jak wykonać powtarzalne pomiary ANOVA w Pythonie