Jak wykonać test shapiro-wilka w pythonie
Test Shapiro-Wilka jest testem normalności. Służy do określenia, czy próbka pochodzi z rozkładu normalnego .
Aby wykonać test Shapiro-Wilka w Pythonie, możemy użyć funkcji scipy.stats.shapiro() , która wykorzystuje następującą składnię:
scipy.stats.shapiro(x)
Złoto:
- x: tabela przykładowych danych.
Ta funkcja zwraca statystykę testową i odpowiadającą jej wartość p.
Jeżeli wartość p jest poniżej pewnego poziomu istotności, wówczas mamy wystarczające dowody, aby stwierdzić, że dane próbki nie pochodzą z rozkładu normalnego.
W tym samouczku przedstawiono kilka przykładów wykorzystania tej funkcji w praktyce.
Przykład 1: Test Shapiro-Wilka na danych o rozkładzie normalnym
Załóżmy, że mamy następujące przykładowe dane:
from numpy.random import seed from numpy.random import randn #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 random values that follow a standard normal distribution data = randn(100)
Poniższy kod pokazuje, jak przeprowadzić test Shapiro-Wilka na tej próbie 100 wartości danych, aby określić, czy pochodzą one z rozkładu normalnego:
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)
Z wyniku widzimy, że statystyka testowa wynosi 0,9927 , a odpowiadająca jej wartość p wynosi 0,8689 .
Ponieważ wartość p jest nie mniejsza niż 0,05, nie możemy odrzucić hipotezy zerowej. Nie mamy wystarczających dowodów, aby stwierdzić, że przykładowe dane nie pochodzą z rozkładu normalnego.
Wynik ten nie powinien być zaskakujący, ponieważ przykładowe dane wygenerowaliśmy za pomocą funkcji rann() , która generuje losowe wartości zgodne ze standardowym rozkładem normalnym.
Przykład 2: Test Shapiro-Wilka na danych o rozkładzie normalnym
Załóżmy teraz, że mamy następujące przykładowe dane:
from numpy.random import seed from numpy.random import fish #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data = fish(5, 100)
Poniższy kod pokazuje, jak przeprowadzić test Shapiro-Wilka na tej próbie 100 wartości danych, aby określić, czy pochodzą one z rozkładu normalnego:
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)
Z wyniku widzimy, że statystyka testowa wynosi 0,9582 , a odpowiadająca jej wartość p wynosi 0,00299 .
Ponieważ wartość p jest mniejsza niż 0,05, odrzucamy hipotezę zerową. Mamy wystarczające dowody, aby stwierdzić, że przykładowe dane nie pochodzą z rozkładu normalnego.
Wynik ten również nie powinien być zaskakujący, ponieważ przykładowe dane wygenerowaliśmy za pomocą funkcji Poisson() , która generuje losowe wartości zgodne z rozkładem Poissona .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne testy normalności w różnych programach statystycznych:
Jak wykonać test Shapiro-Wilka w R
Jak wykonać test Andersona-Darlinga w Pythonie
Jak wykonać test Kołmogorowa-Smirnowa w Pythonie