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