Jak wykonać test browna-forsythe'a w pythonie
Jednoczynnikową analizę ANOVA stosuje się w celu określenia, czy istnieje istotna różnica pomiędzy średnimi z trzech lub większej liczby niezależnych grup.
Jednym z założeń jednokierunkowej analizy ANOVA jest to, że wariancje populacji, z których pobierane są próbki, są równe.
Jednym z najczęstszych sposobów sprawdzenia tego jest użycie testu Browna-Forsythe’a , który jest testem statystycznym wykorzystującym następujące założenia :
- H 0 : Wariancje pomiędzy populacjami są równe.
- H A : Różnice między populacjami nie są równe.
Jeśli wartość p testu jest poniżej pewnego poziomu istotności (np. α = 0,05), wówczas odrzucamy hipotezę zerową i stwierdzamy, że wariancje nie są równe pomiędzy różnymi populacjami.
W tym samouczku przedstawiono krok po kroku przykład wykonania testu Browna-Forsythe’a w języku Python.
Krok 1: Wprowadź dane
Załóżmy, że badacze chcą wiedzieć, czy trzy różne nawozy prowadzą do różnych poziomów wzrostu roślin.
Losowo wybierają 30 różnych roślin i dzielą je na trzy grupy po 10, stosując do każdej grupy inny nawóz. Po miesiącu mierzą wysokość każdej rośliny.
Poniższe tabele przedstawiają wysokość roślin w każdej z trzech grup:
group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8] group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8] group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]
Krok 2: Podsumuj dane
Przed wykonaniem testu Browna-Forsythe’a możemy obliczyć wariancję pomiarów roślin w każdej grupie:
#import numpy import numpy as np #calculate variance of plant measurements in each group print (np. var (group1), np. var (group2), np. var (group3)) 8.69 7.81 7.0
Widzimy, że wariancje między grupami się różnią, ale aby określić, czy różnice te są istotne statystycznie , możemy wykonać test Browna-Forsythe’a.
Krok 3: Wykonaj test Browna-Forsythe’a
Aby wykonać test Browna-Forsythe’a w Pythonie, możemy użyć funkcji scipy.stats.levene() i określić, że środek jest medianą :
import scipy.stats as stats
stats. levene (group1, group2, group3, center=' median ')
LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)
Na podstawie wyniku możemy zaobserwować, co następuje:
- Statystyka testowa: 0,1798
- Wartość p: 0,8364
Wartość p testu okazuje się większa niż 0,05, zatem nie udaje nam się odrzucić hipotezy zerowej testu.
Różnice w wariancjach pomiędzy grupami nie są istotne statystycznie.
Następne kroki
Jeśli nie odrzucimy hipotezy zerowej testu Browna-Forsythe’a, możemy przeprowadzić jednokierunkową analizę ANOVA na danych.
Jeśli jednak odrzucimy hipotezę zerową, oznacza to, że założenie o równości wariancji nie jest spełnione. W tym przypadku mamy dwie możliwości:
1. Mimo to wykonaj jednokierunkową ANOVA.
Okazuje się, że jednokierunkowa analiza ANOVA jest w rzeczywistości odporna na nierówne wariancje, o ile największa wariancja nie jest większa niż 4-krotność najmniejszej wariancji.
W kroku 2 powyższego przykładu odkryliśmy, że najmniejsza wariancja wyniosła 7,0, a największa wariancja wyniosła 8,69. Zatem stosunek największej do najmniejszej wariancji wynosi 8,69 / 7,0 = 1,24 .
Ponieważ wartość ta jest mniejsza niż 4, moglibyśmy po prostu przystąpić do jednokierunkowej analizy ANOVA, nawet jeśli test Browna-Forsythe’a wykazał, że wariancje nie były równe.
2. Wykonaj test Kruskala-Wallisa
Jeżeli stosunek największej wariancji do najmniejszej wariancji jest większy niż 4, można zamiast tego wykonać test Kruskala-Wallisa . Uważa się to za nieparametryczny odpowiednik jednokierunkowej analizy ANOVA.
Przykładowy krok po kroku testu Kruskala-Wallisa w Pythonie znajdziesz tutaj .