Matlab实现多元回归实例.docx
《Matlab实现多元回归实例.docx》由会员分享,可在线阅读,更多相关《Matlab实现多元回归实例.docx(32页珍藏版)》请在冰点文库上搜索。
Matlab实现多元回归实例
合用标准文案
Matlab实现多元回归实例
〔一〕一般多元回归
一般在生产实践和科学研究中,人们获取了参数xx1,,xn和因变量y的
数据,需要求出关系式yfx,这时就可以用到回归解析的方法。
若是只考虑
f是线性函数的状况,当自变量只有一个时,即,
x
x1,,xn中n1时,称
为一元线性回归,当自变量有多个时,即,
x
x1,
xn
中n2时,称为多元
线性回归。
进行线性回归时,有4个根本假设:
①因变量与自变量之间存在线性关系;
②残差是独立的;
③残差满足方差奇性;
④残差满足正态分布。
在Matlab软件包中有一个做一般多元回归解析的命令
regeress,调用格式
以下:
[b,bint,r,rint,stats]=regress(y,X,alpha)
也许
[b,bint,r,rint,stats]=regress(y,X)
此时,默认alpha=0.05.
这里,y是一个n1的列向量,X是一个n
m
1的矩阵,其中第一列是全1向
量〔这一点关于回回来说很重要,这一个全
1列向量对应回归方程的常数项〕,
一般状况下,需要人工造一个全
1列向量。
回归方程拥有以下形式:
y
01x1
mxm
其中,
是残差。
在返回项[b,bint,r,rint,stats]
中,
①b
01
m是回归方程的系数;
②bint
是一个m2矩阵,它的第i行表示i
的(1-alpha)
置信区间;
③r是
n1
的残差列向量;
④rint
是n
2矩阵,它的第i行表示第i个残差ri的(1-alpha)置信区间;
说明:
残差与残差区间杠杆图,最幸好0点线周边比较均匀的分布,而不表现必然的规律性,若是是这样,就说明回归解析做得比较理想。
⑤一般的,stast返回4个值:
R2值、F_检验值、阈值f,与明显性概率相关的
p值〔若是这个p值不存在,那么,只输出前3项〕。
说明:
优秀文档
合用标准文案
(1〕一般说来,R2值越大越好。
(2〕人们一般用以下统计量对回归方程做明显性检验:
F_检验、t_检验、以及相关系数检验法。
Matlab软件包输出F_检验值和阈值f。
一般说来,F_检验值
越大越好,特其余,应该有F_检验值f。
〔3〕与明显性概率相关的p值应该满足palpha。
若是palpha,那么说明回归
方程中有节余的自变量,能够将这些节余的自变量从回归方程中剔除〔见下面渐渐回归的内容〕。
这几个技术指标说明拟合程度的利害。
这几个指标都好,就说明回归方程是有意义的。
例1〔Hamilton,1987〕数据以下:
序号
Y
X1
X2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
第一步解析数据
在Matlab软件包中解析可否具有线性关系,并作图观察,M—文件opt_hanmilton_1987:
x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16];
x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96];
y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12
.63,12.46];
corrcoef(x1,y);
corrcoef(x2,y);
plot3(x1,x2,y,'*');
获取结果:
ans=
优秀文档
合用标准文案
ans=
即,corrcoef(x1,y)
=0.0025,corrcoef(x2,y)
=0.4341,说明没有特别明显的
单变量线性关系。
图形以下:
也看不出有线性关系,但是,旋转图形,能够看出所有点几乎在一个平面上。
这说明,y,x1,x2在一个平面上,满足线性关系:
a1x1
a2x2
bya
也许,换成一个常有的形式
y
a0a1
x1a2x2
其中,是残差。
于是,在
Matlab软件包中做线性多元回归,写一个M—文件
opt_regress_hamilton:
x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16]';
x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96]';
y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12
.63,12.46]';
e=ones(15,1);
x=[e,x1,x2];
[b,bint,r,rint,stats]=regress(y,x,0.05)
rcoplot(r,rint)
其中,rcoplot〔Residualcaseorderplot〕表示画出残差与残差区间的杠杆
优秀文档
合用标准文案
图。
执行后获取:
b=
bint=
r=
rint=
stats=
1.0e+004*
0
优秀文档
合用标准文案
即,y4.5153.097x11.0319x2。
置信度95%,且R2
1.0,F_检验值39222
0,与明显性概率
0.05相关的
p0.00000.05,这说明,回归方程中的每个自变量的采用,都是有意义的。
残差杠杆图:
从杠杆图看出,所有的残差都在0点周边均匀分布,区间几乎都位于
之间,即,没有发现高杠杆点,也就是说,数据中没有强影响点、异常观察点。
综合起来看,以上回概括果〔回归函数、拟合曲线或曲面〕近乎圆满。
〔二〕渐渐回归
假设已有数据X和Y,在Matlab软件包中,使用stepwise命令进行渐渐回
归,获取回归方程Y
a1X1a2X2
anXn,其中是随机误差。
stepwise
命令的使用格式以下:
stepwise(X,Y)
注意:
应用stepwise命令做渐渐回归,数据矩阵
X的第一列不需要人工加
一个全1向量,程序会自动求出回归方程的常数项〔
intercept〕。
在应用stepwise命令进行运算时,程序不断提示将某个变量参加〔Movein〕
回归方程,也许提示将某个变量从回归方程中剔除〔
Moveout〕。
说明:
①使用stepwise命令进行渐渐回归,既有剔除变量的运算,也有引
入变量的运算,它
是目前应用较为广泛的一种多元回归方法。
②在运行
stepwise(X,Y)命令时,默认明显性概率
0.05。
例2〔Hald,1960〕Hald数据是关于水泥生产的数据。
某种水泥在凝固时放出的热量Y〔单位:
卡/克〕与水泥中4种化学成分所占的百分比相关:
x1:
3Cao
Al2o3
x2
:
3Cao
Sio2
x3
:
4Cao
Al2o3Fe2o3
x4
:
2Cao
Sio2
优秀文档
合用标准文案
在生产中测得
13组数据:
序号
X1
X2
X3
X4
Y
1
7
26
6
60
2
1
29
15
52
3
11
56
8
20
4
11
31
8
47
5
7
52
6
33
6
11
55
9
22
7
3
71
17
6
8
1
31
22
44
9
2
54
18
22
10
21
47
4
26
11
1
40
23
34
12
11
66
9
12
13
10
68
8
12
求出关系式YfX。
解:
〔1〕本问题涉及的数据是5维的,不能够画图观察。
先做异常值解析。
X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;7,52,6,33;11,55,9,22;3,
71,17,6;1,31,22,44;2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;10,68,
8,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]';
A=[X,Y];
mahal(A,A)
程序执行后获取结果:
ans=
能够认为数据都是正常的。
〔2〕一般多元回归。
在Matlab软件包中写一个M—文件opt_cement_1:
X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;
7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44;
优秀文档
合用标准文案
2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;
10,68,8,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]';
a1=ones(13,1);
A=[a1,X];
[b,bint,r,rint,stat]=regress(Y,A)
rcoplot(r,rint)
程序执行后获取:
b=
bint=
r=
rint=
优秀文档
合用标准文案
stat=
以及残差杠杆图:
于是,我们获取:
Y62.40541.5511x10.5102x20.1019x30.1441x4
并且,残差杠杆图显示,残差均匀分布在0点线周边,在stat返回的4个值中,
R2=,说明模型拟合的很好。
F_检验值=111.4792>0.000,吻合要求。
但是,与明显性概率相关的p值=,这说明,回归方程中有些变量能够剔除。
(3〕渐渐回归
在Matlab软件包中写一个M—文件opt_cement_2:
X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;
7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44;
2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;
10,68,8,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]';
stepwise(X,Y)
程序执行后获取以下渐渐回归的画面:
优秀文档
合用标准文案
CoefficientswithErrorBars
Coeff.t-statp-val
X1
X2
X3
X4
-3
-2
-1
0
1
2
3
ModelHistory
17
E16
SM
R15
14
1
Movex4
in
程序提示:
将变量x4加进回归方程〔Movex4in〕,点击NextStep按钮,即,进行下一步运算,将第4列数据对应的变量x4参加回归方程。
点击NextStep按健后,又获取提示:
将变量x1加进回归方程〔Movex1in〕,点击NextStep
按钮,即,进行下一步运算,将第1列数据对应的变量x1参加回归方程。
点击
NextStep按健后,又获取提示:
MoveNoterms,即,没有需要参加〔也没有需要剔除〕的变量了。
注意:
在Matlab7.0软件包中,能够直接点击“AllSteps〞按钮,直接求出结果〔省略中间过程〕。
CoefficientswithErrorBars
Coeff.t-statp-val
X1
X2
X3
intercept
X4
-1
0
1
2
ModelHistory
20
E
S
M10
R
0
123
最后获取回归方程〔蓝色行是被保存的有效行,红色行表示被剔除的变量〕:
优秀文档
合用标准文案
Y
103
097
1
.
43996
x1
0613954
x4
.
.
回归方程中录取了原始变量
x1和x4。
模型评估参数分别为:
2
,修正的
2
值R2
0
.
964212
,
检验值=
,与明显性
R0.972471
R
F_
概率相关的p值=1.58106
108
0.05,残差均方RMSE=〔这个值越
小越好〕。
以上指标值都很好,说明回归收效比较理想。
别的,截距intercept=103.097〔Intercept=theestimatedvalueoftheconstantterm〕,这就是回归方程的常数项。
我们将x1,x4,y的数据放在一起画图观察:
X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44;2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;10,68,8,12];
;
plot3(X(:
1),X(:
4),Y)
程序执行后获取图形:
10
0
-10
-20
-30
60
50
40
30
20
10
15
10
5
0
20
不断旋转画面观察,图形大体是一个平面。
优秀文档