MATLAB的一元与多元线性回归函数的使用

MATLAB线性回归

    • **1.一元线性回归之旧轿车价格案例**
    • **2.多元线性回归之洞庭湖污染物**

matlab中包含多种回归、拟合函数,其中回归分为一元与多元线性回归,函数有polyfit与regress。

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

一元回归就是只有一个未知量,一个因变量,形如y=a*x+b的一次函数,已知数据x与y,去求解一次直线的系数a与b,令数据与一次直线的误差最小。
根据已有的散点数据,画图展示数据的分布,看看是否能发现一些规律,其中用到plot函数(也可使用scatter函数),进行绘图

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
xlabel('x');
ylabel('y');


数据的绘图为
MATLAB的一元与多元线性回归函数的使用_第1张图片由图可分析,数据并不是简单的一次线性关系,看起来像指数分布,因此我们取ln(y)与x的关系进行绘图再看看

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');


返回的图片为
MATLAB的一元与多元线性回归函数的使用_第2张图片大致符合一次直线了,因此我们取新的变量z=ln(y),求解z=a*x+b的系数

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)

返回结果为
MATLAB的一元与多元线性回归函数的使用_第3张图片

2.多元线性回归之洞庭湖污染物

如果是形如y=a1x1+a2x2+…+an*xn+b的多元函数,就不能再使用polyfit一次拟合了,就要用到regress进行多元拟合
调用格式为

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/52350a4bc2c3497c8e0d5daee0881789.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yeh5bCU6LWb5pmu5pmu6YCa6YCa5bGF5rCR,size_17,color_FFFFFF,t_70,g_se,x_16
多元函数的使用方法如下

%开始多元回归
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)

返回结果为:
MATLAB的一元与多元线性回归函数的使用_第4张图片

你可能感兴趣的:(回归,matlab,机器学习)