Matlab线性回归(拟合)-应用_第1页
Matlab线性回归(拟合)-应用_第2页
Matlab线性回归(拟合)-应用_第3页
Matlab线性回归(拟合)-应用_第4页
Matlab线性回归(拟合)-应用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab线性回归(拟合)对于多元线性回归模型:y=-0-1X1-pXpe设变量Xl,X2/llXp,y的门组观测值为(Xi,X2,|l|Xp,yi)i=1,2JH,n的估计值为b=?=(xx)xy在 Matlab 中,用 regress 函数进行多元线性回归分析,应用方法如下:语法:b=regress(y,x)b,bint,r,rint,stats=regress(y,x)b,bint,r,rint,stats=regress(y,x,alpha)b=regress(y,x)得到的p+1维列向量b即为(11.2)式给出的回归系数0的估计值.b,bint,r,rint,stats=regre

2、ss(y,x)给出回归系数 B 的估计值 b,0 的 95%置信区间(p+1)*2 向量)bint,残差 r 以及每个残差的 95%置信区间(n*2向量)rint;向量 stats 给出回归的 R2 统计量和 F 以及临界概率 p 的值.如果的置信区间(bint 的第 i+1 行)不包含 0,则在显著水平为*时拒绝2 二0的假设,认为变量为是显著的.b,bint,r,rint,stats=regress(y,x,alpha)给出了 bint 和 rint 的 100(1-alpha)%的置信区间.matlab 的splinex=0:10;y=sin(x);xx=0:.25:10;yy=spli

3、ne(x,y,xx);1x11Z_x12记x=1x21z_aBx22I1x1p“1、x2py2.-yy=:,xnp)Un/1.三次样条插值函数的MATLAB 程序%插值点%绘图点Xn1xn2plot(x,y,o,xx,yy)2.非线性拟合非线性拟合可以用以下命令(同样适用于线性回归分析):beta=nlinfit(x,y,fun,beta0)x:给定的自变量数据,y:给定的因变量数据,fun:要拟合的函数模型(句柄函数或者内联函数形式),beta0 函数模型中系数估计初值,beta 返回拟合后的系数x=lsqcurvefit(fun,x0,xdata,ydata)fun 要取合的目襦函数,x0

4、:目标函数中的系数估计初值,xdata:自变量数据,ydata:函数值数据,x:拟合返回的系数(拟合结果),2.1nlinfit 函数格式:beta,r,J=nlinfit(x,y,model,beta0beta 估计出的回归系数,r:残差,J:Jacobian 矩阵,x,y:输入数据 x、y 分别为 n*m 矩阵和 n 维列向量,对一元非线性回归,x 为 n 维列向量。Model:事先用 m-文件定义的非线性函数beta。:回归系数的初值例 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;

5、y=0.785,0.703,0.583,0.571,0.126;且 y 与 x1,x2,x3 关系为多元非线性关系(只与 x2,x3 相关)为:y=a+b*x2+c*x3+d*(x2A2)+e*(x3A2)求非线性回归系数 a,b,c,d,e(1)对回归模型建立 M 文件 model.m 如下:functionyy=myfun(beta,x)x1=x(:,1);x2=x(:,2);x3=x(:,3);yy=beta(1)+beta(2)*x2+beta(3)*x3+beta(4)*(x2.A2)+beta(5)*(x3.A2);(2)主程序如下:x=0.5,0.4,0.3,0.2,0.1;0.

6、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;beta,r,j=nlinfit(x,y,myfun,beta0)例题2:混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12 个试块,记录了养护日期(日)及抗压强度 y(kg/cm2)的数据:养护时间:x=234579121417212856抗压强度:y=35+r42+r47+r53+r59+r65+r68+r73+r76+r82+r86+r99+r建立非线性回归模型,对得到的模型和系数进行检验。注明:此题中的+

7、r 代表加上一个卜 0.5,0.5之间的随机数模型为:y=a+k1*exp(m*x)+k2*exp(-m*x);Matlab 程序:x=234579121417212856;r=rand(1,12)-0.5;y1=354247535965687376828699;y=y1+r;myfunc=inline(beta(1)+beta(2)*exp(beta(4)*x)+beta(3)*exp(-beta(4)*x),beta,x);beta=nlinfit(x,y,myfunc,0.50.50.50.5);a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)%test

8、themodelxx=min(x):max(x);yy=a+k1*exp(m*xx)+k2*exp(-m*xx);plot(x,y,o,xx,yy,r)结果:a=87.5244k1=0.0269k2=-63.4591m=0.1083非线性最小二乘(非线性数据拟合)的标准形式为mxnf(x)=f1(x)2f2(x)2fm(x)2L其中:L 为常数在 MATLAB5.X中, 用函数 leastsq解决这类问题, 在 6.0版中使用函数 Isqnonlin。Jm(X)其中:x 为向量,F(x)为函数向量。函数 lsqnonlin格式 x=lsqnonlin(fun,x0)%x0 为初始解向量;fun

