[MATLAB]非线性回归--自配函数(nlinfit)

当谈到非线性回归模型的时候,同学们应该紧密的将线性回归紧密结合在一起,因为非线性回归很容易过拟合。那我们从一个案例谈一下非线性
在这里插入图片描述
拿到题目看到一个变量x一个y,非线性问题步骤应该是这样子的:

  • 画出散点图
  • 根据散点图确定须配曲线的类型;
  • 估计其中的未知参数

散点图

>> x=2:16;
y=[6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
beta0=[8 2]';
>> plot(x,y,'k+')

在这里插入图片描述

配曲线

一共有六类曲线可以配一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其实大家看这六张图有几张图会很眼熟,比如狐狸–兔子模型,人口模型都是属于机理分析可以配成上面几张图的。配图也是看着像配那个,美其名曰,六种备胎任你选,喜欢谁用谁!
最后选用了倒指数模型,代码如下

在volum.m写下配的函数类型:

function yhat=volum(beta,x)
yhat=beta(1)*exp(beta(2)./x);

在主程序选择调用:

beta0=[8 2]';
[beta,r,J]=nlinfit(x',y','volum',beta0);

现在的代码由上至下应该是这样子滴!

x=2:16;
y=[6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
beta0=[8 2]';
% plot(x,y,'k+')
[beta,r,J]=nlinfit(x',y','volum',beta0);

其中nlinfit使用:
在这里插入图片描述
总结:nlinfit函数的外部调用,也就是自己写.m文件的时候,要注意beta0是什么,有兴趣的同学,可以任取beta0的值试试看,会发现,大家不用太在意beta0到底取什么值,简而言之,可以慢慢尝试出来!

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/105247626#comments_22756421