用格拉布斯准则判断异常数据.pdf
用格拉布斯准则判断异常数据一、实验目的1通过实验加深对格拉布斯准则的理解。2.掌握实验中异常数据的处理方法。二、实验要求用C语言或其它高级语言编写一程序,输入一组测量数据(915个,程序 可设定),根据格拉布斯准则判断有无异常数据。如有,则剔除异常数据并重新 计算,直到无异常数据为止。具体要求如下:1.2.3.数据个数可输入;格拉布斯系数g以表的形式存于数组中;显示均值、标准偏差等中间结果、被剔除的异常数据、显示无异常数据 的测量数据等。三、实验原理在无系统误差的情况下,测量中大误差岀现的槪率是很小的。在正态分布下,误差绝对值超过2.57皿兀)的概率仅为1%,误差绝对值超过3川工)的槪率仅为().27%,1/37()。对于误差绝对值较大的测量数据,就值得怀疑,可以列为可疑数 据。可疑数据对测量值的平均值尺实验标准偏差都有较大的影响,造成测量结果 的不正确,因此在这种情况下要分清可疑数据是由于测量仪器、测量方法或人为错误等因素造成的异常数据,还是由于正常的大误差出现的可能性。首先,要对测时过程进行分析,是否有外界干扰,如电力网电压的突然跳动,是否有人为错 误,如小数点读错等。其次,可以在等精度条件下增加测量次数,以减少个别离 散数据对最终统计估值的影响。在不明原因的情况下,就应该根据统计学的方法来判别可疑数据是否是粗差。这种方法的基本思想是:给定一置信槪率,确定相应的置信区间,凡超过置信区 间的误差就认为是粗差,并予以剔除。用于粗差剔除的常见方法有莱特检验方法 和格拉布斯检验方法。1.莱特检验方法莱特检验法是一种正态分布情况下判别异常值的方法。判别方法如下:假设嘗卩等精度测量结果中,第/项测量值Y所对应的残差匕的绝对值 琐则该误差为粗差,所对应的测量值丫为异常数值,应剔除不用。此处,残差、标准偏差估计(贝塞尔公式),均值一迟曲V!K_I本检验方法简单,使用方便,当测量次数n较大时,是比较好的方法。一般 适用于n10的情况,*10时,莱特检验法失去判别能力。2.格拉布斯检验法格拉布斯检验法是在未知总体标准偏差的情况下,对正态样本或接近正 态样本异常值进行判别的一种方法,是一种从理论上就很严密,槪率意义明确,以经实验证明效果较好的判据。具体方法如丫:对书卑重复测量中的最大或最 小数据,用格拉布斯检验法检验,若残差诃殉,则判断此值为异常数 据,应予以剔除。g值按重复测量次数&置信槪率由表2-1给出。表2-1格拉帝斯检验法纟值4n5%1%31.151.15132.332.6141.461.49142372.66361.821.94162.442.747892.112.32192.532.851011122.292.551.671.75152.412.701.942.032.102.2217182.182.232.412.48i“n5%202.472.502.782.822.561%2.85四、可供选择的仪器与设备1微机一台2.C语言集成开发环境或其它髙级语言开发环境五、实验预习要求熟悉有关异常数据处理的的基本知识,掌握格拉布斯检验法检验异常数据的 基本方法。六、实验报告要求1.2.简述实验目的、原理、方法、步骤。列出全部实验数据,记录实验结果(计算机屏辜显示内容)。3画出程序流程图。七、思考丿1.本实验中,为什么nl()时,莱特检验法失去判别能力?而格拉布斯检验 法却可以?实验程序:#includc#includcvoid main()int inj=;float a2()O,b2OO,vt2O(),vn2O()0V5Surm,sumb,cddnv亡i卫码;printf(aenter array a:n,);f()r(i=l;i=n;i+)scanf(printf(“n”);suma=al;f()r(i=2;i=n;i+)suma=suma+ai;avcr=suma/n;printf(a average is%fnw,avcr);f()r(i=l;i=n;i+)bi=aH*ai;sumb=sumb+bi;c=sumb/(n-l);d=float sqrt(float c);n.a=float sqrt(fl()at d);davcr=d/n.a;davcr=davcr*c3;fi)r(i=l;idavcr)printf(“f”,&aH);elsecj=&aH;j+;printfOprint/(a%r,&cQ);