Matlab多变量回归分析教程Word格式文档下载.docx
《Matlab多变量回归分析教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Matlab多变量回归分析教程Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
![Matlab多变量回归分析教程Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/07df3d37-1cf4-471f-b855-e1855b350d49/07df3d37-1cf4-471f-b855-e1855b350d491.gif)
(2)回归分析及检验
1.
[b,bint,r,rint,stats]=regress(Y,X)
2.
3.b=
4.
5.
-16.0730
6.
0.7194
7.
8.
9.bint=
10.
11.
-33.7071
1.5612
12.
0.6047
0.8340
13.
14.
15.r=
16.
17.
1.2056
18.
-3.2331
19.
-0.9524
20.
1.3282
21.
0.8895
22.
1.1702
23.
-0.9879
24.
0.2927
25.
0.5734
26.
1.8540
27.
0.1347
28.
-1.5847
29.
-0.3040
30.
-0.0234
31.
-0.4621
32.
0.0992
33.
34.
35.rint=
36.
37.
-1.2407
3.6520
38.
-5.0622
-1.4040
39.
-3.5894
1.6845
40.
-1.2895
3.9459
41.
-1.8519
3.6309
42.
-1.5552
3.8955
43.
-3.7713
1.7955
44.
-2.5473
3.1328
45.
-2.2471
3.3939
46.
-0.7540
4.4621
47.
-2.6814
2.9508
48.
-4.2188
1.0494
49.
-3.0710
2.4630
50.
-2.7661
2.7193
51.
-3.1133
2.1892
52.
-2.4640
2.6624
53.
54.
55.stats=
56.
57.
0.9282
180.9531
0.0000
1.7437
运行结果解读如下
参数回归结果为
,对应的置信区间分别为[-33.7017,1.5612]和[0.6047,0.834]
r2=0.9282(越接近于1,回归效果越显著),F=180.9531,p=0.0000,由p<
0.05,可知回归模型
y=-16.073+0.7194x成立
(3)残差分析作残差图
1.rcoplot(r,rint)
从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,
这说明回归模型y=-16.073+0.7194x能较好的符合原始数据,而第二个数据可视为异常点。
(4)预测及作图
1.z=b
(1)+b
(2)*x
2.plot(x,Y,'
k+'
x,z,'
r'
)
二、多项式回归
一元多项式回归
1、一元多项式回归函数
(1)[p,S]=polyfit(x,y,m)
确定多项式系数的MATLAB命令
x=(x1,x2,…,xn),y=(y1,y2,…,yn);
p=(a1,a2,…,am+1)是多项式y=a1xm+a2xm-1+…+amx+am+1的系数;
S是一个矩阵,
用来估计预测误差
(2)polytool(x,y,m)
调用多项式回归GUI界面,参数意义同polyfit
2、预测和预测误差估计
(1)Y=polyval(p,x)
求polyfit所得的回归多项式在x处的预测值Y
(2)[Y,DELTA]=polyconf(p,x,S,alpha)
求polyfit所得的回归多项式在x处的预测值Y及预测值的显著
性为1-alpha的置信区间Y±
DELTA,alpha缺省时为0.5
3、实例演示说明
观测物体降落的距离s与时间t的关系,得到数据如下表,求s的表达式(即回归方程s=a+bt+ct2)
t(s)1/302/303/304/305/306/307/30
s(cm)11.8615.6720.6026.6933.7141.9351.13
t(s)8/309/3010/3011/3012/3013/3014/30
s(cm)61.4972.9085.4499.08113.77129.54146.48
解法一:
直接作二次多项式回归
t=1/30:
1/30:
14/30;
s=[11.8615.6720.6026.6933.7141.9351.1361.4972.9085.4499.08113.77129.54146.48];
[p,S]=polyfit(t,s,2)
5.p=
6.
7.
489.2946
65.8896
9.1329
9.
10.S=
11.
R:
[3x3double]
13.
df:
11
14.
normr:
0.1157
故回归模型为
解法二:
化为多元线性回归
T=[ones(14,1)t'
(t.^2)'
];
4.>
[b,bint,r,rint,stats]=regress(s'
T)
5.
6.b=
8.
9.
65.8896
10.
489.2946
12.
13.bint=
15.
9.0614
9.2044
16.
65.2316
66.5476
488.0146
490.5747
18.
19.
20.r=
21.
-0.0129
-0.0302
-0.0148
0.0732
0.0040
0.0474
-0.0165
-0.0078
-0.0363
-0.0222
0.0046
33.
-0.0059
34.
-0.0237
35.
0.0411
37.
38.rint=
39.
-0.0697
0.0439
-0.0956
0.0352
-0.0876
0.0580
0.0182
0.1283
-0.0709
0.0789
-0.0192
0.1139
-0.0894
0.0563
-0.0813
0.0658
-0.1062
0.0335
-0.0955
0.0511
-0.0704
0.0796
-0.0793
0.0675
-0.0904
0.0429
53.
-0.0088
0.0910
55.
56.stats=
57.
58.
1.0e+007*
59.
60.
1.0378
0
0.0000
故回归模型为:
预测及作图
1.Y=polyconf(p,t,S);
2.plot(t,s,'
t,Y,'
多元二项式回归
1、多元二项式回归Matlab命令
rstool(x,y,'
model'
alpha)
输入参数说明:
x:
n*m矩阵;
Y:
n维列向量;
alpha:
显著性水平(缺省时为0.05);
mode:
由下列4个模型中选择1个(用字符串输入,缺省时为线性模型)
2、实例演示说明
设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为1000、
价格为6时的商品需求量
需求量10075807050659010011060
收入1000600
1200500300400130011001300300
价格5766875439
选择纯二次模型
1.%直接用多元二项式回归如下
2.x1=[10006001200500300400130011001300300];
3.x2=[5766875439];
4.y=[10075807050659010011060]'
5.x=[x1'
x2'
6.rstool(x,y,'
purequadratic'
在x1对应的文本框中输入1000,X2中输入6,敲回车键,此时图形和相关数据会自动更新
此时在GUI左边的“PredictedY1”下方的数据变为88.47981,表示平均收入为1000、价格为6时商品需
求量为88.4791
点击左下角的Export按钮,将会导出回归的相关参数beta、rmse和residuals到工作空间(workspace)
在Export按钮下面可以选择回归类型
在Matlab命令窗口中输入
beta,rmse
将得到如下结果
1.beta=
2.
110.5313
3.
0.1464
4.
-26.5709
-0.0001
1.8475
rmse=
4.5362
将上面的模型转换为多元线性回归
X=[ones(10,1)x1'
(x1.^2)'
(x2.^2)'
[b,bint,r,rint,stats]=regress(y,X);
b,stats
5.b=
110.5313
-26.5709
-0.0001
14.stats=
15.
0.9702
40.6656
0.0005
20.5771
三、非线性回归
1、非线性回归
[beta,r,J]=nlinfit(x,y,'
modelfun'
beta0)
非线性回归系数的命令
nlintool(x,y,'
beta0,alpha)
非线性回归GUI界面
参数说明
beta:
估计出的回归系数;
r:
残差;
J:
Jacobian矩阵;
x,y:
输入数据x、y分别为矩阵和n维列向量,对一元非线性回归,x为n维列向量;
modelfun:
M函数、匿名函数或inline函数,定义的非线性回归函数;
beta0:
回归系数的初值;
[Y,DELTA]=nlpredci('
x,beta,r,J)
获取x处的预测值Y及预测值的显著性为1-alpha的置信区间Y±
DELTA
解:
(1)对将要拟合的非线性模型,建立M函数如下
1.functionyhat=modelfun(beta,x)
2.%beta是需要回归的参数
3.%x是提供的数据
4.yhat=beta
(1)*exp(beta
(2)./x);
(2)输入数据
1.x=2:
16;
2.y=[6.428.209.589.59.7109.939.9910.4910.5910.6010.8010.6010.9010.76];
3.beta0=[82]'
(3)求回归系数
1.[beta,r,J]=nlinfit(x'
y'
@modelfun,beta0);
2.beta
3.
4.beta=
11.6036
-1.0641
即得回归模型为
1.[YY,delta]=nlpredci('
x'
beta,r,J);
2.plot(x,y,'
x,YY,'
四、逐步回归
1、逐步回归的命令
stepwise(x,y,inmodel,alpha)
根据数据进行分步回归
stepwise
直接调出分步回归GUI界面
输入参数说明
自变量数据,阶矩阵;
y:
因变量数据,阶矩阵;
inmodel:
矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);
显著性水平(缺省时为0.5);
2、实例演示分析
水泥凝固时放出的热量y与水泥中4种化学成分x1、x2、x3、x4有关,今测得一组数据如下,试
用逐步回归法确定一个线性模型
序号
1
2
3
4
5
6
7
8
9
10
11
12
13
x1
21
10
x2
26
29
56
31
52
55
71
54
47
40
66
68
x3
6
15
17
22
18
23
8
x4
60
52
20
33
44
34
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
(1)数据输入
1.x1=[7111117113122111110]'
2.x2=[26295631525571315447406668]'
3.x3=[615886917221842398]'
4.x4=[6052204733226442226341212]'
5.y=[78.574.3104.387.695.9109.2102.772.593.1115.983.8113.3109.4]'
6.x=[x1x2x3x4];
(2)逐步回归
①先在初始模型中取全部自变量
1.stepwise(x,y)