9、 为fi(x),i=1,2,,m,fun 返回向量值 F,而不是平方和值,平方和隐含在算法中,fun 的定义与前面相同。x=lsqnonlin(fun,x0,lb,ub)%lb、ub 定义 x 的下界和上界:lb-x-ub0 x=lsqnonlin(fun,x0,lb,ub,options)%options 为指定优化参数,若 x 没有界,则lb=,ub=。x,resnorm=lsqnonlin(-)%resnorm=sum(fun(x).A2),即解 x 处目标函数值。x,resnorm,residual=lsqnonlin(-)%residual=fun(x),即解 x 处 fun 的值。

10、x,resnorm,residual,exitflag=lsqnonlin(-)%exitflag 为终止迭代条件。x,resnorm,residual,exitflag,output=lsqnonlin(-)%output 输出优化信息。x,resnorm,residual,exitflag,output,lambda=lsqnonlin()%lambda 为 Lagrage乘子。x,resnorm,residual,exitflag,output,lambda,jacobian=lsqnonlin()%fun 在解 x处的 Jacobian 矩阵。10122k-ekxi-ekx2)2例 5

11、-17 求下面非线性最小二乘问题kT初始解向量为x0=0.3,0.40解:先建立函数文件,并保存为 myfun.m,由于 lsqnonlin 中的 fun 为向量形式而不是平方和形式,因此,myfun 函数应由fi(x)建立:functionF=myfun(x)k=1:10;F=2+2*k-exp(k*x(1)-exp(k*x(2);然后调用优化程序:x0=0.30.4;F(x)=1(x)一f2(x)则目标函数可表达为minX2F(x)2=2Lfi(x)2fk(x)=22k-ekxi-ekx2k=1,2,10 x,resnorm=lsqnonlin(myfun,x0)结果为:Optimizat

12、ionterminatedsuccessfully:NormofthecurrentstepislessthanOPTIONS.TolXx=0.25780.2578resnorm=%求目标函数值lsqcurvefit 非线性曲线拟合是已知输入向量 xdata 和输出向量 ydata,并且知道输入与输出的函数关系为 ydata=F(x,xdata),但不知道系数向量 x。今进行曲线拟合,求 x 使得下式成立:min1(F(x,xdata)-ydata|2=1工(F(x,xdatai)-ydatai)2x22i在 MATLAB5.x 中,使用函数 curve 巾 t 解决这类问题。函数 lsqcu

13、rvefit 格式x=lsqcurvefit(fun,x0,xdata,ydata)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)x,resnorm=lsqcurve 日t()x,resnorm,residual=lsqcurvefit(-)x,resnorm,residual,exitflag=lsqcurvefit(-)x,resnorm,residual,exitflag,output=lsqcurve讹()x,resnorm,residual,exitflag,

14、output,lambda=lsqcurvefit()x,resnorm,residual,exitflag,output,lambda,jacobian=lsqcurvefit()参数说明:x0 为初始解向量;xdata,ydata 为满足关系 ydata=F(x,xdata)0 勺数据;lb、ub 为解向量的下界和上界lbWxub,若没有指定界,则 lb=,ub=;options 为指定的优化参数;fun 为拟合函数,其定义方式为:x=lsqcurvefit(myfun,x0,xdata,ydata),其中myfun 已定义为 functionF=myfun(x,xdata)F=%计算 x

15、 处拟合函数值 fun 的用法与前面相同;resnorm=sum(fun(x,xdata)-ydata).A2)即在 x 处残差的平方和;residual=fun(x,xdata)-ydata,即在 x 处的残差;exitflag 为终止迭代的条件;output 为输出的优化信息;lambda 为解 x 处的 Lagrange 乘子;jacobian 为解 x 处拟合函数 fun 的 jacobian 矩阵。例 5-16 求解如下最小二乘非线性拟合问题已知输入向量 xdata 和输出向量 ydatai,且长度都是 n,拟合函数为ydata(i)=x(1)xdata(i)2x(2)sin(xda

16、ta(i)x(3)xdata(i)3nmin1_(F(x,xdata。-ydata)2即目标函数为x2TF(x,xdata)=x(1)xdata2x(2)sin(xdata)x(3)xdata3初始解向量为 x0=0.3,0.4,0.1。解:先建立拟合函数文件,并保存为 myfun.mfunctionF=myfun(x,xdata)F=x(1)*xdata.A2+x(2)*sin(xdata)+x(3)*xdata.A3;然后给出数据 xdata 和 ydataxdata=3.67.79.34.18.62.81.37.910.05.4;其中:ydata=16.5150.6263.124.720

17、8.59.92.7163.9325.054.3;x0=10,10,10;%初始估计值x,resnorm=lsqcurvefit(myfun,x0,xdata,ydata)结果为:Optimizationterminatedsuccessfully:RelativefunctionvaluechangingbylessthanOPTIONS.TolFunx=0.22690.33850.3021resnorm=6.2950进行非线性回归时可使用 nliMit 指令,其语法如下:beta=nlinfit(X,y,fun,beta0)beta,r,J=nlinfit(X,y,fun,beta0).=nlinfit(X,y,fun,beta0,options)x,resnorm=lsqcurve 巾 t(fun,x0,xdata,ydata);参数解释:input:fun 编程者需要拟合的函数x0函数系数的初始猜测值xdatax 坐标的值ydatay 左边的值output:x 经拟合的系数resnormthev

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论