Python'da anderson-darling testi nasıl yapılır?
Anderson-Darling testi, verilerinizin belirli bir dağılıma ne kadar iyi uyduğunu ölçen bir uyum iyiliği testidir.
Bu test çoğunlukla verilerinizin normal dağılıma uyup uymadığını belirlemek için kullanılır.
Bu test türü, regresyon , ANOVA , t testleri ve diğerleri de dahil olmak üzere birçok istatistiksel testte yaygın olarak kullanılan bir varsayım olan normalliği test etmek için kullanışlıdır.
Örnek: Python’da Anderson-Darling testi
Python’da bir Anderson-Darling testi gerçekleştirmek için, aşağıdaki sözdizimini kullanan scipy.stats kütüphanesindeki anderson() fonksiyonunu kullanabiliriz:
Anderson(x, dist=’norm’)
Altın:
- x : örnek veri tablosu
- dist : test edilecek dağıtım türü. Varsayılan “standart”tır ancak “expon” veya “lojistik” seçeneğini de belirleyebilirsiniz.
Örneğin, normal dağılıma sahip 50 rastgele değişkenden oluşan bir örneklem üzerinde Anderson-Darling testinin nasıl gerçekleştirileceği aşağıda açıklanmıştır:
import numpy as np #create data np.random.seed(0) data = np.random.normal(size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =0.15006999533388665, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
Test istatistiği 0,150’dir . Test sonuçlarının anlamlı olup olmadığını görmek için bu değeri her anlamlılık düzeyine karşılık gelen her kritik değerle karşılaştırabiliriz. Örneğin:
- α = 0,01 için kritik değer 1,021’dir . Test istatistiği (0,150) bu kritik değerden büyük olmadığından sonuçlar 0,01 anlamlılık düzeyinde anlamlı değildir.
- α = 0,025 için kritik değer 0,858’dir . Test istatistiği (0,150) bu kritik değerden büyük olmadığından sonuçlar 0,025 anlamlılık düzeyinde anlamlı değildir.
Ve benzeri.
Test sonuçlarının herhangi bir anlamlılık düzeyinde anlamlı olmadığını görebiliriz, bu da testin sıfır hipotezini reddetmeyeceğimiz anlamına gelir. Dolayısıyla örneklenen verilerin normal dağılmadığını iddia edecek yeterli kanıtımız yok.
Normal olarak dağıtılan 50 değerden oluşan bir örnek oluşturmak için np.rand.normal() işlevini kullandığımız göz önüne alındığında, bu sonuç şaşırtıcı olmamalıdır.
Bunun yerine, Anderson-Darling testini 0 ile 10 arasında 50 rastgele tamsayıdan oluşan bir örnek üzerinde uygulayıp uygulamadığımızı düşünün:
import numpy as np #create data np.random.seed(0) data = np.random.randint(0, 10, size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =1.1926463985076836, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
Test istatistiği 1,1926’dır . Test sonuçlarının anlamlı olup olmadığını görmek için bu değeri her anlamlılık düzeyine karşılık gelen her kritik değerle karşılaştırabiliriz. Örneğin:
- α = 0,01 için kritik değer 1,021’dir . Test istatistiği (1,1926) bu kritik değerden büyük olduğundan sonuçlar 0,01 anlamlılık düzeyinde anlamlıdır.
- α = 0,025 için kritik değer 0,858’dir . Test istatistiği (1,1926) bu kritik değerden büyük olduğundan sonuçlar 0,025 anlamlılık düzeyinde anlamlıdır.
Ve benzeri.
Test sonuçlarının her anlamlılık düzeyinde anlamlı olduğunu görebiliriz; bu, hangi anlamlılık düzeyini kullanmayı seçersek seçelim, testin sıfır hipotezini reddedeceğimiz anlamına gelir. Dolayısıyla örneklenen verilerin normal dağılmadığını söylemek için yeterli kanıtımız var.
0 ile 10 arasında 50 rastgele tam sayıdan oluşan bir örnek oluşturmak için np.rand.randint() işlevini kullandığımız ve bunun normal bir dağılım izlemesi muhtemel olmadığı göz önüne alındığında, bu sonuç şaşırtıcı olmamalıdır.
Daha fazla Python eğitimini burada bulabilirsiniz .