如何做好正态性检验?

公众号:尤而小屋

整理:Peter

大家好,我是Peter~

在科学研究中,往往需要对数据进行差异性检验 ,而常用的参数检验需要数据是否服从正态分布,因此在决定是否采用参数检验之前,需要先对数据进行正态性检验

常用的t检验、方差分析(ANOVA)等参数检验都有一个共同的前提条件:样本数据必须服从正态分布,即样本数据必须来源于一个正态分布的总体,若样本数据不服从正态分布,就不能用以上参数检验对数据进行分析,而应该使用非参数检验(如卡方检验、置换检验等)。

对数据进行正态性检验,在任何统计学软件中(如SPSS、SAS、Origion、GraghPad等)都能够轻易实现,但每个软件都会同时包括多种正态检验方法,此时该选哪个方法来对自己的数据进行正态性检验呢?这就是本文要解决的主要问题。

在查阅相关资料后,本文将对多种常见的正态检验方法进行简单地归纳总结,尽可能写清楚每个检验方法的适用范围,但对于每个检验方法的数学统计学原理不作深入解析,仅简略描述其大致的基本原理。

关键词:正态分布、统计学、假设检验、数据分析

主要参考:blog.csdn.net/qq_33924470...

一、正态检验基本原理概述

正态检验属于非参数检验,其检验方法有很多种,且每一种检验方法的基本原理和适用条件都有所不同。在所有正态性检验方法中,其基本原理主要可以从以下三个方面进行解释:

(1)从描述性统计方法 的角度来说,要检验数据是否服从正态分布,可以计算"数据分布"和"标准正态分布模型"之间的拟合优度,若拟合性较差,即认为数据不服从正态分布

(2)从概率统计方面,即假设检验的角度来说,数据是否服从正态分布可以通过与"数据服从正态分布"这样一个零假设进行假设检验计算,构建相关统计量来计算出检验结果;

(3)从贝叶斯统计的角度 来说,该方法本身并不检验其正态性,而是计算这批数据来自于服从 <math xmlns="http://www.w3.org/1998/Math/MathML"> μ 、 σ μ、σ </math>μ、σ正态分布总体的可能性更大,还是来自于其他分布总体的可能性更大。

二、正态检验方法汇总与简述

根据以上三个不同角度的基本原理,可以把正态检验方法分为以下三部分:

1、描述性统计方法

描述性统计方法实际上就是图示法。该方法直接通过绘制数据的直方图,与标准正态分布曲线进行比较。

缺点:但该方法在数据量少的时候比较难看出两者之间的差异,因此更多地会通过对数据直方图曲线与对应μ、σ的标准正态分布曲线之间进行回归,计算出拟合优度来说明两条曲线之间的拟合程度。

工具:这种用于评估数据正态性的图形工具有很多,其中"分位数-分位数图 "(quantile-quantile plot,QQ plot ),即QQ图是正态检验中最常见的图示方法。这种图正是样本数据直方图和正态分布图之间一种拟合优度的直观度量方式。

如何判定:当QQ图上的点都大致落在一条直线上时,表示高度正相关,即这些数据是正态分布的。

正态QQ图的原理

关于正态QQ图的原理,参考文章:www.cnblogs.com/shangfr/p/4...

QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况。

QQ图是一种散点图,对应于正态分布的QQ图,就是由标准正态分布的分位数为横坐标样本值为纵坐标的散点图。要利用QQ图鉴别样本数据是否近似于正态分布,只需看QQ图上的点是否近似地在一条直线附近:

  • 图形是直线说明是正态分布,而且该直线的斜率为标准差,截距为均值,用QQ图还可获得样本偏度和峰度的粗略信息。
  • 图形中有一段是直线,在两端存在弧度,则可说明峰度的情况;图形是曲线图,说明不对称
  • 如果Q-Q图是直线,当该直线成45度角并穿过原点时,说明分布与给定的正态分布完全一样。
  • 如果是成45度角但不穿过原点,说明均值与给定的正态分布不同;
  • 如果是直线但不是45度角,说明均值与方差都与给定的分布不同;
  • 如果Q-Q图中间部分是直线,但是右边在直线下面,左边在直线上面,说明分布的峰度大于3,反之说明峰度小于3;

下面是绘制的QQ图:可以看到如果原数据是符合正态分布的,QQ图将会是一条45°角的直线

除此以外,不同的统计软件还会提供一些其他的正态检验图示方法,如直方图、PP图等。

PP图是根据变量的累积概率对应于所指定的理论分布累积概率绘制的散点图,用于直观地检测样本数据是否符合某一概率分布。如果被检验的数据符合所指定的分布,则代表样本数据的点应当基本在代表理论分布的对角线上。

PP图原理

P-P图是根据变量的累积概率对应于所指定的理论分布累积概率绘制的散点图,用于直观地检测样本数据是否符合某一概率分布。如果被检验的数据符合所指定的分布,则代表样本数据的点应当基本在代表理论分布的对角线上。

2、概率统计方法

