17实验十七--回归分析.doc
《17实验十七--回归分析.doc》由会员分享,可在线阅读,更多相关《17实验十七--回归分析.doc(14页珍藏版)》请在冰豆网上搜索。
实验十七回归分析
一实验目的
学习用MATLAB求解一元线性回归问题.学会正确使用命令Regress,并从输出表中读懂线性回归模型中各参数的估计,回归方程,线性假设的显著性检验结果,因变量Y在观察点的预测区间等.
二实验准备
1.多元线性回归的数学模型为
,其中,,,
为参数,记,残差的每一分量定义为,.
残差平方和,最小二乘估计就是选择参数使残差平方和最小.
称为总的偏差平方和;称为回归平方和;
可以证明平方和的分解公式:
.
决定系数是反映模型是否有效的指标之一.,越接近于1,模型的有效性越好.
,是检验的检验统计量,在F的值偏大时拒绝.
是回归模型中的无偏估计.
一元线性回归是多元线性回归的特例,只要令.
2.一元线性回归模型中个值的预测区间
当被拒绝,即判断模型有效后,就可以从自变量的一个给定值预测因变量的理论值,预测值实际上是一个点估计,记作.显然可取
(1)
这里的有如下的统计意义:
是无偏估计,即.在给定显著性水平下,预测区间(时,有95%的可能落在此区间)为
(2)
其中,.虽然这个结果比较复杂,但是当很大且接近时,可以忽视上式根号内的后两项,且接近于的分位数,上述预测区间简化为
(3)
如果因为或的置信区间包含零点而接受,那也只是说明与之间没有合适的线性模型,但是两者之间可能存在其它关系.
3.多元线性回归模型中个值的预测区间
当模型通过有效性检验后,可由自变量的任一给定值预测因变量的理论值,记作,显然
(4)
在给定显著性水平下的预测区间为
,(5)
其中.当很大且接近时,上述预测区间也可简化为
(6)
三学习MATLAB命令
1.MATLAB用于一元或多元线性回归的命令是regress,其格式为
b=regress(y,X)%简单形式
[b,bint,r,rint,stats]=regress(y,X,alpha)%完整形式
输入参数及意义:
因变量y(列向量),矩阵X(n行p+1列,左边第一列为1,这时回归模型中有常数项),alpha是显著性水平(默认时设定为0.05).
输出参数及意义:
为p+1个模型参数的最小二乘估计,bint是参数的置信区间,r是残差(列向量),rint是残差的置信区间,stats包含4个统计量:
第1个是决定系数;第2个是作回归方程的显著性检验的统计量的值;第3个是分布大于F值的概率(检验的P-值),时拒绝,回归模型有效;第4个是(剩余方差,MATLAB7.0以前版本没有第4个统计量,可由sum(r.^2)/(n-p-1)计算.
2.多项式回归命令polyfit,其格式是
a=polyfit(x,y,m)
输入参数及意义:
x,y是要拟合的数据组(长度相同的向量),m为拟合多项式的次数.
输出a为拟合多项式
的系数(降幂排列),注意:
顺序与regress的输出相反.
下面的命令常与polyfit连用,计算上述多项式在x处的值y:
y=polyval(a,x)
3.非线性回归命令nlinfit,其格式是
[b,R,J]=nlinfit(x,y,’model’,b0)
输入参数及意义:
x是自变量数据矩阵,每列一个变量;y是因变量数据向量;model是模型的函数名(M文件或inline形式的函数),形式为,b为参数,b0为参数迭代初始值.
输出参数及意义:
b是参数的估计值;R是残差,J返回用于估计预测误差的Jacobi矩阵.
四实验内容
1.一元线性回归
例1表17.1列出了18个5-8岁儿童的重量(这是容易测得的)和体积(这是难以测量的).
表17.1
重量(千克)
17.1
10.5
13.8
15.7
11.9
10.4
15.0
16.0
17.8
体积(立方分米)
16.7
10.4
13.5
15.7
11.6
10.2
14.5
15.8
17.6
重量(千克)
15.8
15.1
12.1
18.4
17.1
16.7
16.5
15.1
15.1
体积(立方分米)
15.2
14.8
11.9
18.3
16.7
16.6
15.9
15.1
14.5
(1)画出散点图.
(2)求关于的线性回归方程,并作回归分析.(3)求=14.0时的置信水平为0.95的预测区间.
解
(1)输入数据,并输入作散点图命令
x=[17.110.513.815.711.910.415.016.017.815.815.112.118.417.116.716.515.115.1];%输入自变量x的观察值
y=[16.710.413.515.711.610.214.515.817.615.214.811.918.316.716.615.915.114.5];%输入因变量y的观察值
plot(x,y,'*')%作散点图
输出结果是图17.1
图17.1
(2)作一元回归分析,输入
n=length(y);
X=[ones(n,1),x'];%1与自变量X组成的输入矩阵
[b,bint,r,rint,s]=regress(y',X);
b,bint,s
rcoplot(r,rint)%残差及其置信区间作图
执行后得到输出结果:
b=
-0.1040
0.9881
bint=
-0.76550.5574
0.94451.0316
s=
1.0e+003*
0.00102.31190
这个结果可整理如表17.2
表17.2例1(重量与体积)的计算结果
回归系数
回归系数估计值
回归系数置信区间
-0.1040
[-0.7655,0.5574]
0.9881
[0.9445,1.0316]
一元回归方程为
;
从几个方面都可以检验模型是有效的:
F检验的P-值接近于零;的置信区间不含零点;;用MATLAB命令finv(0.95,1,16)计算得到.
残差及置信区间如图17.2
图17.2
(3)将上面的回归系数估计值代入回归方程,对重量为14.0kg的儿童的体积(个值)进行预测,得
在下,体积预测区间简化为,输入计算指令
t1=13.7287-norminv(0.975,0,1)*sqrt(sum(r.^2)/16)
t2=13.7287+norminv(0.975,0,1)*sqrt(sum(r.^2)/16)
输出
t1=13.3333
t2=14.1241
即14.0kg的儿童的体积(个值)的置信度为0.95的预测区间为[13.3340,14.1248].也可以用命令
polytool(x,y,1,0.05)
作出散点图及拟合直线,并对x=14.0时的y进行预报(输出结果略,详见例4).
例2为了了解血压随年龄的增长而升高的关系,调查了30个成年人的血压(收缩压mmHg),如表17.3.我们希望用这组数据确定血压与年龄(岁)的关系,并且由此从年龄预测血压可能的变化范围,回答“平均说来60岁比50岁的人血压高多少”的问题.
表17.330个人的血压与年龄
序号
血压
年龄
序号
血压
年龄
序号
血压
年龄
1
144
39
11
162
64
21
136
36
2
215
47
12
150
56
22
142
50
3
138
45
13
140
59
23
120
39
4
145
47
14
110
34
24
120
21
5
162
65
15
128
42
25
160
44
6
142
46
16
130
48
26
158
53
7
170
67
17
135
45
27
144
63
8
124
42
18
114
18
28
130
29
9
158
67
19
116
20
29
125
25
10
154
56
20
124
19
30
175
69
分析记血压(因变量),年龄(自变量)表17.3的数据为用MATLAB将它们作图,如图17.3.从图形直观地看,与大致呈线性关系,即根据试验数据从统计推断的角度讨论,的置信区间和假设检验,进而对任意的年龄给出的预测区间,属于一元线性回归分析.
图17.3血压与年龄的散点图
MATLAB编程如下:
y=[144215138145162142170124158154162150140110128130135114116124136142120120160158144130125175];
x=[394745476546674267566456593442484518201936503921445363292569];
n=30;
X=[ones(n,1),x'];%1与自变量组成的输入矩阵
[b,bint,r,rint,s]=regress(y',X);
plot(x,y,'*')%血压与年龄的散点图
b,bint,s
rcoplot(r,rint)%残差及其置信区间作图
b=
98.4084
0.9732
bint=
78.7484118.0683
0.56011.3864
s=
0.454023.28340.0000
这个结果可以整理如表17.4
表17.4年龄与血压的计算结果
回归系数
回归系数估计值
回归系数置信区间
98.4084
[78.7484118.0683]
0.9732
[0.56011.3864]
从几个方面都可以检验模型是有效的:
F检验的P-值接近于零;的置信区间不含零点;;用MATLAB命令finv(0.95,1,28)计算得到但是的置信区间较长,较小,说明模型精度不高.
残差及置信区间如图17.4,图中第二个点残差的置信区间不包括零点,可以认为这个数据是异常的(残差应服从均值为0的正态分布),它偏离数据整体的变化趋势,给模型的有效性和精度带来不利的影响,称异常点或离群点,应予以剔除.
将原始数据中的第二个剔除后重新计算得到表17.5
表17.5剔除第二个数据后的计算结果
回归系数
回归系数估计值
回归系数置信区间
96.8665
[85.4771108.2559]
0.9533
[0.71401.1925]
可以看