多元线性回归模型-数学建模类-matlab详解

跟随川川打卡第四天了,加油!!!

如果本文有点小难理解的话,可以看看我之前的基础线性规划啥的,有lingo,matlab还有python

就不给大家放链接了,想看的话,点击头像即可!!

文章目录

(1)一元线性回归之旧轿车价格案例

(2)多元线性回归之洞庭湖污染物案例实测

(3) 参考文档:


(1)一元线性回归之旧轿车价格案例

        以x表示使用年数,y表示相应的平均价格。根据表中x和y的数据,建立一个数据模型,分析就轿车平均价格与其使用念书之间的关系,即求y与x的关系。
        为了表示,x和y数据为:

x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];

 代码:

clear all
clc

%绘图
x=1:10;
y=[2650,1942,1493,1086,766,539,485,291,224,202];
for i=1:10
    plot(x(i),y(i),'or');
    hold on
end

%命名x轴和y轴
xlabel('x');
ylabel('y');

 运行结果:

         分析返回的图我们发现,x和y呈现指数关系,于是我们令z=Iny,记作Zi=Inyi,

        重新绘图:

 代码:

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

%命名x轴和y轴
xlabel('x');
ylabel('y');

 运行结果:观察结果,是不是觉得比刚才拟合效果好多了

         经过分析:各点基本处于一条直线附近,可以认为z=a+bx+c
既然已经确定好了函数类型,就可以求解参数具体值。
 代码:

clear all
clc

x=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)

        运行结果:

        由此可以得出:a=8.1671,b=-0.2984,从而可以得到函数z=8.1671-0.2984x

(2)多元线性回归之洞庭湖污染物案例实测

        定义:如果有两个或者两个以上的自变量,成为多元回归。

在这之前我需要先讲一下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

 (3) 参考文档:

多元线性回归 - MATLAB regress- MathWorks 中国

Guess you like

Origin blog.csdn.net/qq_25990967/article/details/121387919