总体分布的正态性检验一般采取Jarque-Bera检验方法。

 

1. JBTest检验的定义:

在统计学中,Jarque-Bera检验是对样本数据是否具有符合正态分布的偏度和峰度的拟合优度的检验。该检验以卡洛斯•哈尔克和阿尼•K•贝拉(Carlos Jarque and Anil K. Bera)来命名。

JB统计量定义为:

java hutool 正态分布 jmp 正态分布_matlab

这里的n为观测数目(自由度),S是样本偏度系数,K是样本峰度系数。

对正态分布而言,JB统计量渐进的服从自由度为2的卡方分布。

Jarque和Bera证明了在正态性假定下,如果JB统计量的相伴概率值小于设定的概率水平,则拒绝原假设,不认为样本概率服从正态分布;反之,则接受原假设。

 

2. 关键名词:

这里有几个关键名词,包括偏度、峰度、卡方分布。

偏度系数(Skewness)

偏度系数是描述分布偏离对称性程度的特征数,是样本概率密度函数对称性的度量。

当分布左右对称时,偏度系数为0;当偏度系数大于0时,即中位在右侧,该分布为右偏;当偏度系数小于0时,中位在左侧,该分布左偏。

较大的正值表示其分布具有右侧较长尾部,较大的负值表明有左侧较长尾部。

通常用三阶中心矩除以标准差的三次方来计算,

java hutool 正态分布 jmp 正态分布_java hutool 正态分布_02

标准差为:

java hutool 正态分布 jmp 正态分布_标准差_03

 

峰度系数(Kurtosis):

峰度系数是用来反映频数分布曲线顶端尖峭或扁平程度的指标,形象的说,就是对概率密度函数的“胖瘦”的度量。

统计上是用四阶中心矩来测定峰度的。实验研究表明,偶阶中心矩的大小与图形分布的峰度有关。其中的二阶中心矩就是数据的方差,它在一定程度上可以反映分布的峰度,但有时方差相同的数据却有不同的峰度,因此就利用四阶中心矩来反映分布的尖峭程度。

实际采用四阶中心矩与标准差的四次方的比值作为衡量峰度的指标。

java hutool 正态分布 jmp 正态分布_java hutool 正态分布_04

对正态分布而言,偏度系数S为0,峰度系数K为3。

 

卡方分布:

java hutool 正态分布 jmp 正态分布_正态分布_05

 

3. Matlab的Jbtest

调用格式为:

  • H = jbtest(X)
  • H = jbtest(X,alpha)
  • [h,p,JBSTAT,CV]=jbtest(x,alpha)
  • H = jbtest(x,alpha,mctol)

输入值:以alpha (默认0.05)显著水平对数据x进行Jarque-Bera检验

返回值

  • h为测试结果,如果h=0,则认为x是服从正态分布的;如果h=1,则可以否定x服从正态分布;
  • p为接受假设的概率,p越接近于0,则可以是拒绝正态分布的原假设。
  • JBSTAT为测试统计量的值;
  • CV为是否拒绝原假设的临界值,主要是用JBSTAT与CV比较,超过临界值就认为不服从正态分布。

若变量服从正态分布,则S为零,K为3,因而JB统计量的值为零;如果变量不是正态变量,则JB统计量将为一个逐渐增大值。JB统计量的定义表明,任何对此(偏度为0,峰度为3)的偏离都会使得JB统计量增加。

注:

通常要对一组样本进行正态性检验,在Matlab中,一种方法是:用normplot画出样本,如果在一条直线上,则样本服从正态分布,否则不服从正态分布。

Matlab提供了更正式的检验方法:

  • kstest(Kolmogorov-Smirnow)正态性检验,将样本与标准正态样本(均值0,方差1)进行对比,不符合则返回1,符合则返回0.
  • lillietest(Lilliefors test),与kstest不同,检验目标不是标准正态样本,而是具有与样本相同均值和方差的正态分布。
  • jbtest(Jarque-Bera test):与lillietest相似,但不适用于小样本情况。

More:

CV:即Critical Value临界值,与Jarque-Bera检验中的显著水平alpha对应;返回一个非负标量值。如果alpha范围为 [0.001,0.50],并且样本数目不大于2000,那么jbtest直接在预先算好的CV值表中查找和插值。如果使用了mctol,那么jbtest通过Monte Carlo模拟来确定CV值。当jbstate>CV时,假设不成立。

mctol:即Maximum Monte Carlo standard error(最大蒙特卡洛标准差)。如果设定了mctol值,jbtest直接计算Monte Carlo近似值p,而不是通过预先算好的CV值表来进行插值。jbtest通过选择足够大的Monte Carlo重复数,使得计算的蒙特卡洛标准差p小于mctol。