C语言的线性回归分析在数据处理中的应用_张杰.pdf
《C语言的线性回归分析在数据处理中的应用_张杰.pdf》由会员分享,可在线阅读,更多相关《C语言的线性回归分析在数据处理中的应用_张杰.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、收稿日期:2003-09-28作者简介:张杰(1978-),女,辽宁锦州人,华南师范大学物理与电信工程学院课程与教学理论专业2002级硕士研究生。C语言的线性回归分析在数据处理中的应用张 杰,肖 化,吴先球(华南师范大学,广东 广州510631)摘 要:将最小二乘法曲线拟合与C语言程序的线性回归分析相结合,通过C编写了一个通用、简便的数据处理程序,实现了粗大误差的剔除,得到了良好的线性相关性,完成了曲线拟合的界面可视化。关键词:粗差剔除;线性回归;C语言程序;最小二乘法中图分类号:TP312 文献标识码:A 文章编号:1004-2237(2004)03-0067-06C语言堪称一流的编程语言,
2、应用范围极其广泛,它具有画图等强大功能,如能应用于科学研究与教学实验中,数据处理的烦琐工作将变得简洁直观形象,而这方面的应用还是一个欠缺。最小二乘法是数据处理中异常活跃和应用最广泛的部分之一,但是当测量个数n很大时,其工作量很大,故利用最小二乘法原理用C编制了一个通用程序供参考使用。该程序引进了统计判断准则,准确地判断可疑数据点并剔除粗大误差,从而获得更理想的拟合曲线,由相关系数可检验出拟合效果的增强。1 原理1.1 一元线性回归方程假设在理论上已知y与x成线性关系,这时,可组织一个成对实验,进行x和y的测量,如果对应在不同条件和状态的xi下,测得yi,i=1,2,n,记它们的线性关系如下:y
3、i=a+bxi+i(i=1,2,n,n 2)式中a、b为待定的估计量,i为独立、等权和正态偶然误差,xi为普通自变量,如有随机性,则归入i之中。为了获得拟合这组数据的最佳线性关系,用线性最小二乘法选择a和b即ni=1i2=ni=1(yi-bxi-a)2最小。对a和b求偏微分,则得必要条件ni=1a+ni=1xib=ni=1yi和 ni=1xia+ni=1xi2b=ni=1xiyi(1)记x-=1nni=1xi,y-=1nni=1yi,lxx=ni=1(xi-x-)2=n x-2-nx-2,lxy=ni=1(xi-x-)(yi-y-)=n xy -n x-y-.第24卷第3期2004年6月 上
4、饶 师 范 学 院 学 报JOURNAL OF SHANGRAO NORMAL COLLEGE Vol124,No13Jun12004由方程组(1)求得 a=y-lxx-x-lxylxx,b=n(xy -x-y-)x-x-=lxylxx(2)一元线性回归方程为y=a+bx(3)1.2 可疑数据的判断、粗大误差的剔除对于一组样本数据,可以通过最小二乘法拟合一条回归直线,但拟合的效果会有差异,而且测量的数据当中如果含有粗大误差,对曲线的斜率会有很大的影响,所以对粗大误差要进行剔除。可疑数据的判别方法在统计学中已有多种,如大样本情形 用3S准则最为方便;情形,用格拉布斯准则效果较好。但是对线性回归中
5、可疑数据的判断情况做深入分析的应用几乎没有。通常的做法只是在曲线拟合后用相关系数检验法来检验回归效果。本文C应用程序的做法是:在研究具有或可化为线性关系的两个变量的实验中,为了得到较理想的曲线斜率,象重复测量单个量那样,先对可疑数据进行判断,如确认为粗大误差,则剔除。可疑数据的具体判断方法4是:在直线回归中若|a+xi3b-yi|-w3sd 0(4)则点(xi,yi)为粗差,应剔除。其中w为肖伯纳常数,与测量次数n对应,在此程序中内置肖维勒准则表,将根据使用者输入的n值自动确定;sd为标准差,记为sd=1n-2n-1i=1(yi-a-bxi)2(5)2 应用程序依据上述原理,用C语言编写了一个
6、通用程序(见附录),功能如下:(1)数据输入。提示输入测量次数n和所测数据。(2)可疑数据判断、粗大误差剔除。根据前面讨论的判断可疑数据、剔除粗大误差的步骤,编制了相应的程序来判断数据中是否含有应该剔除的异常值,若有,则剔除。(3)剔除前后线性回归方程输出、图形输出、相关参数显示。屏幕上将显示粗差剔除前后数据处理的一系列变化。3 举例现以近代物理实验光泵磁共振测量87Rb的gF因子为例来说明此程序的应用,此实验中gF=hvuBB(6)把此式化成v=(BgFh)B(7)自然v与B成线性关系,考虑到地磁场水平分量和扫场直流分量的影响,拟合的直线一般来说不通过坐标原点,但直线斜率不变,设拟合的直线方
7、程为v=a0+a1B,则斜率a1=BgFh;从而gF=ha1uB(8)式中h=6.6310-34,uB=9.2710-24;可见只要由最小二乘法求出直线的斜率a1,代入上式即可求出gF值。现在应用此程序对数据进行处理系统将提示输入测量次数n(我们共测得14组数据,所以n=14)及数据data1,data2,数值如下表:86上 饶 师 范 学 院 学 报 2004(第24卷)表1 测得的数据data10.00011030.0001170.00009680.00010350.00012060.0001260.000112data28949289408268302308540349657419999
8、5916567data10.00009310.00008920.00010080.00010570.0001089.91E-050.00012data2788727768618851555878242851630841708960152以下为屏幕显示信息;Enter n14n=14Enter data1:0.0001103your input is 0.0001100.0001171your input is 0.0001170.000120your input is 0.0001200.000110 0.000117 0.000097 0.000104 0.001121 0.000126 0
9、.000112 0.0000930.000089 0.000101 0.000106 0.000108 0.000099 0.000120Enter data2:数据data2输入完毕后按Enter键即可执行完整程序,屏幕如下图:图1 粗差剔除前后的拟合效果显示96 第3期 张杰,肖化,吴先球:C语言的线性回归分析在数据处理中的应用可看出粗差剔除后r值明显增大,回归直线拟合效果也显著改善。现列表如下:表2 粗差剔除前后的参数比较参数线性方程系数a线性方程系数b标准偏差sd相关系数r剔除前227402.26096455168.011952.094370.985698剔除后228315.46112
10、460288.06431.482420.996162 要计算gF值,分别将剔除粗差前后的a1值(a1=b=6096455168.0,a1=b=6112460288.0)代入 式,则可得gF=0.437(剔除前),gF=0.439(剔除后),通过理论计算可得gF=0.5,可见该程序对可疑值的判断和粗差的剔除比较科学和精确,提高了拟合效果,更准确地求出了曲线斜率。4 结束语从算法的理论上可以看出,最小二乘法线性拟合可以较其它方法得到更高的精度,本文根据此种算法编制的C语言数据处理应用程序,具有准确判断可疑点并剔除粗大误差的功能,从而获得更理想的拟合曲线,该程序在已知两个量之间存在着线性或可化成线性
11、关系,寻找其关系曲线斜率时具有独特的优势,整个处理过程简单,方便,直观,有效,程序的通用性和可读性也很强,可以在许多科学实验中推广使用。附录:数据处理C语言程序(该程序已通过Borland C调试成功)#include#include#include#define MAX 10#define XMAX 360#define Y MAX 150#define Y1 200#define Y2 400#define X 30void grid(),scatterplot(),regress();floatstd-dev(),mean(),getmin(),getmax();int delete()
12、;float minx,maxx,miny,maxy,sd;floatnorm-ratiox,norm-ratioy,spreadx,spready;int n;main()int driver=DETECT,mode;float a;int y1,y2;int n;float3data2,3data1;int i;printf(“Enter n n”);scanf(“%d”,&n);data1=(float3)malloc(n3sizeof(float);data2=(float3)malloc(n3sizeof(float);printf(“n=%d n”,n);printf(“Enter
13、 data1:n”);for(i=0;i n;i+)scanf(“%f”,&a);data1i=a;printf(“your input is%f n”,data1i);printf(“n”);for(i=0;i n;i+)printf(“%f”,data1i);printf(“n”);printf(“Enter data2:n”);for(i=0;i n;i+)scanf(“%f,”,&a);data2i=a;printf(“your input is%f n”,data2i);for(i=0;i n;i+)printf(“%f”,data2i);printf(“n”);3minx=getm
14、in(data1,n);maxx=getmax(data1,n);miny=getmin(data2,n);maxy=getmax(data2,n);spreadx=maxx-minx;spready=maxy-miny;norm-ratiox=XMAXspreadx;norm-ratioy=(Y MAX-20)spready;initgraph(&driver,&mode,“”);cleardevice();grid(n,X,Y1,Y2,data1,data2);outtextxy(30+410,200-160,“beforedeleting:”);outtextxy(30+410,450-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 线性 回归 分析 数据处理 中的 应用
限制150内