C语言版的线性回归分析函数.doc
《C语言版的线性回归分析函数.doc》由会员分享,可在线阅读,更多相关《C语言版的线性回归分析函数.doc(18页珍藏版)》请在咨信网上搜索。
1、. .C语言版的线性回归分析函数 分类: C/C+ 2007-08-03 23:39 13840人阅读 评论(31) 收藏举报语言c数学计算delphisystem 前几天,清理出一些十年以前DOS下的程序与代码,看来目前也没什么用了,想打个包刻在光碟上,却发现有些代码现在可能还能起作用,其中就有计算一元回归和多元回归的代码,一看代码文件时间,居然是1993年的,于是稍作整理,存放在这,分析虽不十分完整,但一般应用是没问题的,最起码,可提供给那些刚学C的学生们参考。先看看一元线性回归函数代码:/求线性回归方程:Y=a+bx/dadarows*2数组:X,Y;rows:数据行数;a,b:返回回归
2、系数/SquarePoor4:返回方差分析指标:回归平方和,剩余平方和,回归平方差,剩余平方差/返回值: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|rows1)return-1;for(p=data,m=0;mrows;m+)xa+=*p+;ya+=*p+;xa/=rows;/X平均值ya/=rows;/Y平均值for(p=data,m=0;mr
3、ows;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;/方差分析SquarePoor0=SquarePoor1=0.0;for(p=data,m=0;mrows;m+,p+)Lxy=*a+*b*p+;SquarePoor0+=(Lxy-ya)*(Lxy-ya);/U(回归平方和)SquarePoor1+=(*p-Lxy)*(*p
4、-Lxy);/Q(剩余平方和)SquarePoor2=SquarePoor0;/回归方差SquarePoor3=SquarePoor1/(rows-2);/剩余方差return0;为了理解代码,把几个与代码有关的公式写在下面(回归理论和公式推导就免了,网上搜索到处是,下面的公式图片也是网上搜的,有些公式图形网上没找到或者不合适,可参见后面多元回归中的公式):1、回归方程式:2、回归系数:其中: 3、回归平方和:4、剩余平方和:实例计算:doubledata1122=/XY187.1,25.4,179.5,22.8,157.0,20.6,197.0,21.8,239.4,32.4,217.8,2
5、4.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*dat,double*Answer,double*SquarePoor,introws,intcols)doublev,*p;inti,j;printf(回归方程式: Y=%.5lf,Answer0);for(i=1;icols;i+)printf(+%.5lf*X%d,Answeri,i);printf( );printf(回归显著性检验: );printf(回归平方和:%12.4lf回归方差:%12.4lf ,Sq
6、uarePoor0,SquarePoor2);printf(剩余平方和:%12.4lf剩余方差:%12.4lf ,SquarePoor1,SquarePoor3);printf(离差平方和:%12.4lf标准误差:%12.4lf ,SquarePoor0+SquarePoor1,sqrt(SquarePoor3);printf(F检验:%12.4lf相关系数:%12.4lf ,SquarePoor2/SquarePoor3,sqrt(SquarePoor0/(SquarePoor0+SquarePoor1);printf(剩余分析: );printf(观察值估计值剩余值剩余平方 );for(i
7、=0,p=dat;irows;i+,p+)v=Answer0;for(j=1;jcols;j+,p+)v+=*p*Answerj;printf(%12.2lf%12.2lf%12.2lf%12.2lf ,*p,v,*p-v,(*p-v)*(*p-v);system(pause);intmain()doubleAnswer2,SquarePoor4;if(LinearRegression(double*)data1,12,&Answer0,&Answer1,SquarePoor)=0)Display(double*)data1,Answer,SquarePoor,12,2);return0; 运
8、行结果:上 面的函数和例子程序不仅计算了回归方程式,还计算了显著性检验指标,例如F检验指标,我们可以在统计F分布表上查到 F0.01(1,10)=10.04(注:括号里的1,10分别为回归平方和和剩余平方和所拥有的自由度),小于计算的F检验值25.94,可以认为该回 归例子高度显著。如果使用图形界面,可以根据原始数据和计算结果绘制各种图表,如散点图、趋势图、控制图等。很多非线性方程可以借助数学计算,转化为直线方程进行回归分析。同一元线性回归相比,多元线性回归分析代码可就复杂多了,必须求解线性方程,因此本代码中包含一个可独立使用的线性方程求解函数:voidFreeData(double*dat,
9、double*d,intcount)inti,j;free(d);for(i=0;icount;i+)free(dati);free(dat);/解线性方程。datacount*(count+1)矩阵数组;count:方程元数;/Answercount:求解数组。返回:0求解成功,-1无解或者无穷解intLinearEquations(double*data,intcount,double*Answer)intj,m,n;doubletmp,*dat,*d=data;dat=(double*)malloc(count*sizeof(double*);for(m=0;mcount;m+,d+=(
10、count+1)datm=(double*)malloc(count+1)*sizeof(double);memcpy(datm,d,(count+1)*sizeof(double);d=(double*)malloc(count+1)*sizeof(double);for(m=0;mcount-1;m+)/如果主对角线元素为0,行交换for(n=m+1;ncount&datmm=0.0;n+)if(datnm!=0.0)memcpy(d,datm,(count+1)*sizeof(double);memcpy(datm,datn,(count+1)*sizeof(double);memcpy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言版 线性 回归 分析 函数
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。