*一般步骤与一元线性回归建模类似(参考上一条笔记)

*多元回归在matlab中依然使用regress函数

*重点是使用多元线性回归的逐步回归

一、多元线性回归例题

%导入数据
data=[                        
1   5.5 31  10  8   79.3
2   2.5 55  8   6   200.1
3   8.0 67  12  9   163.2
4   3.0 50  7   16  200.1
5   3.0 38  8   15  146.0    
6	2.9	71	12	17	177.7
7	8.0	30	12	8	30.9
8	9.0	56	5	10	291.9
9	4.0	42	8	4	160.0
10	6.5	73	5	16	339.4
11	5.5	60	11	7	159.6
12	5.0	44	12	12	86.3
13	6.0	50	6	6	237.5
14	5.0	39	10	4	107.2
15	3.5	55	10	4	155.0
16	8.0	70	6	14	201.4
17	6.0	40	11	6	100.2
18	4.0	50	11	8	135.8
19	7.5	62	9	13	223.3
20	7.0	59	9	11	195.0
]
x1=data(:,2)%取出data的第二列
x2=data(:,3)
x3=data(:,4)
x4=data(:,5)
y=data(:,6)
X=[ones(size(x1)),x1,x2,x3,x4]
[b,brint,r,rint,stats]=regress(y,X)
%  R^2=0.9034拟合效果较好
%  F=35.05,由概率为0可知:F足够大,接受模型的风险概率为0

rcoplot(r,rint)%绘制残差图,用于评估回归模型的拟合情况

二、多元线性之逐步回归

x1=[7 1 11 11 7 11 3 1 2 21 1 11 10]';
x2=[26 29 56 31 52 55 71 31 54 47 40 66 68]';
x3=[6 15 8 8 6 9 17 22 18 4 23 9 8]';
x4=[60 52 20 47 33 22 6 44 22 26 34 12 12]';
y=[78.5 74.3 104.3 87.6 95.9 109.2 102.7 72.5 93.1 115.9 83.8 113.3 109.4]
x=[x1 x2 x3 x4]
stepwise(x,y)

运行后会得到表格(如下)

点击红色误差条变为蓝色,并观察F的值,如果变大,说明X_{i}对Y影响很大

根据F值的变化易得:X1和X2对Y的影响大,X3和X4对Y的影响不显著,所以利用X1和X2建立回归方程,并作图(代码如下)。

X=[ones(13,1),x1,x2];
b=regress(y,X);

x1=-10:0.1:10;
x2=-10:0.1:10;

[X1,X2]=meshgrid(x1,x2);
Z=52.5773+1.4683*X1+0.6623*X2;

figure;
surf(X1,X2,Z)
xlabel('X1')
ylabel('X2')
zlabel('z')
title('Z=52.5773+1.4683*X1+0.6623*X2')

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