如果数据集是正态分布,我需要在scipy中使用normaltest进行测试.但我似乎无法找到任何好的例子如何使用scipy.stats.normaltest
.
我的数据集有超过100个值.
unu*_*tbu 71
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
The*_*emz 12
首先我发现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"
Run Code Online (Sandbox Code Playgroud)
"传统上,在统计学中,你需要一个小于0.05的p值来拒绝零假设." - http://mathforum.org/library/drmath/view/72065.html
归档时间: |
|
查看次数: |
32162 次 |
最近记录: |