Python'da kolmogorov-smirnov testi nasıl yapılır?


Kolmogorov-Smirnov testi, bir örneklemin belirli bir dağılımdan gelip gelmediğini test etmek için kullanılır.

Python’da Kolmogorov-Smirnov testi gerçekleştirmek için, tek örnekli bir test için scipy.stats.kstest() veya iki örnekli bir test için scipy.stats.ks_2samp()’ ı kullanabiliriz.

Bu eğitimde her fonksiyonun pratikte nasıl kullanılacağına dair bir örnek gösterilmektedir.

Örnek 1: Bir Kolmogorov-Smirnov test örneği

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 dağılımdan gelip gelmediklerini belirlemek için 100 veri değerinden oluşan bu örnek üzerinde Kolmogorov-Smirnov testinin nasıl gerçekleştirileceğini gösterir:

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

Sonuçtan test istatistiğinin 0,9072 ve karşılık gelen p değerinin 1,0908e-103 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.

Örnek 2: İki örnekli Kolmogorov-Smirnov testi

Diyelim ki aşağıdaki iki örnek veri setimiz var:

 from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal

#set seed (eg make this example reproducible)
seed(0)

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

Aşağıdaki kod, aynı dağılımdan gelip gelmediklerini belirlemek için bu iki örnek üzerinde Kolmogorov-Smirnov testinin nasıl gerçekleştirileceğini gösterir:

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

Sonuçtan test istatistiğinin 0,99 ve karşılık gelen p değerinin 4,4175e-57 olduğunu görebiliriz. P değeri 0,05’ten küçük olduğundan sıfır hipotezini reddediyoruz. İki örnek veri kümesinin aynı dağılımdan olmadığını söyleyecek yeterli kanıtımız var.

İlk örnek için değerleri standart normal dağılım kullanarak, ikinci örnek için ise lognormal dağılım kullanarak değerler ürettiğimiz için bu sonuç da şaşırtıcı olmamalıdır.

Ek kaynaklar

Python’da Shapiro-Wilk Testi Nasıl Yapılır?
Python’da Anderson-Darling Testi Nasıl Yapılır?

Yorum ekle

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