Python'da shapiro-wilk testi nasıl yapılır?


Shapiro-Wilk testi bir normallik testidir. Bir örneğin normal dağılımdan gelip gelmediğini belirlemek için kullanılır.

Python’da Shapiro-Wilk testi gerçekleştirmek için aşağıdaki sözdizimini kullanan scipy.stats.shapiro() işlevini kullanabiliriz:

scipy.stats.shapiro(x)

Altın:

  • x: örnek veri tablosu.

Bu fonksiyon bir test istatistiği ve buna karşılık gelen bir p değeri döndürür.

P değeri belirli bir anlamlılık düzeyinin altındaysa, örneklem verilerinin normal dağılımdan gelmediğini söylemek için yeterli kanıtımız var demektir.

Bu eğitimde bu özelliğin pratikte nasıl kullanılacağına dair bazı örnekler gösterilmektedir.

Örnek 1: Normal dağılım gösteren veriler üzerinde Shapiro-Wilk testi

Aşağıdaki örnek verilere sahip olduğumuzu varsayalım:

 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)

Aşağıdaki kod, normal bir dağılımdan gelip gelmediklerini belirlemek için 100 veri değerinden oluşan bu örnek üzerinde Shapiro-Wilk testinin nasıl gerçekleştirileceğini gösterir:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

Sonuçtan test istatistiğinin 0,9927 ve karşılık gelen p değerinin 0,8689 olduğunu görebiliriz.

P değeri 0,05’ten küçük olmadığından sıfır hipotezini reddedemiyoruz. Örneklem verilerinin normal dağılımdan gelmediğini söyleyecek yeterli kanıtımız yok.

Örnek verileri standart normal dağılıma uygun rastgele değerler üreten randn() fonksiyonunu kullanarak oluşturduğumuz için bu sonuç şaşırtıcı olmamalıdır.

Örnek 2: Normal dağılım göstermeyen veriler üzerinde Shapiro-Wilk testi

Şimdi aşağıdaki örnek verilere sahip olduğumuzu varsayalım:

 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)

Aşağıdaki kod, normal bir dağılımdan gelip gelmediklerini belirlemek için 100 veri değerinden oluşan bu örnek üzerinde Shapiro-Wilk testinin nasıl gerçekleştirileceğini gösterir:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

Sonuçtan test istatistiğinin 0,9582 ve karşılık gelen p değerinin 0,00299 olduğunu görebiliriz.

P değeri 0,05’ten küçük olduğundan sıfır hipotezini reddediyoruz. Örnek verilerin normal dağılımdan gelmediğini söyleyecek yeterli kanıtımız var.

Örnek verileri Poisson dağılımını takip eden rastgele değerler üreten Poisson() fonksiyonunu kullanarak oluşturduğumuz için bu sonuç da şaşırtıcı olmamalıdır.

Ek kaynaklar

Aşağıdaki eğitimlerde çeşitli istatistiksel yazılımlarda diğer normallik testlerinin nasıl gerçekleştirileceği açıklanmaktadır:

R’de Shapiro-Wilk testi nasıl yapılır
Python’da Anderson-Darling Testi Nasıl Yapılır?
Python’da Kolmogorov-Smirnov testi nasıl yapılır?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir