资源描述:
《C语言的线性回归分析在数据处理中的应用_张杰.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第24卷第3期上饶师范学院学报Vol124,No132004年6月JOURNALOFSHANGRAONORMALCOLLEGEJun12004C语言的线性回归分析在数据处理中的应用张杰,肖化,吴先球(华南师范大学,广东广州510631)摘要:将最小二乘法曲线拟合与C语言程序的线性回归分析相结合,通过C编写了一个通用、简便的数据处理程序,实现了粗大误差的剔除,得到了良好的线性相关性,完成了曲线拟合的界面可视化。关键词:粗差剔除;线性回归;C语言程序;最小二乘法中图分类号:TP312文献标识码:A文章编号:1004-2237(2004)03-0067-0
2、6C语言堪称一流的编程语言,应用范围极其广泛,它具有画图等强大功能,如能应用于科学研究与教学实验中,数据处理的烦琐工作将变得简洁直观形象,而这方面的应用还是一个欠缺。最小二乘法是数据处理中异常活跃和应用最广泛的部分之一,但是当测量个数n很大时,其工作量很大,故利用最小二乘法原理用C编制了一个通用程序供参考使用。该程序引进了统计判断准则,准确地判断可疑数据点并剔除粗大误差,从而获得更理想的拟合曲线,由相关系数可检验出拟合效果的增强。1原理1.1一元线性回归方程假设在理论上已知y与x成线性关系,这时,可组织一个成对实验,进行x和y的测量,如果对应在不同条
3、件和状态的xi下,测得yi,i=1,2,⋯,n,记它们的线性关系如下:yi=a+b·xi+εi(i=1,2,⋯,n,n>2)式中a、b为待定的估计量ε,i为独立、等权和正态偶然误差,xi为普通自变量,如有随机性,则归入εi之中。为了获得拟合这组数据的最佳线性关系,用线性最小二乘法选择a和b即nn22∑εi=∑(yi-b·xi-a)最小。i=1i=1对a和b求偏微分,则得必要条件nnnnnn2∑a+∑xib=∑yi和∑xia+∑xib=∑xiyi(1)i=1i=1i=1i=1i=1i=1-1n-1n记x=∑xi,y=∑yi,ni=1ni=1n---22
4、2lxx=∑(xi-x)=nx-nx,i=1n--———--lxy=∑(xi-x)(yi-y)=nxy-nxy.i=1收稿日期:2003-09-28作者简介:张杰(1978-),女,辽宁锦州人,华南师范大学物理与电信工程学院课程与教学理论专业2002级硕士研究生。68上饶师范学院学报2004(第24卷)--———--y·lxx-x·lxyn(xy-x·y)lxy由方程组(1)求得a=,b=--=⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(2)lxxx·xlxx一元线性回归方程为y=a+bx(3)1.2可疑数据的判断、粗大误差的剔除对于一组样本数据,可以通过最
5、小二乘法拟合一条回归直线,但拟合的效果会有差异,而且测量的数据当中如果含有粗大误差,对曲线的斜率会有很大的影响,所以对粗大误差要进行剔除。可疑数据的判别方法在统计学中已有多种,如大样本情形用3S准则最为方便;情形,用格拉布斯准则效果较好。但是对线性回归中可疑数据的判断情况做深入分析的应用几乎没有。通常的做法只是在曲线拟合后用相关系数检验法来检验回归效果。本文C应用程序的做法是:在研究具有或可化为线性关系的两个变量的实验中,为了得到较理想的曲线斜率,象重复测量单个量那样,先对可疑数据进行判断,如确认为粗大误差,则剔除。[4]可疑数据的具体判断方法是:在
6、直线回归中3若
7、a+xib-yi
8、-w3sd>0(4)则点(xi,yi)为粗差,应剔除。其中w为肖伯纳常数,与测量次数n对应,在此程序中内置肖维勒准则表,将根据使用者输入的n值自动确定;sd为标准差,记为n-112sd=∑(yi-a-bxi)(5)n-2i=12应用程序依据上述原理,用C语言编写了一个通用程序(见附录),功能如下:(1)数据输入。提示输入测量次数n和所测数据。(2)可疑数据判断、粗大误差剔除。根据前面讨论的判断可疑数据、剔除粗大误差的步骤,编制了相应的程序来判断数据中是否含有应该剔除的异常值,若有,则剔除。(3)剔除前后线性回归方程输
9、出、图形输出、相关参数显示。屏幕上将显示粗差剔除前后数据处理的一系列变化。3举例87现以近代物理实验光泵磁共振测量Rb的gF因子为例来说明此程序的应用,此实验中hvgF=(6)uBB把此式化成v=(μBgFPh)B(7)自然v与B成线性关系,考虑到地磁场水平分量和扫场直流分量的影响,拟合的直线一般来说不通过坐标原点,但直线斜率不变,设拟合的直线方程为v=a0+a1B,则斜率a1=μBgFPh;从而gF=ha1PuB(8)-34-24式中h=6.63×10,uB=9.27×10;可见只要由最小二乘法求出直线的斜率a1,代入上式即可求出gF值。现在应用此
10、程序对数据进行处理系统将提示输入测量次数n(我们共测得14组数据,所以n=14)及数据data1,data2