多元回归分析报告matlab.docx
《多元回归分析报告matlab.docx》由会员分享,可在线阅读,更多相关《多元回归分析报告matlab.docx(14页珍藏版)》请在冰豆网上搜索。
多元回归分析报告matlab
回归分析MATLAB工具箱
一、多元线性回归
多元线性回归:
1、确定回归系数的点估计值:
命令为:
b=regress(Y,X)
①b表示
②Y表示
③X表示
2、求回归系数的点估计和区间估计、并检验回归模型:
命令为:
[b,bint,r,rint,stats]=regress(Y,X,alpha)
①bint表示回归系数的区间估计.
②r表示残差.
③rint表示置信区间.
④stats表示用于检验回归模型的统计量,有三个数值:
相关系数r2、F值、与F对应的概率p.
说明:
相关系数
越接近1,说明回归方程越显著;
时拒绝
F越大,说明回归方程越显著;与F对应的概率p
时拒绝H0,回归模型成立.
⑤alpha表示显著性水平(缺省时为0.05)
3、画出残差及其置信区间.
命令为:
rcoplot(r,rint)
例1.如下程序.
解:
(1)输入数据.
x=[143145146147149150153154155156157158159160162164]';
X=[ones(16,1)x];
Y=[8885889192939395969897969899100102]';
(2)回归分析及检验.
[b,bint,r,rint,stats]=regress(Y,X)
b,bint,stats
得结果:
b=bint=
-16.0730-33.70711.5612
0.71940.60470.8340
stats=
0.9282.95310.0000
即
;
的置信区间为[-33.7017,1.5612],
的置信区间为[0.6047,0.834];r2=0.9282,F=180.9531,p=0.0000,我们知道p<0.05就符合条件,可知回归模型y=-16.+0.7194x成立.
(3)残差分析,作残差图.
rcoplot(r,rint)
从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型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
t(s)
8/30
9/30
10/30
11/30
12/30
13/30
14/30
s(cm)
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)
得回归模型为:
解法二:
化为多元线性回归.
t=1/30:
1/30:
14/30;
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,'k+',t,Y,'r')
(二)多元二项式回归
多元二项式回归命令:
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
100
110
60
收入
1000
600
1200
500
300
400
1300
1100
1300
300
价格
5
7
6
6
8
7
5
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'x2'(x1.^2)'(x2.^2)'];
[b,bint,r,rint,stats]=regress(y,X);
b,stats
结果为:
b=
110.5313
0.1464
-26.5709
-0.0001
1.8475
stats=
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)运行结果:
beta=
11.6036
-1.0641
即得回归模型为:
(5)预测及作图:
[YY,delta]=nlpredci('volum',x',beta,r,J);
plot(x,y,'k+',x,YY,'r')
四、逐步回归
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
3
4
5
6
7
8
9
10
11
12
13
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
解:
(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:
n
ifi<=j
X22=([X22,X11(:
i).*X11(:
j)]);
else
continue
end
end
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
23
38.12
1.8488
6.22
12.22
19.72
1.8488
5.19
10.09
15.31
X11=
1 60.366 26.164 0.99123 59.374
1 59.538 26.358 0.99494 58.543
1 58.899 26.824 0.98132 57.917
1 58.747 26.915 0.98374 57.693
1 60.594 25.903 1.0119 59.582
1 60.366 25.964 0.99123 59.374
1 59.2 27.193 1.0748 57.767
1 58.2 27.422 1.1077 57.424
1 60.366 26.164 0.99123 59.374
1 59.971 26.072 0.9179 59.
1 59.419 26.587 1.0604 58.359
1 58.891 27.061 1.1239 57.767
B1=
1488.9
-4.3582
-9.6345
-61.514
-15.359
m=
12
n=
5
B2=
0
3120.4
-7129.2
0
0
-622.23
-362.71
-105.06
1388.1
120.25
.25
379.58
170.48
0
-796.41
ans=
1.841 1.8449 -0.003902
9.67 9.67 1.0058e-009
23 23 1.397e-009
38.12 38.12 3.539e-
1.8488 1.8488 1.6394e-009
6.22 6.22 7.2643e-
12.22 12.22 2.6077e-
19.72 19.72-2.0489e-
1.8488 1.8449 0.003902
5.19 5.19 1.4529e-009
10.09 10.09 1.0803e-009
15.31 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