首页 > 编程知识 正文

如何确定数据正态分布,ks检验

时间:2023-05-05 21:29:19 阅读:166718 作者:4839

#寻找真知派#正如上一篇文章所述,样本所属整体服从正态分布是数据分析和数据挖掘等数据处理的重要前提。 如果我们采集的样品不能确认其整体是否服从正态分布,则数据处理的结果不可靠。 因此,有必要对样本数据进行正态分布检验。 一般正态分布检验方法如下。

1 .基于偏度和峰度的假设检验基于偏度峰度的检验利用了正态分布的偏度(3阶矩)和峰度(4阶矩)均为0的特征。

如果样本数据能够满足偏态和峰度均为0的假设,则认为整体服从正态分布。 由于该检查基于偏度检查和峰度检查,因此样品数量需要8个以上。 以下normaltest函数利用该原理进行正态分布检验。

scipy.stats.normaltest(x )此函数输出两个结果,第一个检查统计,第二个是p值。 如果p值大于0.05 (常用显著水平),可以认定整体服从正态分布。

使用偏度和峰度适合度检查的还有Jarque-Bera检查法。 那个统计量是

s是偏度,k是峰度,n是样本数或自由度

同样,jar quebera检测样本数也需要8个以上。 其使用方法如下。

scipy.stats.self_jbtest(x )此函数输出两个结果,第一个检查统计,第二个是p值。 如果p值大于0.05 (常用显著水平),可以认定整体服从正态分布。

2.Kolmogorov-Smirnov检验Kolmogorov-Smirnov检验用于一个频率分布f(x )和理论分布f(x )或两个观测值分布比较的检验方法。 其原始假设H0:两个数据分布一致或数据符合理论分布。 d=max|f(x )-g ) x|,实际观测值DD(n,)拒绝H0,否则接受H0假设。 d(n,)是自由度为n、显现级别为时的统计量阈值。

K-S检验原理

KS检验与其他方法的不同在于,KS检验是一种不需要知道数据分布情况的非参数检验方法,理论上可以对任何分布情况进行检验(不限于正态分布检验)。 当然,有专门针对具有灵敏度的分布的检查方法不高的代价(例如上述normaltest )。 此外,由于大多数KS检测软件实现了大样本逼近公式,KS算法适用于大样本(300多个)的检测。

以下方法采用KS检验进行正态分布检验

kstest(x,' norm ' )此函数输出两个结果,第一个检查统计量,第二个是p值。 如果p值大于0.05 (常用显著水平),可以认定整体服从正态分布。

顺便说一下,Kolmogorov大神在统计学界是个一里冢式的人,1933年,他出版了《概率论基础》这本书,确立了概率论的公理性结论。 这是一部划时代的巨著,它解决了困扰统计学界几百年概率论基本定义的问题。 当然他的贡献涉及数学的各个领域,可以说是20世纪最优秀、最有影响力的数学家之一。

科尔莫戈罗夫(Andrey Nikolaevich Kolmogorov,1903.4.25-1987.10.20 ) ) ) ) ) ) ) ) ) ) ) ) ) )。

3.Shapiro-Wilk检验Shapiro-Wilk检验由S.S.Shapiro和M.B.Wilk提出,常简称Shapiro检验(偶称为w检验),专门用于正态分布检验(8此法

以下方法采用Shapiro检验进行正态分布检验

scipy.stats.Shapiro(x )此函数输出两个结果,第一个检查统计量,第二个是p值。 如果p值大于0.05 (常用显著水平),可以认定整体服从正态分布。

4.Anderson-Darling检验Anderson-Darling检验,简称Anderson检验。 可以检测样本数据是否遵循“norm”、“expon”、“gumbel”、“extreme 1”or“logistic”的分布,是KS检测的强化版,也是非参数检测。 适用于大样本(大于300 )的整体分布检测。 Anderson测量经验累积概率和理论累积概率之差的方法比KS检查更自然,不像K-S检查那样只考虑一个最大的,而是考虑了所有的不同点。 下面的公式就是那个方法。

以下方法采用Anderson检验进行正态分布检验。

scipy.stats.Anderson(x,dist='norm ' )的输出结果复杂如下:

使用Anderson result (statistic=0.68097695613924714、

critical _ values=array ([ 0.555,0.632,http://www.Sina.com/],

significance_level=Array([15 .10 .0.759, 0.885, 1.053] ) )

第一个值是统计量,第三个值是显著水平百分率,第二个值是不同的显著水

平下的阈值。如果统计量小于某项阈值,则表示在对应显著水平下可以判定总体服从正态分布。

如上例,说明在0.05,0.025,0.01水平下,可以判定总体服从正态分布,而0.15,0.1显著水平下,不能确定总体是否服从正态分布。

5.lilliefors检验

Lilliefors检验将KS检验改进为专门的正态分布检验。它用样本均值和标准差代替总体均值和标准差,来估计样本的总体是否服从这两个参数确定的正态分布,这就是所谓的Lilliefors正态性检验。在很多统计软件中通常采用这种方法。由于该检验方法基于KS检验,因此可用于较大样本的正态性分析(样本数量50以上300以内)。

以下方法使用Lilliefors检验进行正态分布检验:

statsmodels.stats.diagnostic.lilliefors(X)

该函数输出两个结果,第一个为检验统计量,第二个为p值。如果p值大于0.05(常用显著水平)即可认定总体服从正态分布。

6.Ryan-Joiner 检验

Ryan-Joiner检验通过计算数据与数据的正态分值之间的相关性来评估正态性。如果相关系数接近 1,则总体就很有可能呈正态分布。Ryan-Joiner 统计量可以评估这种相关性的强度;如果它未达到适当的临界值,您将否定总体呈正态分布的原假设。此检验类似于 Shapiro-Wilk 正态性检验。

Ryan-Joiner检验统计量

该检验目前笔者还没有找到python版的软件包,日后找到再介绍给大家。

7.QQ图可视化检验

QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况。利用QQ图鉴别样本数据是否近似于正态分布,只需看QQ图上的点是否近似地聚集在一条斜率为正的直线附近。如果是则说明是正态分布,该直线的斜率为标准差,截距为均值。绘图原理参看下图。

QQ图绘制过程

以下方法可以根据样本数据绘制qq图。

import statsmodels.api as sm import pylab sm.qqplot(X, line='s') pylab.show()

散点集中在对角线附近,可接受样本整体服从正态分布

用以下方法同样可以绘制QQ图。

import matplotlib.pyplot as pltimport scipy.stats as statsstats.probplot(X, dist="norm", plot=plt)plt.show()

#技术技能超级玩家#

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。