python的数据正态性检验


对数据正态性进行检验,原假设H0:样本数据服从正态分布。

1.scipy.stats.shapiro

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值大于指定的显著性水平,则接受原假设。

2.scipy.stats.normaltest

statistic,p=scipy.stats.normaltest(a, axis=0, nan_policy='propagate')

参数介绍:
axis:默认为0,根据哪一维度进行检验。axis=None 表示对整个数据做检验。
nan_policy:当输入的数据中有nan时,‘propagate’,返回空值;‘raise’ ,抛出错误;‘omit’ 时,忽略空值。

返回值中,第一个是统计量,第二个是P值。

3.scipy.stats.kstest

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值。

4.scipy.stats.anderson

不局限于正态检验,可以检验多种分布(正态分布、指数分布、logistic 或者 Gumbel等分布)。

statistic,critical_values,significance_level=scipy.stats.anderson(x, dist='norm')

参数介绍:
x:样本数据
dist:要检验的分布

返回值中,第一个表示统计值,第二个表示评价值,第三个是显著性水平;评价值和显著性水平对应,不同分布显著性水平不同。

结果说明:当统计值大于评价值时,表示在对应显著性水平下,拒绝原假设。

5.代码实现

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)
				
一直对各种检验稀里糊涂的,借着Python把一些常用的数据分析或者论文建模使用的检验方法总结一哈。 文章目录正态分布 Normal distribution正态分布相关数据构造正态分布相关图像绘制正态分布概率密度函数图像绘制正态分布累计概率密度函数图像绘制正态分布检验直方图初略判断Shapiro-Wilk test检验kstest 检验normaltest 检验Anderson-Darling 检验对数正态分布 正态分布 Normal distribution 我导师说得好,大家都喜欢的男孩子叫正太,大家都
第11章 统计学 11.1 正态性检验 可以说 , 正态分布是金融学中最重要的分布 , 也是金融理论的主要统计学基础之一。尤其是下面这些金融理论基础 , 在很大程度上依赖于股票市场收益的正态分布。 投资组合理论 当股票收益呈正态分布时,最优化投资组合可以在这样的环境中选择: 只有平均收益和收益的方差(或者波动率)以及不同股票之间的协方差与投资决策(即最优化投资组合构成)相关。 资本性资产定价模型
正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。   正态曲线呈钟型,两头低,中间高,左右对称因...
我们在线性回归做假设检验,在时间序列分析做自回归检验,那么我们如何检验一个分布是否是正态分布的呢? 首先,我们定义一个用来生成价格路径的函数。当然啦,在这之前我们先导入我们今天要用的库。 import numpy as np np.random.seed(1000) import scipy.stats as scs import statsmodels.api as sm