matlab多元非线性回归教程.pdf
《matlab多元非线性回归教程.pdf》由会员分享,可在线阅读,更多相关《matlab多元非线性回归教程.pdf(22页珍藏版)》请在咨信网上搜索。
1、matlab 回归(多元拟合)教程回归(多元拟合)教程前言前言1、学三条命令polyfit(x,y,n)-拟合成一元幂函数(一元多次)regress(y,x)-可以多元,nlinfit(x,y,fun,beta0)(可用于任何类型的函数,任意多元函数,应用范围最主,最万能的)2、同一个问题,这三条命令都可以使用,但结果肯定是不同的,因为拟合的近似结果,没有唯一的标准的答案。相当于咨询多个专家。3、回归的操作步骤:根据图形(实际点),选配一条恰当的函数形式(类型)-需要数学理论与基础和经验。(并写出该函数表达式的一般形式,含待定系数)-选用某条回归命令求出所有的待定系数。所以可以说,回归就是求待
2、定系数的过程(需确定函数的形式)一、回归命令一元多次拟合 polyfit(x,y,n);一元回归 polyfit;多元回归 regress-nlinfit(非线性)二、多元回归分析二、多元回归分析对于多元线性回归模型(其实可以是非线性,它通用性极高):exxypp110设变量的 n 组观测值为12,px xxy12(,)1,2,iiipixxxyin记,则 的估计值为排列方式npnnppxxxxxxxxxx212222111211111nyyyy21p10与线性代数中的线性方程组相同(),拟合成多元函数-regress使用格式:左边用 b=b,bint,r,rint,stats右边用=regr
3、ess(y,x)或 regress(y,x,alpha)-命令中是先 y 后 x,-须构造好矩阵 x(x 中的每列与目标函数的一项对应)-并且 x 要在最前面额外添加全 1 列/对应于常数项-y 必须是列向量-结果是从常数项开始-与 polyfit 的不同。)其中:b 为回归系数,的估计值(第一个为常数项),bint 为回归系数的区间估计,r:残差,rint:残差的置信区间,stats:用于检验回归模型的统计量,有四个数值:相关系数r2、F 值、与 F 对应的概率 p 和残差的方差(前两个越大越好,后两个越小越好),alpha:显著性水平(缺省时为 0.05,即置信水平为 95%),(alph
4、a 不影响 b,只影响 bint(区间估计)。它越小,即置信度越高,则 bint 范围越大。显著水平越高,则区间就越小)(返回五个结果)-如有 n 个自变量-有误(n 个待定系数),则 b 中就有 n+1 个系数(含常数项,-第一项为常数项)(b-b 的范围/置信区间-残差 r-r 的置信区间 rint-点估计-区间估计 此段上课时不要:-如果的置信区间(bint 的第行)不包含 0,则在显著水i1i平为时拒绝的假设,认为变量是显著的*(而 rint 残差的区间应包含 00iix则更好)。b,y 等均为列向量,x 为矩阵(表示了一组实际的数据)必须在 x 第一列添加一个全 1列。-对应于常数项
5、-而 nlinfit 不能额外添加全不能额外添加全 1 列列。结果的系数就是与此矩阵相对应的(常数项,x1,x2,xn)。(结果与参数个数:1/5=2/3-y,x 顺序-x 要额外添加全 1列)而 nlinfit:1/3=4-x,y 顺序-x 不能额外添加全 1 列,-需编程序,用于模仿需拟合的函数的任意形式,一定两个参数,一为系数数组,二为自变量矩阵(每列为一个自变量)有 n 个变量-不准确,x 中就有 n 列,再添加一个全 1 列(相当于常数项),就变为 n+1列,则结果中就有 n+1 个系数。x 需要经过加工,如添加全 1 列,可能还要添加其他需要的变换数据。相关系数 r2 越接近 1,
6、说明回归方程越显著;(r2 越大越接近 1 越好)F 越大,说明回归方程越显著;(F 越大越好)与 F 对应的概率 p 越小越好,一定要 P x=143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164;y=88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102;plot(x,y,r+)z=x;x=ones(16,1),x;-常数项 b,bint,r,rint,stats=regress(y,x);-处结果与 polyfit(x,y,1)相同b,bint,stats得结果:b=bi
7、nt=-16.0730 -33.7071 1.5612-每一行为一个区间 0.7194 0.6047 0.8340stats=0.9282 180.9531 0.0000即;的置信区间为-33.7017,1.5612,的置信区间为7194.0,073.1610010.6047,0.834;r2=0.9282,F=180.9531,p=0.0。p b,bint,r,rint,stats=regress(Y,X,0.05);-结果相同 b,bint,r,rint,stats=regress(Y,X,0.03);polyfit(x,y,1)-当为一元时(也只有一组数),则结果与 regress 是相
8、同的,只是命令中 x,y 要交换顺序,结果的系数排列顺序完全相反,x 中不需要全 1 列。ans=0.7194 -16.0730-此题也可用 polyfit 求解,杀鸡用牛刀,脖子被切断。3、残差分析,作残差图:、残差分析,作残差图:rcoplot(r,rint)246810121416-5-4-3-2-101234Residual Case Order PlotResidualsCase Number从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型区间均包含零点,
9、这说明回归模型 y=-16.073+0.7194x 能较好的符合原始数据,而第二个能较好的符合原始数据,而第二个数据可视为异常点数据可视为异常点(而剔除而剔除)4、预测及作图:plot(x,y,r+)hold on a=140:165;b=b(1)+b(2)*a;plot(a,b,g)1401451501551601658486889092949698100102例例 2 观测物体降落的距离 s 与时间 t 的关系,得到数据如下表,求 s 关于 t 的回归方程2ctbtast (s)1/302/303/304/305/306/307/30s (cm)11.8615.6720.6026.6933
10、.7141.9351.13t (s)8/309/3010/3011/3012/3013/3014/30s (cm)61.4972.9085.4499.08113.77129.54146.48法一:直接作二次多项式回归 t=1/30:1/30:14/30;s=11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48;p,S=polyfit(t,s,2)p=489.2946 65.8896 9.1329得回归模型为得回归模型为:1329.98896.652946.4892tts方法二
11、方法二-化为多元线性回归:化为多元线性回归:2ctbtast=1/30:1/30:14/30;s=11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48;T=ones(14,1),t,(t.2)%?是否可行?等验证.-因为有三个待定系数,所以有三列,始于常数项 b,bint,r,rint,stats=regress(s,T);b,statsb=9.1329 65.8896 489.2946stats=1.0e+007*0.0000 1.0378 0 0.0000得回归模型为得回
12、归模型为:%结果与方法 1 相同22946.4898896.651329.9tts T=ones(14,1),t,(t.2)%?是否可行?等验证.polyfit-一元多次regress-多元一次-其实通过技巧也可以多元多次regress 最通用的,万能的,表面上是多元一次,其实可以变为多元多次且任意函数,如 x 有 n 列(不含全 1 列),则表达式中就有 n+1 列(第一个为常数项,其他每项与 x 的列序相对应)?此处的说法需进一步验证证例例 3 设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为 1000、价格为 6 时的商品需求量.需求量需求量100
13、75807050659010011060收入收入1000600 1200500300400130011001300300价格价格5766875439选择纯二次模型,即 2222211122110 xxxxy-用户可以任意设计函数 x1=1000 600 1200 500 300 400 1300 1100 1300 300;x2=5 7 6 6 8 7 5 4 3 9;y=100 75 80 70 50 65 90 100 110 60;X=ones(10,1)x1 x2(x1.2)(x2.2);%注意技巧性?b,bint,r,rint,stats=regress(y,X);%这是万能方法?需
14、进一步验证 b,stats b=110.5313 0.1464 -26.5709 -0.0001 1.8475stats=0.9702 40.6656 0.0005 20.5771故回归模型为:2221218475.10001.05709.261464.05313.110 xxxxy剩余标准差为 4.5362,说明此回归模型的显著性较好.-(此题还可以用 rstool(X,Y)命令求解,详见回归问题详解)X=ones(10,1)x1 x2(x1.2)(x2.2),sin(x1.*x2),(x1.*exp(x2);b,bint,r,rint,stats=regress(y,X);b,stats(
15、个人个人 2011 年认为,年认为,regress 只能用于函数中的每一项只能有一个待定系数的情况,不只能用于函数中的每一项只能有一个待定系数的情况,不能用于能用于 aebx 等的情况等的情况)regress(y,x)-re 是 y/x 逆置的-y 是列向量-须确定目标函数的形式-x 须构造(通过构造来反映目标函数)-x 中的每一列与目标函数的一项对应(剔除待定系数)-首项为常数项(x 的第一列为全 1)-有函数有 n 项(待定系数),则 x 就有 n 列-regress 只能解决每项只有一个待定系数的情况且必须有常数项的情况(且每项只有一个待定系数,即项数与待定系数数目相同)*其重(难、关键
16、)点:列向量、构造矩阵(X):目标函数中的每项与 X 中的一列对应。(由 X 来确定目标函数的类型/形式)三、非线性回归(拟合)三、非线性回归(拟合)使用格式:使用格式:beta=nlinfit(x,y,程序名程序名,beta0)beta,r,J=nlinfit(X,y,fun,beta0)X 给定的自变量数据,Y 给定的因变量数据,fun 要拟合的函数模型(句柄函数或者内联函数形式),beta0 函数模型中待定系数估计初值(即程序的初始实参)beta 返回拟合后的待定系数其中 beta 为估计出的回归系数;r 为残差;J 为 Jacobian 矩阵输入数据 x、y 分别为 n*m 矩阵和 n
17、 维列向量,对一元非线性回归,x 为 n 维列向量。model为是事先用 m-文件定义的非线性函数;beta0 为回归系数的初值可以拟合成任意函数。最通用的,万能的命令x,y 顺序,x 不需要任何加工,直接用原始数据。(也不需要全 1 列)-所编的程序一定是两个形参(待定系数/向量,自变量/矩阵:每一列为一个自变量)结果要看残差的大小和是否有警告信息,如有警告则换一个 b0 初始向量再重新计算。本程序中也可能要用.*./.如结果中有警告信息,则必须多次换初值来试算难点是编程序与初值nlinfit多元任意函数,(自己任意设计函数,再求待定系数)顺序(b,r,j=nlinfit(x,y,b0)y
18、为列向量;x 为矩阵,无需加全 1 列,x,y 就是原始的数据点,(x/y正顺序,所以 x 不要加全 1 列)需预先编程(两个参数,系数向量,各变量的矩阵/每列为一个变量)存在的问题:存在的问题:不同的 beta0,则会产生不同的结果,如何给待定系数的初值以及如何分析结果的好坏,如出现警告信息,则换一个待定系数试一试。如出现警告信息,则换一个待定系数试一试。因为拟合本来就是近似的,可能有多个结果。1:重点(难点)是预先编程序(即确定目标函数的形式,而 regress 的目标函数由 x 矩阵来确定,其重难点为构造矩阵 a)2:x/y 顺序列向量-x/y 是原始数据,不要做任何修改3:编程:一定两
19、个形参(beta,x)a=beta(1);b=beta(2);c=beta(3);x1=x(:,1);x2=x(:,2);x3=x(:,3);即每一列为一个自变量4:regress/nlinfit 都是列向量5:regress:有 n 项(n 个待定系数),x 就有 n 列;nlinfit:有 m 个变量则 x 就有 m 列例例 1 已知数据:x1=0.5,0.4,0.3,0.2,0.1;x2=0.3,0.5,0.2,0.4,0.6;x3=1.8,1.4,1.0,1.4,1.8;y=0.785,0.703,0.583,0.571,0.126;且 y 与 x1,x2,x3 关系为多元非线性关系(
20、只与 x2,x3 相关)为:y=a+b*x2+c*x3+d*(x2.2)+e*(x3.2)此函数是由用户根据图形的形状等所配的曲线,即自己选定函数类型求非线性回归系数 a,b,c,d,e。(1)对回归模型建立 M 文件 model.m 如下:function yy=myfun(beta,x)%一定是两个参数:系数和自变量-一个向量/一个矩阵a=beta(1)b=beta(2)c=beta(3)x1=x(:,1);%系数是数组,b(1),b(2),b(n)依次代表系数 1,系数 2,系数 nx2=x(:,2);%自变量 x 是一个矩阵,它的每一列分别代表一个变量,有 n 列就可以最多 nx3=x
21、(:,3);yy=beta(1)+beta(2)*x2+beta(3)*x3+beta(4)*(x2.2)+beta(5)*(x3.2);(b(i)与待定系数的顺序关系可以任意排列,并不是一定常数项在最前,只是结果与自己指定的相对应)(x 一定是一列对应一个变量,不能 x1=x(1),x2=x(2),x3=x(3))(2)主程序如下:x=0.5,0.4,0.3,0.2,0.1;0.3,0.5,0.2,0.4,0.6;1.8,1.4,1.0,1.4,1.8;-每一列为一个变量y=0.785,0.703,0.583,0.571,0.126;beta0=1,1,1,1,1,1;%有多少个待定系数,就
22、给多少个初始值。beta,r,j=nlinfit(x,y,myfun,beta0)beta=-0.4420 5.5111 0.3837 -8.1734 -0.1340此题也可用 regress 来求解,但结果是不一样的 x1=0.5,0.4,0.3,0.2,0.1;x2=0.3,0.5,0.2,0.4,0.6;x3=1.8,1.4,1.0,1.4,1.8;y=0.785,0.703,0.583,0.571,0.126;n=length(x1);x=ones(n,1),x2,x3,(x2.2),(x3.2);b,bint,r,rint,stats=regress(y,x);b,statsb=-3
23、.3844 -1.8450 6.5137 0 -2.1773stats=0.7859 1.2232 0.5674 0.05572011 年题目改为:年题目改为:y=a+b*x1+c*x2+d*(x3.2)+e*(x1.2)+f*sin(x2)求非线性回归系数 a,b,c,d,e,ffunction f=fxxnh(beta,x)%所编的程序一定是两个形参,第一个为待定系数向量,第二个为自变量矩阵a=beta(1);b=beta(2);c=beta(3);d=beta(4);e=beta(5);f=beta(6);%系数向量中的一个元素代表一个待定系数x1=x(:,1);%自变量矩阵每一列代表一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 多元 非线性 回归 教程 编辑 修改 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。