多元回归分析报告matlabWord格式.docx
《多元回归分析报告matlabWord格式.docx》由会员分享,可在线阅读,更多相关《多元回归分析报告matlabWord格式.docx(14页珍藏版)》请在冰点文库上搜索。
![多元回归分析报告matlabWord格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/8d67fb17-fb1c-4c8b-b9b9-dd0828a97f18/8d67fb17-fb1c-4c8b-b9b9-dd0828a97f181.gif)
0.05就符合条件,可知回归模型y=-16.+0.7194x成立.
(3)残差分析,作残差图.
从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型y=-16.+0.7194x能较好的符合原始数据,而第二个数据可视为异常点.
(4)预测及作图.
z=b
(1)+b
(2)*x
plot(x,Y,'
k+'
x,z,'
r'
)
二、多项式回归
(一)一元多项式回归.
1、一元多项式回归:
(1)确定多项式系数的命令:
[p,S]=polyfit(x,y,m)
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)
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.
例1.观测物体降落的距离s与时间t的关系,得到数据如下表,求s.(关于t的回归方程
t(s)
1/30
2/30
3/30
4/30
5/30
6/30
7/30
s(cm)
11.86
15.67
20.60
26.69
33.71
41.93
51.13
8/30
9/30
10/30
11/30
12/30
13/30
14/30
61.49
72.90
85.44
99.08
113.77
129.54
146.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)
得回归模型为:
解法二:
化为多元线性回归.
s=[11.8615.6720.6026.6933.7141.9351.1361.4972.9085.4499.08113.77129.54146.48];
T=[ones(14,1)t'
(t.^2)'
];
[b,bint,r,rint,stats]=regress(s'
T);
b,stats
预测及作图:
Y=polyconf(p,t,S)
plot(t,s,'
t,Y,'
(二)多元二项式回归
多元二项式回归命令:
rstool(x,y,’model’,alpha)
x表示nm矩阵;
Y表示n维列向量;
alpha:
显著性水平(缺省时为0.05);
model表示由下列4个模型中选择1个(用字符串输入,缺省时为线性模型):
linear(线性):
purequadratic(纯二次):
interaction(交叉):
quadratic(完全二次):
例1.设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为1000、价格为6时的商品需求量.
需求量
100
75
80
70
50
65
90
110
60
收入
1000
600
1200
500
300
400
1300
1100
价格
5
7
6
8
4
3
9
选择纯二次模型,即
.
直接用多元二项式回归:
x1=[10006001200500300400130011001300300];
x2=[5766875439];
y=[10075807050659010011060]'
x=[x1'
x2'
rstool(x,y,'
purequadratic'
在左边图形下方的方框中输入1000,右边图形下方的方框中输入6,则画面左边的“PredictedY”下方的数据变为88.47981,即预测出平均收入为1000、价格为6时的商品需求量为88.4791.
在画面左下方的下拉式菜单中选”all”,则beta、rmse和residuals都传送到Matlab工作区中.
在Matlab工作区中输入命令:
beta,rmse
beta=
110.5313
0.1464
-26.5709
-0.0001
1.8475
rmse=
4.5362
故回归模型为:
剩余标准差为4.5362,说明此回归模型的显著性较好.
将
化为多元线性回归:
X=[ones(10,1)x1'
(x1.^2)'
(x2.^2)'
[b,bint,r,rint,stats]=regress(y,X);
结果为:
b=
0.970240.66560.0005
三、非线性回归
1、非线性回归:
(1)确定回归系数的命令:
[beta,r,J]=nlinfit(x,y,’model’,beta0)
beta表示估计出的回归系数;
r表示残差;
J表示Jacobian矩阵;
x,y表示输入数据x、y分别为矩阵和n维列向量,对一元非线性回归,x为n维列向量;
model表示是事先用m-文件定义的非线性函数;
beta0表示回归系数的初值.
(2)非线性回归命令:
nlintool(x,y,’model’,beta0,alpha)
2、预测和预测误差估计:
[Y,DELTA]=nlpredci(’model’,x,beta,r,J)
表示nlinfit或nlintool所得的回归函数在x处的预测值Y及预测值的显著性为1-alpha的置信区间Y±
DELTA.
例1.如下程序.
(1)对将要拟合的非线性模型y=a
建立m-文件volum.m如下:
functionyhat=volum(beta,x)
yhat=beta
(1)*exp(beta
(2)./x);
(2)输入数据:
x=2:
16;
y=[6.428.209.589.59.7109.939.9910.4910.5910.6010.8010.6010.9010.76];
beta0=[82]'
(3)求回归系数:
[beta,r,J]=nlinfit(x'
y'
'
volum'
beta0);
beta
(4)运行结果:
11.6036
-1.0641
即得回归模型为:
(5)预测及作图:
[YY,delta]=nlpredci('
x'
beta,r,J);
plot(x,y,'
x,YY,'
四、逐步回归
1、逐步回归的命令:
stepwise(x,y,inmodel,alpha)
x表示自变量数据,
阶矩阵;
y表示因变量数据,
inmodel表示矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);
alpha表示显著性水平(缺省时为0.5).
2、运行stepwise命令时产生三个图形窗口:
StepwisePlot,StepwiseTable,StepwiseHistory.
在StepwisePlot窗口,显示出各项的回归系数及其置信区间.
(1)StepwiseTable窗口中列出了一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差(RMSE)、相关系数(R-square)、F值、与F对应的概率P.
例1.水泥凝固时放出的热量y与水泥中4种化学成分x1、x2、x3、x4有关,今测得一组数据如下,试用逐步回归法确定一个线性模型.
序号
1
2
10
11
12
13
x1
21
x2
26
29
56
31
52
55
71
54
47
40
66
68
x3
15
17
22
18
23
x4
20
33
44
34
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)数据输入:
x1=[7111117113122111110]'
x2=[26295631525571315447406668]'
x3=[615886917221842398]'
x4=[6052204733226442226341212]'
y=[78.574.3104.387.695.9109.2102.772.593.1115.983.8113.3109.4]'
x=[x1x2x3x4];
(2)逐步回归.
①先在初始模型中取全部自变量:
stepwise(x,y)
得图StepwisePlot和表StepwiseTable.
图StepwisePlot中四条直线都是虚线,说明模型的显著性不好.
从表StepwiseTable中看出变量x3和x4的显著性最差.
②在图StepwisePlot中点击直线3和直线4,移去变量x3和x4.
移去变量x3和x4后模型具有显著性
虽然剩余标准差(RMSE)没有太大的变化,但是统计量F的值明显增大,因此新的回归模型更好.
(3)对变量y和x1、x2作线性回归.
X=[ones(13,1)x1x2];
b=regress(y,X)
b=
52.5773
1.4683
0.6623
故最终模型为:
y=52.5773+1.4683x1+0.6623x2
或这种方法
4元二次线性回归
clc;
clear;
y=[1.84099
9.67
23.00
38.121.8487946.2212.2219.721.8487945.1910.0915.31];
X1=[60.3655859.537658.8986158.7470660.5938960.3655859.258.260.3655859.9706859.4191858.89077];
X2=[26.163626.3580426.8243826.9152125.9034625.963627.1925627.4215326.163626.0721226.5872127.06063];
X3=[0.9912270.9949440.9813220.983741.0118650.9912271.0747721.1076780.9912270.9179041.0604381.1239];
X4=[59.3743658.5426557.9172957.6933259.5820359.3743657.7672257.4235559.3743659.0527858.3587457.76687];
formatshortg
Y=y'
X11=[ones(1,length(y));
X1;
X2;
X3;
X4]'
B1=regress(Y,X11)%多元一次线性回归
[m,n]=size(X11)
X22=[];
fori=2:
n
forj=2:
ifi<
=j
X22=([X22,X11(:
i).*X11(:
j)]);
else
continue
end
X=[X11,X22];
B2=regress(Y,X)%多元二次线性回归
[YX*B2Y-X*B2]
plot(Y,X11*B1,'
o'
Y,X*B2,'
*'
holdon,line([min(y),max(y)],[min(y),max(y)])
axis([min(y)max(y)min(y)max(y)])
legend('
一次线性回归'
二次线性回归'
xlabel('
实际值'
);
ylabel('
计算值'
运行结果:
Y=
1.841
9.67
38.12
1.8488
6.22
12.22
19.72
5.19
10.09
15.31
X11=
1
60.366
26.164
0.99123
59.374
59.538
26.358
0.99494
58.543
58.899
26.824
0.98132
57.917
58.747
26.915
0.98374
57.693
60.594
25.903
1.0119
59.582
25.964
59.2
27.193
1.0748
57.767
58.2
27.422
1.1077
57.424
59.971
26.072
0.9179
59.
59.419
26.587
1.0604
58.359
58.891
27.061
1.1239
B1=
1488.9
-4.3582
-9.6345
-61.514
-15.359
m=
12
n=
B2=
3120.4
-7129.2
-622.23
-362.71
-105.06
1388.1
120.25
.25
379.58
170.48
-796.41
ans=
1.841
1.8449
-0.003902
1.0058e-009
23
1.397e-009
38.12
3.539e-
1.8488
1.6394e-009
6.22
7.2643e-
12.22
2.6077e-
19.72
19.72-2.0489e-
0.003902
5.19
1.4529e-009
10.09
1.0803e-009
15.31
4.0978e-
由图形可以看出,多元二次线性回归效果非常好,即,相当于
Y=3120.4*X1
-7129.2*X2+
0*X3+
0*X4
-622.23*X1*X1
-362.71*X1*X2
-105.06*X1*X3
+
1388.1*X1*X4
+120.25*X2*X2+
.25*X2*X3+
379.58*X2*X4+
170.48*X3*X3+
0*X3*X4
-796.41*X4*X4