2012-10-11 13 views
31

डेटासेट सामान्य वितरक होने पर परीक्षण के लिए मुझे सटीक रूप से उपयोग करने की आवश्यकता है। लेकिन मुझे scipy.stats.normaltest का उपयोग करने के लिए कोई अच्छा उदाहरण नहीं मिल रहा है।Scipy Normaltest इसका उपयोग कैसे किया जाता है?

मेरे डेटासेट में 100 से अधिक मूल्य हैं।

उत्तर

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 ची-वर्ग आंकड़े के एक 2-टपल, और संबद्ध पी मान देता है। शून्य प्रतिबिंब को देखते हुए x सामान्य वितरण से आया, पी-वैल्यू संभावना का प्रतिनिधित्व करता है कि एक ची-स्क्वायर आंकड़ा जो बड़े (या बड़े) को देखा जाएगा।

यदि पी-वैल बहुत छोटा है, तो इसका मतलब यह है कि डेटा सामान्य वितरण से आया है। उदाहरण के लिए:

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

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

त्वरित उत्तर के लिए धन्यवाद। –

+1

हम यहां "बहुत छोटे" को कैसे मापते हैं? – AmanArora

+1

यह एक मनमाना विकल्प है: http://stats.stackexchange.com/a/55693/842। बस यह सुनिश्चित करना सुनिश्चित करें कि सांख्यिकीय परीक्षण लागू करने से पहले आपका हस्ताक्षर स्तर * क्या है। – unutbu

10

सबसे पहले मुझे पता चला कि scipy.stats.normaltest लगभग समान है। Mstats लाइब्रेरी मास्क किए गए सरणी के लिए प्रयोग किया जाता है। Arrays जहां आप मानों को अमान्य के रूप में चिह्नित कर सकते हैं और गणना में नहीं ले जा सकते हैं।

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" 

"परंपरागत रूप से, आँकड़ों में, आप 0.05 से कम के पी-मूल्य की जरूरत है शून्य परिकल्पना को अस्वीकार।" - http://mathforum.org/library/drmath/view/72065.html

+5

'<0.05' के बजाय' 0.055' क्यों? – Olli

+1

यदि पी-वैल बहुत छोटा है, तो इसका मतलब यह है कि डेटा सामान्य वितरण से आया है। 0.05 मानक दहलीज है, लेकिन अधिक निश्चित होने के लिए आप 0.055 या कुछ और की तरह निश्चितता बढ़ा सकते हैं। यह सिर्फ हाँ कहने का एक सीमा है कि यह एक सामान्य वितरण है। –

संबंधित मुद्दे