数学建模之多元非线性回归

友情链接:
(1)使用MATLAB进行多元非线性回归——nlinfit函数的使用
https://blog.csdn.net/zhangyugebb/article/details/84770303

(2)MATLAB多元非线性回归
https://blog.csdn.net/lucky51222/article/details/42130523

(3)MATLAB实现多元非线性回归
https://blog.csdn.net/qq_42820064/article/details/86239033

一、使用MATLAB进行多元非线性回归——nlinfit函数的使用
https://blog.csdn.net/zhangyugebb/article/details/84770303

帮我对象做数据分析时遇到的问题,发现网上matlab多元非线性回归例子很少,写下来这篇用作参考

使用beta= nlinfit(x, y, model, beta0) 
——x为自变量,可以是多个自变量

——y为因变量,只能由一个

——model是函数模型

——beta0要求系数的初值

例子:
假定一个回归模型y = beta1*x1^3 + beta2*x2^2 + beta3*log2(x3)

其中beta1, beta2, beta3为想要通过回归得到的系数

Step1:建立回归模型

直接使用内联函数建立:

mymodel = inline('beta(1)*x(:,1).^3 + beta(2)*x(:,2).^2 + beta(3)*log2(x(:,3)','beta','x');

这里x(:1)是取x的第一列数据,相应的x(:,2)取第二列数据...

beta(1),beta(2),beta(3)为所求系数

Step2: 回归

x = [x1,x2,x3]; %自变量x1,x2,x3
beta0= [a1,b1,c1,d1,e1,f1,m1,n1,z1]; %系数初始值
beta = nlinfit(x,y,myfun,temp); %回归得到系数beta

二、MATLAB多元非线性回归
https://blog.csdn.net/lucky51222/article/details/42130523

解释变量:商品价格(x1)人均月收入(x2),被解释变量:商品需求量(y),进行二元回归分析,并进行检验  

在这里插入图片描述

Matlab代码:

clear
clc
data = [89	78	70	60	65	58	50	45	52	35	38
550	580	600	650	720	750	830	880	850	920	1100
5800	5000	6200	6800	7100	7800	8900	9000	8500	9400	9900
]';
x1 = data(:,1);
x2 = data(:,2);
y = data(:,3);
X = [ones(size(x1)) x1.*x1 x1 x2.*x2 x2 x1.*x2];
[b,bint] = regress(y,X)
scatter3(x1,x2,y,'filled')
hold on
x1fit = min(x1):0.5:max(x1);
x2fit = min(x2):0.5:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1)+ b(2)*X1FIT.*X1FIT+b(3)*X1FIT + b(4)*X2FIT.*X2FIT + b(5)*X2FIT + b(6)*X1FIT.*X2FIT;
mesh(X1FIT,X2FIT,YFIT)
xlabel('x1')
ylabel('x2')
zlabel('Y')
view(140,30)
命令窗口:
b =

  1.0e+004 *

    8.4841
    0.0006
   -0.1486
    0.0000
   -0.0098
    0.0001


bint =

  1.0e+005 *

   -1.0110    2.7078
   -0.0001    0.0002
   -0.0443    0.0145
   -0.0000    0.0000
   -0.0036    0.0017
   -0.0000    0.0000

图形:
在这里插入图片描述

三、MATLAB实现多元非线性回归
https://blog.csdn.net/qq_42820064/article/details/86239033

简单多元非线性回归算例
现有以下数据

在这里插入图片描述
在这里插入图片描述

MATLAB代码如下

x1=[1.1 1 1.2 1.1 0.9]';
x2=[2 2 1.8 1.9 2.1]';
x3=[3.2 3.2 3 2.9 2.9]';
y=[10.1 10.2 10 10.1 10]';
G=[x1,x2,x3.^2];
z=G\y;

在这里插入图片描述

[beta,r]=nlinfit(X,y,myfun,beta0);

其中输入参数X是自变量,y是因变量,myfun 是函数模型,beta0是初始迭代系数向量,返回值beta是模型的系数向量,r是每个点的残差。

先定义myfun
function y=myfun(beta,x)
y=beta(1)*x(:,1)+beta(2)*x(:,2)+beta(3)*x(:,3).^2;

然后主程序
x1=[1.1 1 1.2 1.1 0.9]';
x2=[2 2 1.8 1.9 2.1]';
x3=[3.2 3.2 3 2.9 2.9]';
y=[10.1 10.2 10 10.1 10]';
X=[x1,x2,x3];
beta0=[1,1,1];
[beta,r]=nlinfit(X,y,'myfun',beta0);

在这里插入图片描述

  • 35
    点赞
  • 338
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
非线性回归分析是一种用于建立非线性关系的回归模型的方法。在数学建模中,非线性回归分析可以用来描述解释变量和被解释变量之间的非线性关系。与一元线性回归不同,非线性回归可以包含多个解释变量和多个回归系数。 在进行非线性回归分析时,一般需要先确定适合的非线性回归模型。这可以通过绘制数据点的散点图,并观察其形状来确定。根据散点图的形状,可以选择适合的非线性回归模型进行分析。常见的非线性回归模型包括指数模型、对数模型、幂函数模型等。 在MATLAB中,可以使用相关的函数和工具箱来进行非线性回归分析。通过输入解释变量和被解释变量的数据,以及选择适合的非线性回归模型,MATLAB可以计算出最优的回归系数,并进行模型的拟合和检验。 总之,非线性回归分析是一种用于建立非线性关系的回归模型的方法,在数学建模中可以用来描述解释变量和被解释变量之间的非线性关系。在进行非线性回归分析时,需要选择适合的非线性回归模型,并使用相应的工具进行计算和分析。 #### 引用[.reference_title] - *1* *2* [菜鸟的数学建模之路(二):线性与非线性回归](https://blog.csdn.net/qq_40298902/article/details/100663817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [数学建模多元非线性回归](https://blog.csdn.net/JxufeCarol/article/details/100144673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值