失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab 使用nlinfit 函数进行多元非线性回归 并且绘制曲线拟合的误差区间

Matlab 使用nlinfit 函数进行多元非线性回归 并且绘制曲线拟合的误差区间

时间:2024-05-08 23:53:18

相关推荐

Matlab 使用nlinfit 函数进行多元非线性回归 并且绘制曲线拟合的误差区间

Matlab 使用nlinfit 函数进行多元非线性回归,并且绘制曲线拟合的误差区间

一、前言二、nlinfit函数使用1、函数语法2、拟合示例:三、误差阴影绘制四、整体源码五、思考参考博客

一、前言

这个也是最近我接到的一个小项目里的内容:

有一组数据x、y:

x=[200020012002]y=[34335529802196633854340461647524597443149305770557655105468697065586177]

参考文献后发现需要利用这组数据拟合成特定的函数形式:

因此,使用MATLAB中多元非线性回归nlinfit 函数进行自定义函数的拟合,并且绘制出置信度95%下的拟合误差阴影,效果如下:

下面是回归具体拟合过程和置信区间下的误差阴影绘制。

二、nlinfit函数使用

1、函数语法

2、拟合示例:

x=[200020012002];y=[34335529802196633854340461647524597443149305770557655105468697065586177];%内联函数创建自定义函数 beta为参数数组mymodel = inline('beta(1)./(1+exp(-(beta(2)).*(x-beta(3))))','beta','x');%定义参数初始值beta0=[500 1 ];%进行拟合[beta,r,J]= nlinfit(x,y,mymodel,beta0);%打印拟合参数值fprintf("拟合结果为:K=%f a=%f b=%f\n",vpa(beta(1)),vpa(beta(2)),vpa(beta(3)));

三、误差阴影绘制

%Y是预测值 delta是置信度为95%的拟合误差[Y,delta]=nlpredci(mymodel,x,beta,r,J);figurex=x;Y=Y';delta=delta';%绘制置信区域fill([x x(end:-1:1)],[Y+delta Y(end:-1:1)-delta(end:-1:1)],[204/255 204/255 204/255],'EdgeColor','none');hold onplot(x,y,'ko',x,Y,'k');xlabel("xx");ylabel("y");title("Title")

四、整体源码

x=[200020012002];y=[34335529802196633854340461647524597443149305770557655105468697065586177];%内联函数创建自定义函数 beta为参数数组mymodel = inline('beta(1)./(1+exp(-(beta(2)).*(x-beta(3))))','beta','x');%定义参数初始值beta0=[500 1 ];%进行拟合[beta,r,J]= nlinfit(x,y,mymodel,beta0);%打印拟合参数值fprintf("拟合结果为:K=%f a=%f b=%f\n",vpa(beta(1)),vpa(beta(2)),vpa(beta(3)));%Y是预测值 delta是置信度为95%的拟合误差[Y,delta]=nlpredci(mymodel,x,beta,r,J);figurex=x;Y=Y';delta=delta';%绘制置信区域fill([x x(end:-1:1)],[Y+delta Y(end:-1:1)-delta(end:-1:1)],[204/255 204/255 204/255],'EdgeColor','none');hold onplot(x,y,'ko',x,Y,'k');xlabel("xx");ylabel("y");title("Title")

运行结果如前言所示(当然x轴的文字是另外修改的)

五、思考

关于自定义函数的拟合:一开始我用的matlab拟合工具箱,拟合结束后发现只能得到拟合参数的值和一些描述拟合结果的误差,不能绘制出来误差阴影图,搜索之后发现多元非线性回归可以实现这个需求,详见【参考博客1】。关于95%置信区间误差阴影绘制:有很多博客写到了多项式拟合以及拟合之后的95%置信区间误差阴影绘制,我对此进行了参考,详见【参考博客2】。关于其余置信区间误差区域计算、绘制例如90%,只需要nlpredci函数中设定’Alpha’,0.1即可。详见MATLAB【help-nlpredc】。

参考博客

1、使用MATLAB进行多元非线性回归——nlinfit函数的使用

2、Matlab绘制带置信区间的拟合曲线

欢迎各位留言交流!!!

同时,如果各位在作图方面有需要可以闲鱼搜索用户:Man小洁,欢迎交流。

如果觉得《Matlab 使用nlinfit 函数进行多元非线性回归 并且绘制曲线拟合的误差区间》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。