1.一元线性回归
直接看代码,目标是建立 y y y和 x x x的函数关系,即求 y = k x + b y=kx+b y=kx+b中的 k k k和 b b b, k k k和 b b b都是实数。
% 用regress函数进行回归
x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
figure
plot(x,y,'r*') %作散点图(制定横纵坐标)
xlabel('x')
ylabel('y')
Y=y';
X=[ones(size(x,2),1),x'];
[b,bint,r,rint,s]=regress(Y,X);
hold on
plot(x,b(1)+b(2)*x)
title("预测结果")
figure
rcoplot(r,rint) % 残差分析
输出结果b就是系数矩阵,本题b=[-23.5493,2.791],则预测结果为y = -23.5493+2.7991x
预测结果与散点图如下:
残差分析图如下,可以看出只有一个异常点,拟合效果不错。
2.多元线性回归
2.1数据说明
部分data数据如下图所示:
导入MATLAB中,数据是一个200行4列的矩阵,此处表示有3个变量
x
1
,
x
2
,
x
3
x_1,x_2,x_3
x1,x2,x3,每个变量有200条数据,最后一列数据表示
y
y
y,多元线性回归的目标是建立
y
y
y和
x
1
,
x
2
,
x
3
x_1,x_2,x_3
x1,x2,x3之间的关系,即求
k
0
,
k
1
,
k
2
,
k
3
k_0,k_1,k_2,k_3
k0,k1,k2,k3,使得
y
=
k
0
+
k
1
x
1
+
k
2
x
2
+
k
3
x
3
y=k_0+k_1x_1+k_2x_2+k_3x_3
y=k0+k1x1+k2x2+k3x3。
% 多元线性回归
a = load('data.txt');
x1=a(:,[1]) ;
x2=a(:,[2]) ;
x3=a(:,[3]) ;
y=a(:,[4]);
X=[ones(length(y),1), x1,x2,x3];
[b,bint,r,rint,stats]=regress(y,X);
b
rcoplot(r,rint)
2.2程序运行结果
b的求解结果如下,所以求出
y
=
2.9389
+
0.0458
x
1
+
0.1885
x
2
−
0.001
x
3
y=2.9389+0.0458x_1+0.1885x_2-0.001x_3
y=2.9389+0.0458x1+0.1885x2−0.001x3
残差分析如下: