第三讲 MATLAB预测(1)回归分析讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14/30 146.48
方法一 直接作二次多项式回归: t=1/30:1/30:14/30; s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];
[p,S]=polyfit(t,s,2) 得回归模型为 :
sˆ 489.2946t2 65.8896t 9.1329
方法二 化为多元线性回归: t=1/30:1/30:14/30; s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48]; T=[ones(14,1) t‘ (t.^2)']; [b,bint,r,rint,stats]=regress(s',T); b,stats
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
但是由于β1的置信区间过长,R2较小,说明模型的精度不 高!
8
残差图如图所示:
图中第二个点的残差置信区间中不包含0点,由于残差服从均值为0的正 态分布,因此可以认为这个点为异常数据,偏离数据整体的变化范围, 应该剔除,重新进行回归分析!! 残差与残差区间杠杆图,最好在0点线附近比较均匀的分布,而不呈现一 定的规律性,如果是这样,就说明回归分析做得比较理想。
b
ˆ 0 ˆ1
.ˆ.p.
Y1
Y
Y2
...
Yn
1 x11 x12 ... x1p
X
1 ...
x21 ...
x22 ...
...
x2
p
... ...
1
xn1
xn2
...
xnp
对一元线性回归,取 p=1 即可
回归系数估计值 回归系数置信区间
98.4084
[74.7484, 118.0683]
0.9732
[0.5601 1.3864]
F=23.2834 p<0.001 s2=273.7137
从以下几点可以看出模型是有效的:参数的置信区间不含0 点;p小于显著性水平;用Matlab可以求出F1-α(1,n-2)=4.1960,显 然小于F值。
4 145 47 24.0 1 14 110 34 20.1 0 24 120 21 20.3 0
5 162 65 25.9 1 15 128 42 21.7 0 25 160 44 27.1 1
6 142 46 25.1 0 16 130 48 22Baidu Nhomakorabea2 1 26 158 53 28.6 1
7 170 67 29.5 1 17 135 45 27.4 0 27 144 63 28.3 0
0.05
( 缺 省显 时著 为性
水 平
)
F F1 (k, n k 1) 时,F 越大,说明回归方程越显著;
与 F 对应的概率 p 时回归模型成立,否则,则说明回归方程中 有多余的自变量,可以将这些多余的自变量从回归方程中剔除
3、画出残差及其置信区间: rcoplot(r,rint) 6
2、求回归系数的点估计和区间估计、并检验回归模型: [b, bint,r,rint,stats]=regress(Y,X,alpha)
回 归 系 数
置
残
信
差
区
间
的
用于检验回归模型的统计量,
区 间 估
有三个数值:R2、F值、与F 对应的概率p、以及残差的方
计
差的估计值
R2 越接近 1,说明回归方程越显著;
先来看两个例子:
问题1 (血压与年龄)
为了了解血压随着年龄的增长而升高的关系,调查了30个成年人的血压, 如表所示,我们希望用这组数确定血压与年龄之间的关系,并且由此从年 龄预测血压可能的变化范围。
表1
序号
血压
年龄
序号
血压
年龄
序号
血压
年龄
1
144
39
11
162
64
21
136
36
2
215
47
12
150
8 124 42 19.7 0 18 114 18 18.8 0 28 130 29 22.0 1
9 158 67 27.2 1 19 116 20 22.6 0 29 125 25 25.3 0
10 154 56 19.3 0 20 124 19 21.5 0 30 175 69 27.4 1
3
模型:记血压为 y ,年龄为 x1 ,体重指数为 x2 ,吸烟习惯为 x3 , 用Matlab将 y 与 x2 的数据做散点图,看出大致也呈线性关系,建立 模型:
11
回归系数 0 1 2 3 R2=0.8462
回归系数估计值 回归系数置信区间
58.5101
[29.9064 87.1138]
04303
[0.1273 0.7332]
2.3449
[0.8509 3.8389]
10.3065
[3.3878 17.2253]
F=44.0087 p<0.0001 s2=53.6604
问题1的求解:
y=[……];
x=[……];
n=……; X=[ones(n,1),x’]; [b,bint,r,rint,s]=regress(y’,X); b, bint, s, rcoplot(r,rint)
输出结果为:
b=
bint =
98.4084 78.7484 118.0683
0.9732 0.5601 1.3864
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) s (cm)
8/30 61.49
9/30 72.90
10/30 85.44
11/30 99.08
12/30 113.77
13/30 129.54
吸烟 习惯
序号
血压
年龄
体重 指数
吸烟 习惯
1 144 39 24.2 0 11 162 64 28.0 1 21 136 36 25.0 0
2 215 47 31.1 1 12 150 56 25.8 0 22 142 50 26.2 1
3 138 45 22.6 0 13 140 59 27.3 0 23 120 39 23.5 0
%已知的因变量数组 %已知的自变量数组 %已知的数据容量 %1与自变量组成的输入矩阵 %回归分析程序(显著性水平为0.05) %输出回归系数及其置信区间和统计量 %残差及其置信区间作图
s= 0.4540 23.2834 0.0000 273.7137
7
结果整理为下表:
回归系数 0 1 R2=0.4540
9
剔除第二个点后得到的结果:
回归系数 0 1 R2=0.7123
回归系数估计值 回归系数置信区间
96.8665
[85.4771, 108.2559]
0.9533
[0.7140, 1.1925]
F=66.8358 p<0.0001 s2=91.4305
对50岁的人血压进行预测,得到结果为:
yˆ0 ˆ0 ˆ1x0 96.8665 0.9533x0 144.5298
1 j k m
quadratic(完全二次): y 0 1 x1 m xm jk x j xk
1 j,k m
例2 设某商品的需求量与消费者的平均收入、商品价格的统计数
据如下,建立回归模型,预测平均收入为1000、价格为6时
的商品需求量.
需求量 100 75
y 0 1x1 2 x2 3x3 由数据估计系数 0,2,3,4 ,也可看做曲面拟合(其实为 超平面)
4
第三讲 MATLAB预测方法(1)回归分析
多元线性回归
y 0 1x1 ... p x p
1、确定回归系数的点估计值:
b=regress( Y, X )
其中 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;
根据预测区间 [
yˆ0
u1
s,
yˆ0
u
1
s]
,可以得到其置信度为0.95
2
2
的置信区间为:[125.7887,163.2708].
10
同样方法做问题二 第一次做多元回归结果:
回归系数 0 1 2 3 R2=0.6855
回归系数估计值 回归系数置信区间
45.3636 0.3604
[3.5537 87.1736] [-0.0758 0.7965]
3.0906
[1.0530 5.1281]
11.8246
[-0.1482 23.7973]
F=18.8906 p<0.0001 s2=169.7917
通过残差分析图可以得到第2个点和第10个点为异常点,删除后重 新进行回归分析,可以得到下面表:
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
方法一 选择纯二次模型,即 y 0 1x1 2 x2 11x12 22 x22
直接用多元二项式回归: x1=[1000 600 1200 500 300 400 1300 1100 1300 300]; x2=[5 7 6 6 8 7 5 4 3 9]; y=[100 75 80 70 50 65 90 100 110 60]'; x=[x1' x2']; rstool(x,y,'purequadratic')
154
56
20
124
19
30
175
69
模型:记血压为y,年龄为x,可以做出如上图所示的散点图,从图形 上直观的可以看出,y与x大致呈线性关系,即有:
y 0 1x 需要由数据确定系数 0 , 1 的估计值 ˆ0, ˆ1 。 此函数为一元线性函数!!
2
问题2 (血压与年龄,体重指数,吸烟习惯)
由下列 4 个模型中选择 1 个(用字符串输入,缺省时为线性模型):
linear(线性): y 0 1 x1 m xm
purequadratic(纯二次):
y 0 1 x1 m xm
n
jj
x
2 j
j 1
interaction(交叉): y 0 1 x1 m xm jk x j xk
世界卫生组织颁布的“体重指数”的定义是体重(kg)除以身高(m)的平 方,下表给出了30个人的体重指数等数据,其中,0表示不吸烟,1表示吸 烟,怎么考虑吸烟这个因素,此因素对于血压升高有影响吗,并对体重指 数为25,50岁的吸烟者的血压做出预测。
表2
序号
血压
年龄
体重 指数
吸烟 习惯
序号
血压
年龄
体重 指数
(2)[Y,DELTA]=polyconf(p,x,S,alpha)求polyfit所得的回 归多项式在x处的预测值Y及预测值的显著性为 1-alpha的置信区间Y DELTA;alpha缺省时为0.05
例 1 观测物体降落的距离 s 与时间 t 的关系,得到数据如下表, 求 s 关于 t 的回归方程 sˆ a bt ct 2 .
得回归模型为 :
sˆ 9.1329 65.8896t 489.2946t 2
预测及作图
Y=polyconf(p,t,S) plot(t,s,'k+',t,Y,'r')
(二)多元二项式回归 命令:rstool(x,y,’model’, alpha)
nm矩阵
n维列向量
显著性水平 (缺省时为0.05)
用上面的参数通过计算可以得到:
50岁,体重指数为25,吸烟的人的血压预测为:148.9525 置信度为0.95的置信区间为:[134.5951,163.3099]
12
多项式回归
(一)一元多项式回归 1、回归:
y=a1xm+a2xm-1+…+amx+am+1
(1)确定多项式系数的命令:[p,S]=polyfit(x,y,m)