如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
../NUMPAGES11HYPERLINK"://blog.csdn.net/maozefa/article/details/1725535"C语言版的线性回归分析函数分类:HYPERLINK"://blog.csdn.net/maozefa/article/category/325011"C/C++2007-08-0323:3913840人阅读HYPERLINK"://blog.csdn.net/maozefa/article/details/1725535"\l"comments"评论(31)HYPERLINK"javascript:void(0);"\o"收藏"收藏HYPERLINK"://blog.csdn.net/maozefa/article/details/1725535"\l"report"\o"举报"举报HYPERLINK"://csdn.net/tag/%e8%af%ad%e8%a8%80"\t"_blank"语言HYPERLINK"://csdn.net/tag/c"\t"_blank"cHYPERLINK"://csdn.net/tag/%e6%95%b0%e5%ad%a6%e8%ae%a1%e7%ae%97"\t"_blank"数学计算HYPERLINK"://csdn.net/tag/delphi"\t"_blank"delphiHYPERLINK"://csdn.net/tag/system"\t"_blank"system前几天,清理出一些十年以前DOS下的程序与代码,看来目前也没什么用了,想打个包刻在光碟上,却发现有些代码现在可能还能起作用,其中就有计算一元回归和多元回归的代码,一看代码文件时间,居然是1993年的,于是稍作整理,存放在这,分析虽不十分完整,但一般应用是没问题的,最起码,可提供给那些刚学C的学生们参考。先看看一元线性回归函数代码://求线性回归方程:Y=a+bx//dada[rows*2]数组:X,Y;rows:数据行数;a,b:返回回归系数//SquarePoor[4]:返回方差分析指标:回归平方和,剩余平方和,回归平方差,剩余平方差//返回值:0求解成功,-1错误intLinearRegression(double*data,introws,double*a,double*b,double*SquarePoor){intm;double*p,Lxx=0.0,Lxy=0.0,xa=0.0,ya=0.0;if(data==0||a==0||b==0||rows<1)return-1;for(p=data,m=0;m<rows;m++){xa+=*p++;ya+=*p++;}xa/=rows;//X平均值ya/=rows;//Y平均值for(p=data,m=0;m<rows;m++,p+=2){Lxx+=((*p-xa)*(*p-xa));//Lxx=Sum((X-Xa)平方)Lxy+=((*p-xa)*(*(p+1)-ya));//Lxy=Sum((X-Xa)(Y-Ya))}*b=Lxy/Lxx;//b=Lxy/Lxx*a=ya-*b*xa;//a=Ya-b*Xaif(SquarePoor==0)return0;//方差分析SquarePoor[0]=SquarePoor[1]=0.0;for(p=data,m=0;m<rows;m++,p++){Lxy=*a+*b**p++;SquarePoor[0]+=((Lxy-ya)*(Lxy-ya));//U(回归平方和)SquarePoor[1]+=((*p-Lxy)*(*p-Lxy));//Q(剩余平方和)}SquarePoor[2]=SquarePoor[0];//回归方差SquarePoor[3]=SquarePoor[1]/(rows-2);//剩余方差return0;}为了理解代码,把几个与代码有关的公式写在下面(回归理论和公式推导就免了,网上搜索到处是,下面的公式图片也是网上搜的,有些公式图形网上没找到或者不合适,可参见后面多元回归中的公式):1、回归方程式:2、回归系数:其中:3、回归平方和:4、剩余平方和:实例计算:doubledata1[12][2]={//XY{187.1,25.4},{179.5,22.8},{157.0,20.6},{197.0,21.8},{239.4,32.4},{217.8,24.4},{227.1,29.3},{233.4,27.9},{242.0,27.8},{251.9,34.2},{230.0,29.2},{271.8,30.0}};voidDisplay(double*