2012-10-11 23 views

cevap

56
In [12]: import scipy.stats as stats 

In [13]: x = stats.norm.rvs(size = 100) 

In [14]: stats.normaltest(x) 
Out[14]: (1.627533590094232, 0.44318552909231262) 

normaltest ki-kare istatistiğinin 2-tuple ve ilgili p değerini verir. x'un normal bir dağılımdan geldiği sıfır hipotezi göz önüne alındığında, p değeri, büyük (veya daha büyük) görünecek bir ki-kare istatistiğinin olasılığını temsil eder.

Eğer p-val değeri çok küçükse, verilerin normal bir dağılımdan gelmesi olası değildir. Örneğin:

In [15]: y = stats.uniform.rvs(size = 100) 

In [16]: stats.normaltest(y) 
Out[16]: (31.487039026711866, 1.4543748291516241e-07) 
+0

Hızlı cevap için teşekkürler. –

+1

Burada "çok küçük" miktarını nasıl ölçeriz? – AmanArora

+1

Rasgele bir seçimdir: http://stats.stackexchange.com/a/55693/842. Sadece bir istatistiksel test uygulamadan önce * başarı düzeyinizin * ne olduğuna * karar verdiğinizden emin olun. – unutbu

10

Önce scipy.stats.normaltest'in hemen hemen aynı olduğunu öğrendim. Mstats kütüphanesi maskelenmiş diziler için kullanılır. Değerleri geçersiz olarak işaretleyebileceğiniz ve hesaplamaya alınamayan diziler.

import numpy as np 
import numpy.ma as ma 
from scipy.stats import mstats 

x = np.array([1, 2, 3, -1, 5, 7, 3]) #The array needs to be larger than 20, just an example 
mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0, 0, 0]) 
z,pval = mstats.normaltest(mx) 

if(pval < 0.055): 
    print "Not normal distribution" 

"Geleneksel olarak, istatistik, hipotezini red 0.05'ten az arasında bir p-değer gerekir." - http://mathforum.org/library/drmath/view/72065.html

+5

Neden <0,05 'yerine <0,05'? – Olli

+1

Eğer p-val değeri çok küçükse, verilerin normal dağılımdan gelmesi olası değildir. 0,05 standart eşiktir, ancak daha kesin olmak için, 0,055 gibi bir kesinlik veya başka bir şey artırabilirsiniz. Sadece evet demenin bir eşiği normal bir dağılımdır. –