2012-10-11 5 views

답변

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 튜플과 관련된 p- 값을 반환합니다. x이 정규 분포에서 나온 귀무 가설을 감안할 때, p 값은 큰 (또는 큰) 카이 제곱 통계가 나타날 확률을 나타냅니다.

p-val이 매우 작 으면 데이터가 정규 분포에서 왔을 가능성이 낮음을 의미합니다. 예 :

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. 통계 테스트를 적용하기 전에 귀하의 significance 수준 *을 결정하십시오. – unutbu

10

처음에는 scipy.stats.normaltest가 거의 동일하다는 것을 알았습니다. mstats 라이브러리는 마스크 된 배열에 사용됩니다. 값을 유효하지 않은 것으로 표시하고 계산에 포함시키지 않는 배열.

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 에의 p 값이 필요합니다." - http://mathforum.org/library/drmath/view/72065.html

+5

왜 '<0.05'대신 '<0.055'입니까? – Olli

+1

p-val이 매우 작 으면 데이터가 정규 분포에서 왔을 가능성이 낮음을 의미합니다. 0.05가 표준 임계 값이지만 0.055 또는 다른 것과 같은 확실성을 올릴 수 있다고 확신하는 것이 더 중요합니다. 예스라고 말하는 것에 대한 문턱은 정상적인 분포입니다. –

관련 문제