你好,欢迎访问 中国计量测控网(http://www.jlck.cn/) | 登录 | 注册

分布图法在疏失误差处理中的应用

2014/11/13 23:14:44  来源:计测网通讯员 
字号: 13号字 16号字

  摘要:本文在简单介绍了常用的疏失误差剔除算法及其各自的优缺点后,着重介绍了利用分布图法剔除疏失误差的方法和优点,并用Visual C++设计了实际的应用开发程序。

  1 引言

  在计量测试中由于各种干扰因素的存在,常常会引起疏失误差,疏失误差又叫过失误差,是指显然与事实不符的误差。它通常是由于操作者失误、系统内部器件受损或接线松动、脱落、外界突发的冲击引起的。疏失误差的存在对测量结果是一种严重的歪曲,必须予以剔除。

  2 常用的疏失误差剔除算法

  2·1 莱特准则

  判别疏失误差一般采用莱特准则,即把剩余误差绝对值超过3σ的数据Xi判为疏失误差点删除。但莱特准则的判据是建立在测量次数n→∞的前提下的。当n值有限,特别是当n≤值很小时,这种采用3σ作为判据的方法就不很可靠了。尤其是当n≤10时,以n=10为例,由贝塞耳公式得:

  由上式可以看出:当n≤10时,即使在测量数据中含有疏失误差,应用莱特准则也无法剔除。所以,莱特准则只能用于处理大容量样本数据的疏失误差,在处理少量采集数据的疏失误差时存在着很大的局限性。

  2·2 格罗贝斯判据准则

  格罗贝斯判据准则是另一种常用的疏失误差剔除方法,它是基于测得值服从正态分布假设上的一种递归算法。其计算步骤为:

  (1)将测试数据按升序排列,并分别计算均值X、标准差σ。

  (2)根据顺序统计的原理,找出统计量g的确切分布,g的定义为:

  (3)在给定显著水平a(通常取0·05或0·01)后,即可用查表法找出格罗贝斯统计量的临界值g0(n,a),然后将测量顶端值与其比较,判断是否应该删除。

  利用格罗贝斯准则进行判据不受样本数据容量大小的限制,对单个或多个疏失误差的剔除都有较好的效果,在实际测试分析中得到了大量的应用。

  但格罗贝斯准则判据是一个递归算法,每次只能剔除一个可疑值,并要计算一次σ,需重复进行判别,直到判定无可疑值为止,而且其判别还涉及到查表操作。在用计算机编程实现时,必须引入数据库或者大容量数组,影响了程序设计的结构优化,降低了软件的运行速度,在某些需要实时响应的场合受到一定的限制。更重要的是,该准则是以测量数据列服从正态分布为前提的,在实际测量,尤其是电子测量中,很多数据服从于非正态分布(如均匀分布、三角分布等),此时还采用格罗贝斯准则就会产生较大误差,影响测试的准确性。

  3 利用分布图法剔除疏失误差

  分布图法是一种新型的数据处理算法,其算法如下:

  首先对N个测量结果从小到大进行排序,得到测量序列:

  X1,X2,………XN

  其中X1为下极限,XN为上极限。

  再定义中位值为:

  上四分位数Fu为区间[XM,XN]的中位数,下四分位数Fl为区间[X1,XM]的中位数。四分位离散度为:

  认定与中位数的距离大于βdF的数据为离异数据,即无效数据的判断区间为[ρ12]:

式中的β为常数,其大小取决于系统的测量精度,通常取1、2等值。

  区间[ρ1,ρ2]内的测量数据被认为是有效的一致性测量数据,利用这一有效区间的数据选定可以排除50%的离异值干扰。而且中位值XM和四分位离散度dF的选择与极值点的大小无关,仅取决于数据的分布位置,有效区间的获得与需要排除的可疑值关系不大。而且用分布图法来获得一致性测量数据的方法不受数据分布的限制,能够增强数据处理对不确定因素的适应性,即具有鲁棒性。

  在实际编程实现分布图法时,由于该算法不需要复杂的数据结构,同时还具有运算量小,计算机编程容易等优点,不仅可以用于校准测试数据的后期处理,还可以将其应用于测量的实时数据处理和控制中。下面是笔者用Visual C++开发的程序源代码:

  void Distri Graph(int count,float in[100])

  {

  ∥数据排序。

  qksort(in,count);

  ∥定义中位值和四分位离散度。

  If(MOD(count,2)==1)

  {

  i=count+1;

  xm=in[i/2];

  if(MOD(i,4)==0

  {

  fu=(in[i/2+i/4+1]+in[i/2+i/4])/2;

  fl=(in[i/4+1]+in[i/4])/2;

  }

  else

  {

  fu=in[(count+i/2)];

  fl=in[(1+i/2)/2];

  }

  }

  else

  {

  xm=(in[count/2+1]+in[count/2])/2;

  if(MOD(count,4)==0

  {

  fu= (in[count/2 + count/4 + 1] + in

  [count/2 count/4])/2;

  fl=(in[count/4+1]+in[count/4])/2;

  }

  else

  {

  fu=in[(count+1+count/2)/2];

  fl=in[(1+count/2)/2];

  }

  }

  df=fu-fl;

  ∥定义判别区间并进行判断剔除。

  llimit=fl-df;

  hlimit=fu+df;

  for(j=1;j<=count;j++)

  {

  if((in[j]hlimit))

  delete(in,j)

  }

  }

  在程序设计中要注意两点:

  (1)中位值的选取是算法的关键,要分别根据数据长度的奇偶分别定义,而且当输入数据分成两段后,仍需要根据两个数据段的奇偶来决定上、下四分位数。

  (2)在该程序的设计中,为了方便起见,数组下标以1为起始,而不是通常的以0开始。

  4 结束语

  本文是笔者根据多年从事计量检定工作对数据处理和误差分析的研究总结而成,设计开发的程序经过多次实验运行验证,取得了较满意的分析结果。但由于本人水平有限,算法还有许多有待改进完善的地方,文中如有不妥之处,欢迎大家批评指正。

  参考文献

  1) 肖明耀·误差理论与应用·中国计量出版社,1985

  2) 刘文彦,周学平,刘辉·现代测试系统·国防科大出版社,1995

  3) 腾召胜,罗隆福,童调生·智能检测系统与数据融合·机械工业出版社,1999

  4) David Bennett等·Visual C++开发人员指南·机械工业出版社,1999

  本文作者:夏卓君(中国工程物理研究院计量测试中心,绵阳621900)

【免责声明】本文仅代表作者个人观点,与中国计量测控网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以 及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

计测微信
前沿的计量测试资讯海量呈现,高端的计量测试技术权威发布。
service@jlck.cn
计测客户端下载
这里有计量领域最大的社交圈子,您可以在这里交流互动、拓展人脉、施展才华。iPhone
这里有计量领域最大的社交圈子,您可以在这里交流互动、拓展人脉、施展才华。Android

共有0参与评论,查看评论

用户名: 密码:


关于我们 | 广告业务 | 网站地图 | 网站导航 | 服务条款 | 版权所有 | 设为首页 | 加入收藏
Copyright © 2009 jlck.cn. All Rights Reserved 中国计量测控网 版权所有    
京ICP备09069416号-1   京公网安备110401021000079号   计测网客服:010-62453984
  邮编:100095   邮箱:liwei@jlck.cn   广告业务QQ:1329516046  客服QQ:568796035   投稿QQ:1606741657