1、实验十七 回归分析一 实验目的 学习用MATLAB求解一元线性回归问题.学会正确使用命令Regress,并从输出表中读懂线性回归模型中各参数的估计,回归方程,线性假设的显著性检验结果,因变量Y在观察点的预测区间等. 二 实验准备1. 多元线性回归的数学模型为 ,其中 ,为参数,记 ,残差的每一分量定义为 ,.残差平方和,最小二乘估计就是选择参数使残差平方和最小.称为总的偏差平方和; 称为回归平方和;可以证明平方和的分解公式: .决定系数是反映模型是否有效的指标之一.,越接近于1,模型的有效性越好.,是检验的检验统计量,在F的值偏大时拒绝.是回归模型中的无偏估计.一元线性回归是多元线性回归的特例
2、,只要令.2. 一元线性回归模型中个值的预测区间当被拒绝,即判断模型有效后,就可以从自变量的一个给定值预测因变量的理论值,预测值实际上是一个点估计,记作.显然可取 (1)这里的有如下的统计意义:是无偏估计,即.在给定显著性水平下,预测区间(时,有95的可能落在此区间)为 (2)其中 ,.虽然这个结果比较复杂,但是当很大且接近时,可以忽视上式根号内的后两项,且接近于的分位数,上述预测区间简化为 (3)如果因为或的置信区间包含零点而接受,那也只是说明与之间没有合适的线性模型,但是两者之间可能存在其它关系.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是残差(列向量),rin
4、t是残差的置信区间,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
5、,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.110.513.815.711.910.415.016.017.8体积(立方分米)16.71
6、0.413.515.711.610.214.515.817.6重量 (千克)15.815.112.118.417.116.716.515.115.1体积(立方分米)15.214.811.918.316.716.615.915.114.5(1)画出散点图. (2)求关于的线性回归方程, 并作回归分析. (3)求=14.0时的置信水平为0.95的预测区间.解 (1) 输入数据, 并输入作散点图命令x=17.1 10.5 13.8 15.7 11.9 10.4 15.0 16.0 17.8 15.8 15.1 12.1 18.4 17.1 16.7 16.5 15.1 15.1; %输入自变量x的观
7、察值y=16.7 10.4 13.5 15.7 11.6 10.2 14.5 15.8 17.6 15.2 14.8 11.9 18.3 16.7 16.6 15.9 15.1 14.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,srcoplot(r,rint) %残差及其置信区间作图执行后得到输出结果:b =-0.10400.9881bint =-0.765
8、5 0.55740.9445 1.0316s =1.0e+003 * 0.0010 2.3119 0这个结果可整理如表17.2表17.2 例1(重量与体积)的计算结果回归系数回归系数估计值回归系数置信区间-0.1040-0.7655,0.55740.98810.9445,1.0316 一元回归方程为;从几个方面都可以检验模型是有效的:F检验的P-值接近于零;的置信区间不含零点;用MATLAB命令finv(0.95,1,16)计算得到.残差及置信区间如图17.2图17.2(3)将上面的回归系数估计值代入回归方程,对重量为14.0kg的儿童的体积(个值)进行预测,得在下,体积预测区间简化为 ,输入
9、计算指令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.3333t2=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.我们希望用这组数据确定血压与年
10、龄(岁)的关系,并且由此从年龄预测血压可能的变化范围,回答“平均说来60岁比50岁的人血压高多少”的问题.表17.3 30个人的血压与年龄序号血压年龄序号血压年龄序号血压年龄114439111626421136362215471215056221425031384513140592312039414547141103424120215162651512842251604461424616130482615853717067171354527144638124421811418281302991586719116202912525101545620124193017569分析 记血压(因变量),
11、年龄(自变量)表17.3的数据为用MATLAB将它们作图,如图17.3.从图形直观地看,与大致呈线性关系,即根据试验数据从统计推断的角度讨论,的置信区间和假设检验,进而对任意的年龄给出的预测区间,属于一元线性回归分析.图17.3 血压与年龄的散点图 MATLAB编程如下:y=144 215 138 145 162 142 170 124 158 154 162 150 140 110 128 130 135 114 116 124 136 142 120 120 160 158 144 130 125 175;x=39 47 45 47 65 46 67 42 67 56 64 56 59 3
12、4 42 48 45 18 20 19 36 50 39 21 44 53 63 29 25 69;n=30;X=ones(n,1),x; % 1与自变量组成的输入矩阵b,bint,r,rint,s=regress(y,X);plot(x,y,*) % 血压与年龄的散点图b,bint,srcoplot(r,rint) % 残差及其置信区间作图b = 98.4084 0.9732bint = 78.7484 118.0683 0.5601 1.3864s = 0.4540 23.2834 0.0000 这个结果可以整理如表17.4表17.4 年龄与血压的计算结果回归系数回归系数估计值回归系数置信
13、区间98.408478.7484 118.06830.97320.5601 1.3864 从几个方面都可以检验模型是有效的:F检验的P-值接近于零;的置信区间不含零点;用MATLAB命令finv(0.95,1,28)计算得到但是的置信区间较长,较小,说明模型精度不高.残差及置信区间如图17.4,图中第二个点残差的置信区间不包括零点,可以认为这个数据是异常的(残差应服从均值为0的正态分布),它偏离数据整体的变化趋势,给模型的有效性和精度带来不利的影响,称异常点或离群点,应予以剔除.将原始数据中的第二个剔除后重新计算得到表17.5表17.5 剔除第二个数据后的计算结果回归系数回归系数估计值回归系数置信区间96.866585.4771 108.25590.95330.7140 1.1925 可以看
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1