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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *