如果本文有点小难理解的话,可以看看我之前的基础线性规划啥的,有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:10plot(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:Nz(i)=log(y(i));plot(x(i),z(i),'ok');
end%命名x轴和y轴
xlabel('x');
ylabel('y');
运行结果:观察结果,是不是觉得比刚才拟合效果好多了
经过分析:各点基本处于一条直线附近,可以认为z=a+bx+c
既然已经确定好了函数类型,就可以求解参数具体值。
代码:
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:Nz(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
clcx1=[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 中国