概率统计方法是最常用也是种类最多的正态检验方法,主要包括以下三类。(仅列举常用的部分方法,还有许多其他较新的检验方法及现有检验方法的改进方法等均未列出。)

(1)基于经验分布函数(empirical distribution function,EDF)

  • Kolmogorov--Smirnov test

    简称为K-S检验, 是最为常用的正态性检验方法之一,其方法主要是计算出经验分布和理论分布之间的距离,并将其中最大的距离(差异)作为检验统计量。因此K-S检验的优点是不仅可检验正态分布,还可用于检验其他任何分布。

    但K-S检验需要我们已经事先知道分布总体的均值和方差,即需要指定总体的均值和方差才能进行计算,但在实际情况下很少会事先知道总体的均值和方差,所以难以进行K-S检验。同时也因为仅仅把分布间的最大差异作为统计量,因此相比于其他检验方法其敏感性相对弱一些,因此在GraphPad软件中不推荐使用该方法来进行正态性检验,但实际上在大样本情况下K-S检验还是非常实用的(SAS推荐样本量>2000)。

  • Liliefors test 该检验实际上是K-S检验的一种改进方法(可简写成K-S-L检验),计算方法比K-S更复杂一些,主要通过计算经验分布函数与累积分布函数之间的最大差异来进行检验,还包括对K-S检验的P值进行了调整等等。另外K-S-L检验直接利用样本的均值和方差进行计算,因此不需要事先指定总体分布的均值和方差。

    因此相比于K-S检验,K-S-L的检验效果更好一些,但与其他检验方法相比其敏感性依然较弱。在GraphPad中的K-S检验为了不需要用户指定总体分布的均值和方差,实际上采用的是K-S-L检验。另外,K-S-L检验最适用于对称分布的小样本(origion、matlab),同时也适用于大样本(origion中提到大样本分布曲线间的最大差异更具有统计显著性,因此一些分析人士建议K-S-L的样本量最好大于2000),但只适用于正态性检验。

  • Anderson--Darling test 简称为A-D检验 ,该检验主要通过计算数据的累积分布曲线与理想正态分布的累积分布曲线之间的差异来进行检验,与K-S检验不同,该方法考虑了两条累积分布曲线之间的所有差异,因此它比K-S检验效果更好,也是检验正态性最好的方法之一。但该方法的缺点是仅适用于小样本,Origion中推荐样本量为26个以下,但有些超过200的工业数据也有可能通过A-D检验,另外该方法还可用于检验其他分布。

  • Cramér--von Mises criterion

    较少用,不作详细说明。SAS软件有提供该检验。

(2)基于卡方分布(Chi-squared distribution)

  • D'Agostino's K-squared test (Skewness-Kurtosis test) 该方法主要通过计算偏度(Skewness)和峰度(Kurtosis)来量化数据分布曲线与标准正态分布曲线之间的差异与不对称性,然后计算这些值与正态分布期望值的之间的不同程度。

    D'Agostino's K-squared test是一种常用且强大的正态性检验方法,是GraphPad中推荐的正态检验方法。由于分布曲线的偏度和峰度容易受到数据量的影响,因此该方法适用于大样本,且仅能用于正态性检验

  • Jarque--Bera test 该方法通过计算样本数据和正态分布两者偏度与峰度的拟合优度,来检验样本是否来自均值和方差均未知的正态分布(即零假设中的正态分布参数是未知的,是一种双侧拟合优度检验)。

    Jarque--Bera test通常使用卡方分布来估计大样本的临界值,该临界值是通过蒙特卡洛模拟(Monte Carlo)计算出来的,因此该方法必须用于大样本(matlab提到样本量小于2000时,显著性水平会从0.001跌到0.5),且只能用于正态性检验。

(3)基于回归和相关(regression- and correlation-based)

  • Shapiro--Wilk test Shapiro--Wilk test是正态性检验最为有效的方法之一,是一种在频率统计中检验正态性的方法,但其测试基础较难理解(不多加叙述)。该方法在每一个样本值都是唯一时的检验效果最好,但若样本中存在几个值重复的情况下该方法便会大打折扣。因此该方法只适用于小样本,推荐样本量为72000,Origion中允许样本大小为35000,当样本量超过5000时不再适用。该方法仅适用于正态性检验。

  • Chen-Shapiro test Chen-Shapiro test是在不损失功率的情况下,Shapiro-Wilk test的拓展,是一个相对简单又有效的正态检验方法,和Shapiro-Wilk test一样只适用于小样本(<2000),同时仅适用于正态性检验。

  • Ryan-Joiner test 较少用,不作详细说明。

  • Shapiro-Francia test 较少用,不作详细说明。

3、贝叶斯统计方法

主要通过贝叶斯因子将正态性和其他不同类别的分布进行比较。

贝叶斯因子是一种基于贝叶斯理论的方法,用于比较两个或多个不同模型的相对概率。在正态性检验中,可以将正态分布模型与其他分布模型进行比较,通过计算贝叶斯因子来判断数据是否服从正态分布。

