1、用格拉布斯准则判断异常数据精品资料用格拉布斯准则判断异常数据 一、实验目的1通过实验加深对格拉布斯准则的理解。2掌握实验中异常数据的处理方法。 二、实验要求用C语言或其它高级语言编写一程序,输入一组测量数据(915个,程序可设定),根据格拉布斯准则判断有无异常数据。如有,则剔除异常数据并重新计算,直到无异常数据为止。具体要求如下:1. 数据个数可输入;2. 格拉布斯系数g以表的形式存于数组中;3. 显示均值、标准偏差等中间结果、被剔除的异常数据、显示无异常数据的测量数据等。 三、实验原理在无系统误差的情况下,测量中大误差出现的概率是很小的。在正态分布下,误差绝对值超过2.57的概率仅为1%,误
2、差绝对值超过3的概率仅为0.27%1/370。对于误差绝对值较大的测量数据,就值得怀疑,可以列为可疑数据。可疑数据对测量值的平均值及实验标准偏差都有较大的影响,造成测量结果的不正确,因此在这种情况下要分清可疑数据是由于测量仪器、测量方法或人为错误等因素造成的异常数据,还是由于正常的大误差出现的可能性。首先,要对测时过程进行分析,是否有外界干扰,如电力网电压的突然跳动,是否有人为错误,如小数点读错等。其次,可以在等精度条件下增加测量次数,以减少个别离散数据对最终统计估值的影响。在不明原因的情况下,就应该根据统计学的方法来判别可疑数据是否是粗差。这种方法的基本思想是:给定一置信概率,确定相应的置信
3、区间,凡超过置信区间的误差就认为是粗差,并予以剔除。用于粗差剔除的常见方法有莱特检验方法和格拉布斯检验方法。 1. 莱特检验方法莱特检验法是一种正态分布情况下判别异常值的方法。判别方法如下:假设在一列等精度测量结果中,第i项测量值xi所对应的残差vi的绝对值,则该误差为粗差,所对应的测量值xi为异常数值,应剔除不用。此处,残差,标准偏差估计(贝塞尔公式),均值。本检验方法简单,使用方便,当测量次数n较大时,是比较好的方法。一般适用于n10的情况,n10时,莱特检验法失去判别能力。 2. 格拉布斯检验法格拉布斯检验法是在未知总体标准偏差的情况下,对正态样本或接近正态样本异常值进行判别的一种方法,
4、是一种从理论上就很严密,概率意义明确,以经实验证明效果较好的判据。具体方法如下:对一系列重复测量中的最大或最小数据,用格拉布斯检验法检验,若残差,则判断此值为异常数据,应予以剔除。g值按重复测量次数及置信概率由表2-1给出。 表2-1 格拉布斯检验法g值1-pc n34567891011125%1.151.461.671.821.942.032.112.182.232.291%1.151.491.751.942.102.222.322.412.482.551-pc n13141516171819205%2.332.372.412.442.472.502.532.561%2.612.662.70
5、2.742.782.822.852.85 四、可供选择的仪器与设备1. 微机一台2. C语言集成开发环境或其它高级语言开发环境 五、实验预习要求熟悉有关异常数据处理的的基本知识,掌握格拉布斯检验法检验异常数据的基本方法。 六、实验报告要求1. 简述实验目的、原理、方法、步骤。2. 列出全部实验数据,记录实验结果(计算机屏幕显示内容)。3. 画出程序流程图。 七、思考题1. 本实验中,为什么n10时,莱特检验法失去判别能力?而格拉布斯检验法却可以?实验程序: # include# includevoid main()int i,n,j=1;float a200,b200,v200,v.a200,
6、aver,suma,sumb,c,d,daver,n.a,;printf(“enter array a:n”);for(i=1;i=n;i+)scanf(“%f,%d”,&ai,n);printf(“n”);suma=a1;for(i=2;i=n;i+)suma=suma+ai;aver=suma/n;printf(“average is %fn”,aver);for(i=1;i=n;i+) bi=ai*ai;sumb=sumb+bi;c=sumb/(n-1);d=float sqrt (float c);n.a=float sqrt(float d); daver=d/n.a;daver=daver*3;for(i=1;idaver)printf(“%f”,&ai);elsecj=&ai;j+;printf()printf ( “%f”,&cj); 仅供学习与交流,如有侵权请联系网站删除 谢谢5