MATLAB 检验数据正态分布及代码实现

上篇简要介绍了正态分布检测的必要性和主要分析方法,此篇主要介绍如何通过MATLAB判断分析数据正态特性。

1. 主要方法

MATLAB检测数据正态特性主要通过数值测定和图形分析,其中数值测定指通过JB等假设检验方法进行测定分析数据,图形分析方法是指通过分析数据正态拟合程度判断数是否符合正态分布,主要有Q-Q图、直方图以及normplot工具箱。

2.代码实现

(1)假设检验

JB: H= jbtest (X)

H = jbtest (X,alpha)

[h, p, jbstat, cv] = jbtest (X,alpha)

其中,alpha为显著水平(默认0.005)

h 为测试结果,如果h=0,则认为X服从正态分布,如果 h=1,则否定 X服从正态分布;

p 为接受假设的概率,p越接近于0,可拒绝正态分布假设;

CV为是否拒绝原假设的临界值

其他检验方法为:

  • kstest(Kolmogorov-Smirnow)
  • lillietest(Lilliefors test)

对于其他方法不再分析。

(2)图形分析

  • 直方图:hist(X,M)

直方图hist函数中X为被分析数据,可以是单列也可以是多多列,为方便分析显示一般为单列,M表示将X有序划分入标量M所指定数目的矩形图中。

  • normplot函数: normplot(X)

normplot函数直接绘制分析数据的正态概率图形,其中样本数据用蓝色“+”表示,标准正态线用红色“-”,判断标准为:数据越接近于红色线,其符合正态分布程度越高,一般情况不会和直线重合。

  • qqplot:qqplot(x)

qqplot(x)显示样本数据x的分位数与正态分布的理论分位数之间的分位数图。 如果x的分布是正态的,则数据图显示为线性。后面有学者提出可用于判断不同分布类型的gqqplot工具箱,其实现代码为:gqqplot(X,'normal'),其中 normal表示正态分布,也可跟根据分析要求选择 'gamma'等常见分析类型(博客已提供gqqplot工具箱.m文件,欢迎下载)。

3.举例分析

首先为直方图,图中数据为一批样本某指标含量分布,所得直方图横轴为变量区间、纵轴为设定箱形区间变量个数,由图可知该指标含量不符合正态分布。

第二个为normplot,其中横轴为变量区间,纵轴为累计概率分布(CDF),红色点划线为根据分析数据均值和方差构建的正式正态分布线,蓝色点为分析样本点,越接近于直线说明样本正态特性越好,由图可知,分析数据尾部远离直线,且中间大量样本分布处(14.5)样本低于直线,因此该分析数据正态性差,或者不服从正态分布。

第三个为qqplot,该图的横轴表示理论分位变量分布,纵轴辨识实际输入变量分位数分布,直线为y=x,对比方法为蓝色点分布在直线上表示服从正态分布,由图可知该数据不服从正态分布,结合上图发现,qqplot检验正态分布更加直观,但是具体接近程度还需要结合数值检测方法实现。

4. 后续

对于非正态分布,目前有部分方法可以将非正态分布数据转换为近似正态分布,后期有机会再写一下个人学习结果。

 

完---2020.9.30

 

  • 23
    点赞
  • 194
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值