具体来说,假设数据服从正态分布,则可以构建正态分布模型;同时,构建一个或多个其他分布模型作为备选模型。然后,利用贝叶斯方法,将样本数据作为证据,计算每个模型的贝叶斯因子。贝叶斯因子的计算需要考虑先验分布和样本数据的贡献,通常选择标准正态分布作为先验分布。

通过比较不同模型的贝叶斯因子,可以判断哪个模型更符合样本数据的分布情况。如果正态分布模型的贝叶斯因子最大,则可以认为数据服从正态分布;否则,认为数据不服从正态分布。

需要注意的是,贝叶斯因子方法是一种相对概率比较方法,因此需要选择合适的备选模型进行比较。同时,贝叶斯因子的计算需要选择合适的先验分布和贝叶斯软件进行计算。

三、正态检验方法总结

根据查阅相关资料和软件说明书,以下为正态性检验的常用选择方法:

(1)当样本量较大时通常会选择 K-S-L test 或 D'Agostino's K-squared test

(2)当样本量较小时通常选用 Anderson-Darling test 或 Shapiro-Wilk test

也要结合数据本身和相关文献的处理方法来进行选择。

关于正态检验的其他问题

(1)由于每个正态性检验方法的检验角度不同,因此同一批数据用不同的检验方法可能得到的结果会不尽相同,所以在实际操作中可以根据样本量大小选择多种检验方法进行正态性检验,同时通过QQ图等图示法辅助判断;

(2)正态性检验只是检验样本数据来自正态分布总体的可能性有多大,或者说只是检验样本数据的总体是否近似正态分布,因此样本的总体并不是一定服从标准正态分布,但已有大量实验表明,即使总体仅为近似的正态分布,也能很好地进行 t -test、方差分析等参数检验。

(3)有些样本的总体可能仅为近似的正态分布,但没有一种直接的方法可以决定"偏离正态性的严重程度"是否足以改变"进行参数检验"的选择。正态性检验的意义本身并不全是为了决定什么时候使用非参数检验,还包括在确定一个样本的总体如果近似服从正态分布后,可以使用更加简单的方法来制定参考值范围、对数据进行质量控制等等。决定使用参数检验还是非参数检验是一个非常复杂且困难的问题,在实际研究中,不应该仅基于正态性检验的结果来自动断定是否使用非参数检验,还需要根据实际问题更深入地考虑其他影响因素(具体问题具体分析)。

(4)正态性检验在大多数情况下并不是十分有用。因为在样本量很少的情况下,正态检验对于检测"非正态分布"的作用不是很大;而当样本量足够大的时候,数据是否需要严格通过正态性检验、是否需要严格服从正态分布就显得不那么重要了,因为t 检验和方差分析等对于近似正态分布数据的检测结果是非常稳定的(根据大数定律和中心极限定理,当样本量足够大时,所有分布都近似于正态分布)。因此正态性检验只是一个测试方法,用于告诉我们自己的数据偏离理想正态分布的情况是否严重到足以使以正态分布为前提条件的统计方法失效,正态性检验的结果只是一个参考。

参考

参考资料:

blog.csdn.net/qq_33924470...

www.cnblogs.com/shangfr/p/4...

www.cnblogs.com/king-lps/p/...

en.wikipedia.org/wiki/Normal...

www.graphpad.com/guides/pris...

www.originlab.com/doc/Origin-...

www.originlab.com/doc/Origin-...

towardsdatascience.com/6-ways-to-t...

相关推荐
卓_尔_不_凡35 分钟前
Pytorch学习---基于经典网络架构ResNet训练花卉图像分类模型
人工智能·分类·数据挖掘
编程零零七2 小时前
Python数据分析工具(四):pymysql的用法
开发语言·python·oracle·数据挖掘·数据分析·python项目·python源码
jia V iuww5203 小时前
数据分析
人工智能·数据挖掘·数据分析
叫我:松哥3 小时前
基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask
前端·python·随机森林·机器学习·数据分析·flask·bootstrap
Kenneth風车5 小时前
【机器学习(九)】分类和回归任务-多层感知机 (MLP) -Sentosa_DSML社区版
人工智能·算法·低代码·机器学习·分类·数据分析·回归
need help5 小时前
CDA Level 1 业务数据分析
数据挖掘·数据分析
凑齐六个字吧6 小时前
单样本Cellchat(V2)细胞通讯分析学习和整理
数据分析
新榜有数6 小时前
品牌建设是什么?怎么做好品牌建设?
大数据·矩阵·数据分析·新媒体运营·流量运营·媒体·内容运营
qingyunliushuiyu8 小时前
企业如何使用数据分析管理系统
数据分析·数据采集·bi·数据分析系统·数据分析管理系统
叫我:松哥10 小时前
基于python flask的高血压疾病预测分析与可视化系统的设计与实现,使用随机森林、决策树、逻辑回归、xgboost等机器学习库预测
python·决策树·随机森林·机器学习·数据分析·flask·逻辑回归