MATLAB学习打卡第四天——多元线性回归模型

1,引言

例题均取自川川菜鸟的《数学建模学习(6)——多元线性回归模型》
链接为
有需要者自取。

2,一元线性回归之旧轿车价格案例

以x表示使用年数,y表示相应的平均价格。根据表中x和y的数据,建立一个数据模型,分析就轿车平均价格与其使用念书之间的关系,即求y与x的关系。为了表示,x和y数据为:
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
代码为

clear all
clcx=1:10;y=[2650,1942,1493,1086,766,539,485,291,224,202];for i=1:10    plot(x(i),y(i),'or');    hold onendxlabel('x');ylabel('y');

于是,我们得到结果

接着,我们不难发现,y随x的变化而变化,但变化的过于快速了。在基础函数中,变化如此快的函数有哪个?
不难想到,是指数函数。
因此,咱们引入一个新的变量z,令z=lny。记作zi=lnyi。
于是

clear all
clc
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
z=zeros(size(y));
N=length(y);
hold on
for i =1:N
    z(i)=log(y(i));
    plot(x(i),z(i),'ok');
end
xlabel('x');
ylabel('y');


通过反馈,不难看出,这些点近似位于一条直线上。于是,咱们就假设这个模型就是简单的y=ax+b。
然后,开始计算其参数值,代码为:

clear all
clcx=1:10;y=[2650,1942,1493,1086,766,539,485,291,224,202];z=zeros(size(y));N=length(y);for i =1:N    z(i)=log(y(i));end[p,s]=polyfit(x,z,1)

得到返回结果:k=8.1671,b=-0.2984,从而可以得到函数z=8.1671-0.2984x

3,多元线性回归之洞庭湖污染物案例实测

定义:如果有两个或者两个以上的自变量,成为多元回归。
在这里,川川引用了一个函数:regress函数,调用格式为:

[b,bint,r,rint,stats]=regress(y,x,alpha)

什么意思呢?alpha为显著性水平,缺省设定为0.05,b表示为输出量,bint为回归系数估计值和他们的置信区间,r为残差,rint为置信区间,stats适用于检验回归模型的统计量。
是不是看不懂?没事,咱们带进题目来看一看。
题目为

代码为

%开始多元回归
clear all
clc
x1=[1.376,1.375,1.387,1.401,1.412,1.428,1.445,1.477];
x2=[0.450,0.475,0.485,0.5,0.535,0.545,0.55,0.575];
x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];
x4=[5.19,1.161,0.5346,0.9589,2.0239,1.0499,1.1065,1.1387];
y=[5.19,5.3,5.6,5.82,6,6.06,6.45,6.95];
save data x1 x2 x3 x4 y%保存数据
load data %取出数据
y=[y'];
x=[ones(size(x1')),x1',x2',x3',x4'];
[b,bint,r,rint,stats]=regress(y,x)


结果为

根据返回值b值,我们可以确定出函数关系式,模型为:

y=-20.5297+19.1269x1+8.0045x2-1.5867x3-0.1465x4

猜你喜欢

转载自blog.csdn.net/m0_57011726/article/details/121392877