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

Dodaj komentarz

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