用MATLAB判断一组数据是否符合正态分布

[文章目录]

问题描述

有一组已知的数据,例如为:

1006.1,1014,1001.6,996.4,997.8,981.6,996.4,991.9,993.3,1000.6,987.3,1015.6,981.6,996.2,999.2,994.5,1005.9,1001.9,986.4,1007.6,1001.4,1014.6,1010.2,993.9,1001.4

这组数据是否满足正态分布呢?如果满足的话,在后续的处理过程中,就可以用相应的数学表达式来描述其规律了,即已知散点数据,求其概率分布的问题。

实现方法

[noway]1.首先,用normplot()函数来简单拟合一下。[/noway]

对于上面的例子,首先设:

m=[1006.1,1014,1001.6,996.4,997.8,981.6,996.4,991.9,993.3,1000.6,987.3,1015.6,981.6,996.2,999.2,994.5,1005.9,1001.9,986.4,1007.6,1001.4,1014.6,1010.2,993.9,1001.4]

normplot(m)

2016-03-25_181112

看结果,发现散点基本都可以在红色的直线附近,说明这组数据有很大的可能性符合正态分布。

这里需要说明的是,这其实就是一张“正太概率纸”,即横坐标是等间隔的,而纵坐标却为按照标准正态分布给出的点。以上图举例,横坐标为1001.6时(这组已知数据中的任意值),其在红线上对应的点,就恰好为标准正态分布的纵坐标。因此,当实际散点与红线举例跃进,这组数据就越接近于标准正态分布。

如果已知数据符合正态分布规律的话,那散点就会在直线附近,呈线性分布,如果有“拐弯”的情况,就不是正态分布了。

但是呢,绘图法还不足以证明这组数据一定符合正态分布,还需要用另外的函数

[noway]2.用lillietest函数或jbtest函数进行正态分布的拟合优度测试[/noway]

进行假设检验,格式:[H,P,LSTAT,CV] = lillietest(X,alpha)

其中,P为接受假设的概率值,P越接近于0,则可以拒绝是正态分布的原假设;LSTAT为测试统计量的值,CV为是否拒绝原假设的临界值。

对于本例,则为

[H,P,LSTAT,CV] = lillietest(m,0.05)
H =
0
P =
0.5000
LSTAT =
0.1028
CV =
0.1730

h=0说明接受假设,该组数据符合正态分布;p=0.5说明符合正态分布的概率很大;LSTAT小于接受假设的临界值0.173,因此接受假设。

至此,判断结束。

其实,除了正态分布以外,还可以对其他的概率分布类型进行假设检验,以后有空一一列举出来。

*欢迎转载,转载请标明来源:十千牛,文章地址: http://10kn.com/matlab-normality-test/

欢迎关注十千牛微信公众号

说不定我这一生涓滴意念,侥幸汇成河,而且是一条大长河

Leave a Reply

Your email address will not be published. Required fields are marked *