scipy.stats.shapiro
是一种Shapiro-Wilk test
,The Shapiro-Wilk test tests the null hypothesis(零假设) that the data was drawn from a normal distribution。
scipy.stats.shapiro
适用于小样本数据,只能检查正态分布。
s,p=scipy.stats.shapiro(x)
返回值s为检验统计量,p为p值,当p值大于指定的显著性水平,则接受原假设。
statistic,p=scipy.stats.normaltest(a, axis=0, nan_policy='propagate')
参数介绍:
axis
:默认为0,根据哪一维度进行检验。axis=None 表示对整个数据做检验。
nan_policy
:当输入的数据中有nan时,‘propagate’,返回空值;‘raise’ ,抛出错误;‘omit’ 时,忽略空值。
返回值中,第一个是统计量,第二个是P值。
scipy.stats.kstest
是一种K-S检验。它不局限于正态检验,可以检验多种分布。
statistic,p=scipy.stats.kstest(rvs, cdf, args=(), N=20, alternative='two-sided', mode='approx')
参数介绍:
rvs
:待检验数据。
cdf
:检验分布,例如’norm’,‘expon’,‘rayleigh’,'gamma’等分布,设置为’norm’时表示正态分布。
alternative
:默认为双侧检验,可以设置为’less’或’greater’作单侧检验。
model
:定义用于计算p值的分布,‘approx’(默认值),表示使用检验统计量的精确分布的近似值;‘asymp’:使用检验统计量的渐进分布。
返回值中,第一个为统计量,第二个为P值。
不局限于正态检验,可以检验多种分布(正态分布、指数分布、logistic 或者 Gumbel等分布)。
statistic,critical_values,significance_level=scipy.stats.anderson(x, dist='norm')
参数介绍:
x
:样本数据
dist
:要检验的分布
返回值中,第一个表示统计值,第二个表示评价值,第三个是显著性水平;评价值和显著性水平对应,不同分布显著性水平不同。
结果说明:当统计值大于评价值时,表示在对应显著性水平下,拒绝原假设。
import numpy as np
from scipy import stats
b = np.linspace(0, 10, 100)
# Shapiro-Wilk test
s,p = stats.shapiro(b)
print(s,p)
# kstest
s,p = stats.kstest(b, 'norm')
print(s,p)
# normaltest
s,p = stats.normaltest(b)
print(s,p)
# Anderson-Darling test
s,c,p = stats.anderson(b,dist='norm')
print(s,c,p)