Matlab线性回归(拟合)-应用
更新时间:2023-10-28 06:37:01 阅读量: 综合文库 文档下载
Matlab线性回归(拟合)
对于多元线性回归模型:
y??0??1x1????pxp?e
设变量
x1,x2,xp,y的n组观测值为
(xi1,xi2,xip,yi)i?1,2,,n.
?1??1记 x?????1?x11x21?xn1?x1p??y1????x22?x2p??y2?,y????, ????????y??xn2?xnp??n?x12??0?????1?则???? 的估计值为
???????p???(x'x)?1x'yb??
在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)式给出的回归系数β的估计值.
[b, bint, r, rint, stats]=regress(y, x) 给出回归系数β的估计值b,β的95%置信区间((p+1)*2向量)bint,残差r以及每个残差的95%置信区间(n?2向量)rint;向量stats给出回归的R2统计量和F以及临界概率p的值.
如果
?i的置信区间(bint的第i+1行)不包含0,则在显著水平为?时拒绝
?i?0的假设,认为变量xi是显著的.
[b, bint, r, rint, stats]=regress(y, x, alpha) 给出了bint和rint的100(1-alpha)%的置信区间.
1.三次样条插值函数的MATLAB程序
matlab的spline
x = 0:10; y = sin(x); %插值点 xx = 0:.25:10; %绘图点 yy = spline(x,y,xx);
plot(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:目标函数中的系数估计初值, xdata:自变量数据, ydata:函数值数据,
x:拟合返回的系数(拟合结果), 2.1 nlinfit函数
格式:[beta,r,J]=nlinfit(x,y,’model’,beta0) beta:估计出的回归系数, r:残差,
J:Jacobian矩阵,
x,y:输入数据x、y分别为n*m矩阵和n维列向量,对一元非线性回归,x为n维列向量。
Model:事先用m-文件定义的非线性函数 beta0:回归系数的初值 例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关系为多元非线性关系(只与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) x1=x(:,1); x2=x(:,2); x3=x(:,3);
yy=beta(1)+beta(2)*x2+beta(3)*x3+beta(4)*(x2.^2)+beta(5)*(x3.^2); (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]';
[beta,r,j] = nlinfit(x,y,@myfun,beta0)
例题2:混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期(日)及抗压强度y(kg/cm2)的数据:
养护时间:x =[2 3 4 5 7 9 12 14 17 21 28 56 ]
抗压强度:y =[35+r 42+r 47+r 53+r 59+r 65+r 68+r 73+r 76+r 82+r 86+r 99+r ] 建立非线性回归模型,对得到的模型和系数进行检验。 注明:此题中的+r代表加上一个[-0.5,0.5]之间的随机数 模型为:y=a+k1*exp(m*x)+k2*exp(-m*x); Matlab程序:
x=[2 3 4 5 7 9 12 14 17 21 28 56]; r=rand(1,12)-0.5;
y1=[35 42 47 53 59 65 68 73 76 82 86 99]; 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.5 0.5 0.5 0.5]); a=beta(1),k1=beta(2),k2=beta(3),m=beta(4) %test the model xx=min(x):max(x);
yy=a+k1*exp(m*xx)+k2*exp(-m*xx); plot(x,y,'o',xx,yy,'r') 结果: a = 87.5244 k1 = 0.0269 k2 = -63.4591 m = 0.1083 图形:
2.2 lsqnonlin
非线性最小二乘(非线性数据拟合)的标准形式为
minxf(x)?f1(x)2?f2(x)2???fm(x)2?L
其中:L为常数
在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。
?f1(x)??f(x)?2?F(x)???????fm(x)??设
则目标函数可表达为
其中:x为向量,F(x)为函数向量。 函数lsqnonlin
minx1F(x)222?1?fi(x)22i
格式 x = lsqnonlin(fun,x0) %x0为初始解向量;fun为fi(x),i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。
x = lsqnonlin(fun,x0,lb,ub) %lb、ub定义x的下界和上界:lb?x?ub。 x = lsqnonlin(fun,x0,lb,ub,options) %options为指定优化参数,若x没有界,则lb=[ ],ub=[ ]。
[x,resnorm] = lsqnonlin(…) % resnorm=sum(fun(x).^2),即解x处目标函数值。
[x,resnorm,residual] = lsqnonlin(…) % residual=fun(x),即解x处fun的值。 [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矩阵。
例5-17求下面非线性最小二乘问题k?1?(2?2k?ekx101?ekx2)2初始解向量为
x0=[0.3, 0.4]。
解:先建立函数文件,并保存为myfun.m,由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由fi(x)建立:
fk(x)?2?2k?ekx1?ekx2 k=1,2,…,10
function F = myfun(x) k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2)); 然后调用优化程序: x0 = [0.3 0.4];
[x,resnorm] = lsqnonlin(@myfun,x0) 结果为:
Optimization terminated successfully:
Norm of the current step is less than OPTIONS.TolX x =
0.2578 0.2578
resnorm = %求目标函数值 lsqcurvefit
非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得下式成立:
minx1F(x,xdata)?ydata222?1?(F(x,xdatai)?ydatai)22i
在MATLAB5.x中,使用函数curvefit解决这类问题。 函数lsqcurvefit
格式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] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…) 参数说明:
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb?x?ub,若没有指定界,则lb=[ ],ub=[ ]; options为指定的优化参数;
fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定义为function F = myfun(x,xdata)
F = … % 计算x处拟合函数值fun的用法与前面相同; resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和; residual=fun(x,xdata)-ydata,即在x处的残差; exitflag为终止迭代的条件; output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。 例5-16 求解如下最小二乘非线性拟合问题
已知输入向量xdata和输出向量ydata,且长度都是n,拟合函数为
ydata(i)?x(1)?xdata(i)2?x(2)?sin(xdata(i))?x(3)?xdata(i)3
即目标函数为
minx1(F(x,xdata)?ydata)2ii2?i?1
n23其中:F(x,xdata)?x(1)?xdata?x(2)?sin(xdata)?x(3)?xdata
初始解向量为x0=[0.3, 0.4, 0.1]。
解:先建立拟合函数文件,并保存为myfun.m function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3; 然后给出数据xdata和ydata
>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3]; >>x0 = [10, 10, 10]; %初始估计值
>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata) 结果为:
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun x =
0.2269 0.3385 0.3021 resnorm = 6.2950
进行非线性回归时可使用nlinfit指令,其语法如下:
beta = nlinfit(X,y,fun,beta0) [beta,r,J] = nlinfit(X,y,fun,beta0)
[...] = nlinfit(X, y, fun, beta0, options)
[x,resnorm]= lsqcurvefit(fun,x0,xdata,ydata); 参数解释:
input:fun——编程者需要拟合的函数 x0——函数系数的初始猜测值 xdata——x坐标的值 ydata——y左边的值
output:x——经拟合的系数
resnorm——the value of the squared 2-norm of the residual sum((fun(x,xdata)-ydata).^2).
example: function fitfunc
xdata=[3.5 7.7 9.3 4.5 8.6 2.8 1.3 7.9 10.1 5.4]; %定义自变量 ydata=[16.5 149.6 263.1 24.6 208.5 9.9 2.7 162.9 322.0 52.3]; %定义因变量
x0=[7,7,7]; %初始估计值
[x,renorm]=lsqcurvefit(@myfun,x0,xdata,ydata); %确定待定系数 disp(x);
disp(renorm);
at x:
正在阅读:
Matlab线性回归(拟合)-应用10-28
水资源费征收使用管理办法02-15
问题导学这种模式遵循问题为主线,训练为主线,学生 …03-27
实验四 离场航空器程序管制模拟训练09-27
统计分析综合实验答题10-20
西南大学《民事诉讼法》网上作业及参考答案11-25
第五十六章尿石症06-29
Photoshop颜色搭配的那点事02-09
飞行区围界技术标准09-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 拟合
- 线性
- 回归
- 应用
- Matlab
- 从江月明村镇银行支农联络员管理办法
- 综合楼人防工程监理规划 - secret
- 史秀清:有效培养学生的数学情感03
- 幼儿园主题教育活动的问题与对策
- 2011年春季学期安装原理第二次作业
- EBS - 总帐功能点操作手册
- 2016年中学校长培训计划
- 结构工程师面试试题及答案
- 中国互联网大学生创新创业大赛校内选拔赛-广西财经学院
- 概预算结算管理办法
- 上海海洋大学渔业海洋学期末答案
- 高分子物理考研复试题及答案
- 名词解释
- 马里兰大学全美排名是多少?
- 紫微斗数基本教程
- “电磁场与电磁波”和“微波技术”实验大纲及指导说明书要点
- 厦门会计从业资格无纸化考试新大纲主要经济业务事项账务处理考前冲刺试题-厦门会计之家
- 2014年CT医师大型设备上岗证考试真题及答案
- 无机及分析化学宣贵达课后答案
- 龙城春天前期物业管理方案