《回归分析初步与计算机模.ppt》由会员分享,可在线阅读,更多相关《回归分析初步与计算机模.ppt(32页珍藏版)》请在三一办公上搜索。
1、第五讲 回归分析初步(上),内容:回归分析简言之就是用统计数据寻求变量 间相关关系的近似表达式的一种方法目的:学习回归分析的基本思想和方法,掌握 Matlab的线性/非线性回归分析函数要求:掌握Matlab回归分析方法,处理应用问题了解回归分析的基本思想和方法了解回归分析的基本类型和实现步骤掌握回归函数 regress rcoplot normplot nlinfit了解交互式回归分析工具箱 rstool nlintool,回归分析的基本思想和方法,在客观世界中普遍存在着变量之间的关系,变量之间的关系一般来说可分为确定性的与非确定性的两种。确定性关系是指变量之间可以用确定的函数关系来表达(插值
2、或拟合)。非确定性关系,例如人的身高和体重的关系、人的血压和年龄的关系、某产品的广告投入与销售额间的关系等,它们之间是有关联的,但又不能用普通函数来表示,我们称这类非确定性关系为相关关系。具有相关关系的变量在很多时候涉及到随机变量,虽然不具有确定的函数关系,但是可以借助函数关系来近似表示它们之间的统计规律,这种近似地表示它们之间的相关关系的函数被称为回归函数,对应的数学方法称为回归分析。,回归分析的基本思想和方法,回归分析是数学建模的有力工具,那么我们要建立回归函数的数学模型,一般需要以下步骤:1、采集一组包含自变量和因变量的数据;2、选定自变量与因变量之间的模型,利用数据 按照最小二乘准则计
3、算模型中的系数;3、利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;4、判断得到的模型是否适合于这组数据,诊断 有无不适合回归模型的异常数据;5、利用模型对因变量做出预测或解释。附注:在第2步中,选定自变量与因变量的模型时,一般是凭经验选取模型。回归分析主要包括一元线性回归,多元线性回归以及非线性回归,一元线性回归(linear regression),基于最小二乘的一元线性回归函数regress:Unary Linear Regression Analysis:b=regress(y,X)b,bint,r,rint,stats=regress(y,X,alpha)范例 为实
4、时地调整切削机床,需测定刀具的磨损程度,每隔一小时测量刀具的厚度得到以下的数据,试建立刀具厚度关于切削时间的回归模型,对模型和系数进行检验,预测15小时后刀具的厚度:,一元线性回归(linear regression),1、对原始数据进行观察,确定回归模型:x=0:1:10;y=30.6,29.1,28.4,28.1,28.0,27.7,27.5,27.2,27.0,26.8,26.5;plot(x,y,rs,linewidth,2);,从原始数据上看,可以建立一元线性回归模型:,一元线性回归(linear regression),2、线性回归函数regress相关参数的统计学意义:,其中,a
5、lpha表示显著性水平,缺省时为0.05;b为回归系数估计值,bint为回归系数的置信区间;r是残差,rint是残差的置信区间;stats是用于检验回归模型的统计量。统计量stats有三个数值:一是相关系数 R的平方(用于相关系数评价,R的绝对值间于0.81,越靠近1表明回归显著);二是统计量F(用于F检验法,F的值大于F1-a(v1,v2)表明回归显著);三是与F对应的概率P(Palpha表明回归显著,一般0.01P 0.05被认为是具有统计学意义,而0.001 P 0.01被认为具有高度统计学意义),一元线性回归(linear regression),3、计算回归模型各项系数并绘制时序残差
6、图:x=0:1:10;y=30.6,29.1,28.4,28.1,28.0,27.7,27.5,27.2,27.0,26.8,26.5;alpha=0.05;x=ones(length(x),1),x;y=y;b,bint,r,rint,stats=regress(y,x,alpha);%线性回归disp(回归系数b估计值:,num2str(b);disp(相关系数R绝对值:,num2str(sqrt(stats(1);%此值至少间于0.81,越接近1越显著disp(假设检验统计量F:,num2str(stats(2);%此值大于F分布查表值finv(0.95,1,9),越大于越显著disp(
7、统计量F对应概率P:,num2str(stats(3);%此值小于alpha(默认0.05),越小于越显著rcoplot(r,rint)%画出残差及其置信区间(时序残差图)fprintf(回归函数为 y=%.4f+%.4f*xn,b(1),b(2);,一元线性回归(linear regression),4、诊断并剔除不适合回归模型的异常数据:%为了方便多次回归,此处daoju.m已作适当改写,观察残差分布,发现第一个数据(0,30.6)残差的置信区间不包括零点,应视为异常点,将其剔除后,用剩余的数据点重新进行计算:再次计算,发现原始数据中的第二个数据(1,29.1)残差的置信区间也不包括零点,
8、仍将该点视为异常点,将其剔除,重新计算:,一元线性回归(linear regression),5、综合三种评价指数一时序残差图选定最佳回归:,最后一次回归的数据残差的置信区间全部包括零点,无异常点。对比分析:对比两次剔除异常点前后的变化,发现置信区间明显缩小,相关系数F平方和明显变大,表明异常点的剔除有利于更好的建立模型。,一元线性回归(linear regression),6、残差向量正态性的图形检验:目的是为了检验误差的正态性假设是否合理,常用的图形检验方法与三种:normplot qqplot hist,qqplot分位图,hist频度统计图,一元线性回归(linear regressi
9、on),7、利用回归模型对因变量做出预测或解释:代入最后一次回归系数估计值:28.8667-0.233333,对比采样点和回归模型,并预测15小时后刀具的厚度:xdata=0:1:10;ydata=30.6,29.1,28.4,28.1,28.0,27.7,27.5,27.2,27.0,26.8,26.5;plot(xdata,ydata,rs,linewidth,2);hold on;x=0:0.01:16;y=b(1)+b(2)*x;plot(x,y,b-,linewidth,2);y=b(1)+b(2)*15%ans=25.3667 即该切削机床15小时后的刀具厚度预测值为25.3667
10、 cm,多元线性回归(linear regression),基于最小二乘的多元线性回归函数regress:Multiple Linear Regression Analysis:b=regress(y,X)b,bint,r,rint,stats=regress(y,X,alpha)范例 现有23位病人对医院的服务工作进行综合打分(百分制),同时也调查病人的简单情况,项目包括,病人对医院服务工作的满意程度Y,病人的年龄X1,病情严重程度X2,病人忧虑程度X3,具体调查表格如下(参见p89-90,此处略),多元线性回归(linear regression),1、对原始数据进行观察,确定回归模型:l
11、oad hospital.mat%载入数据源subplot(1,3,1);plot(x(1,:),y,rs,linewidth,2);title(年龄vs评分);subplot(1,3,2);plot(x(2,:),y,gs,linewidth,2);title(病情vs评分);subplot(1,3,3);plot(x(3,:),y,bs,linewidth,2);title(忧虑vs评分);,由散点图分析知:自变量年龄、病情、忧虑与因变量评分呈显著线性关系,所以可以建立多元线性回归模型,多元线性回归(linear regression),2、利用数据按照最小二乘准则计算模型中的系数:,lo
12、ad hospital.mat%载入数据源alpha=0.05;x=ones(length(x),1),x;y=y;b,bint,r,rint,stats=regress(y,x,alpha);disp(回归系数b估计值:,num2str(b);disp(相关系数R绝对值:,num2str(sqrt(stats(1);disp(假设检验统计量F:,num2str(stats(2);%ffenbu(0.95,3,19)disp(统计量F对应概率P:,num2str(stats(3);rcoplot(r,rint)%画出残差及其置信区间(时序残差图)fprintf(回归函数为 y=%.4f+%.4
13、f*x1+%.4f*x2+%.4f*x3,b(1),b(2),b(3),b(4);,多元线性回归(linear regression),3、找出与数据拟合得最好的模型:经过对stats统计量和时序残差图的综合分析,回归显著,回归函数具有统计学意义,多元线性回归(linear regression),4、利用模型对因变量做出预测或解释:代入最后回归系数估计值:162.88-1.2103-0.66591-8.613,如果有一个新病人,其特征是年龄53,病情严重程度60,忧虑程度2.5,试预测该病人对医院服务工作的评分:x=1,53,60,2.5;y=x*by=37.2421即该病人对医院服务工作的
14、评分预测值为37.2421,多元线性回归(linear regression),5、利用rstool二次响应曲面交互工具分析预测区间:Statistics Toolbox/rstoolInteractive fitting and visualization of a response surfaceload hospital.mat%载入数据源x=x;y=y;rstool(x,y);%37.2421是预测值,14.7613,59.7229是预测区间,非线性回归(nonlinear regression),前面假定因变量和自变量之间的相关关系可以用线性方程来近似地反映,但是,在现实生活中,非线
15、性关系是大量存在的,在许多场合,非线性的回归函数比线性回归函数更能够正确地反映客观现象之间的相互联系。,非线性回归模型是回归函数关于未知参数具有非线性结构的回归模型,模型的拟合一般很困难。处理非线性回归的通行方法是,通过变量变换,将非线性回归转化为线性回归,然后用线性回归方法处理。,非线性回归(nonlinear regression),非线性回归通常需要猜测未知的初始值,然后反复迭代,每次迭代都会修正当前的估计值,直至算法收敛为止。但是,如果设定的参数初始值不当则计算难以收敛,无法求得正确结果(或陷入局部最优),在实际应用当中,对大多数用户来说,给出(猜出)恰当的初始值是件相当困难的事。,非
16、线性回归(nonlinear regression),非线性回归转化为线性回归(常用变量代换参考):1、双曲曲线y=1/(a+b/x)syms a b x;y=1/(a+b/x);f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regression),非线性回归转化为线性回归(常用变量代换参考):2、幂函数曲线syms a b x;y=a*xb;f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regression),非线性回归转化为线性回归(常用变量代换参考):3、指数曲线syms a b
17、x;y=a*exp(b*x);f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regression),非线性回归转化为线性回归(常用变量代换参考):4、倒指数曲线syms a b x;y=a*exp(b/x);f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regression),非线性回归转化为线性回归(常用变量代换参考):5、对数曲线syms a b x;y=a+b*log(x);f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regr
18、ession),非线性回归转化为线性回归(常用变量代换参考):6、S型曲线syms a b x;y=1/(a+b*exp(-x);f=subs(y,a,b,3,4);ezplot(f);grid;,非线性回归(nonlinear regression),非线性回归转化为线性回归(更多变量代换参考):,非线性回归(nonlinear regression),基于最小二乘的非线性回归函数nlinfit:Nonlinear Regression Analysis:beta=nlinfit(X,y,FUN,beta0)beta,r,J=nlinfit(X,y,FUN,beta0),范例 为研究三种化学
19、物质:氢、n-戊烷和异戊烷与某物质的反应速度Y(%)之间的关系,测得表7.2所示的数据,试建立非线性回归模型,并进行统计分析(参见p103,此处略),非线性回归(linear regression),方法一 利用已知经验回归函数(非线性)进行回归,假设由实际问题背景分析可以预先确定经验回归函数形式编写被调M函数文件reacfun.m内容如下:function yhat=reacfun(b,x)x1=x(:,1);x2=x(:,2);x3=x(:,3);yhat=(b(1)*x2-x3/b(5)./(1+b(2)*x1+b(3)*x2+b(4)*x3);导入数据并利用nlinfit进行非线性回归
20、:load reaction.mat%此数据Matlab已自带,只需导入x=reactants;y=rate;b=1,0.05,0.02,0.1,2;%预备初值b=nlinfit(x,y,reacfun,b)结论:nlinfit对初值的选取有严重依赖,很难给出恰当初值,非线性回归(linear regression),方法一 利用已知经验回归函数(非线性)进行回归下面给出非线性回归模型代入系数,定义内敛函数的方法:for n=1:5,eval(syms b,num2str(n);end%定义符号变量for n=1:3,eval(syms x,num2str(n);end%定义符号变量y=(b1
21、*x2-x3/b5)/(1+b2*x1+b3*x2+b4*x3);%符号表达式f=inline(subs(y,b1,b2,b3,b4,b5,b);%代入系数并定义函数%在定义好内联函数后,只要按格式f(x1,x2,x3)调用即可问题:估计氢取值134、n-戊烷取值347和异戊烷取值32时的该物质的反应速度?f(134,345,32)ans=18.4831,非线性回归(linear regression),方法二 利用rstool二次响应曲面交互工具进行回归rstool工具共有4种模式可供选择(参见p103,此处略)load reaction.mat%此数据Matlab已自带,只需导入x=rea
22、ctants;y=rate;alpha=0.05;rstool(x,y,quadratic,alpha)%选择二次曲面模型选择Expot下Parameters将回归参数以变量名b输出到变量for n=0:9,eval(syms b,num2str(n);endfor n=1:3,eval(syms x,num2str(n);endy=b0+b1*x1+b2*x2+b3*x3+b4*x1*x2+b5*x1*x3+b6*x2*x3+b7*x12+b8*x22+b9*x32;f=inline(subs(y,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b);%在定义好内联函数后,只要调
23、用f(134,345,32)即可求值%直接拖动rstool纵轴线或键入数值也可快速求值,非线性回归(nonlinear regression),基于rstool的非线性多项式回归工具nlintool:Nonlinear Regression Analysis:nlintool(x,y,FUN,beta0)nlintool(x,y,FUN,beta0,alpha,xname,yname),范例 为研究三种化学物质试建立非线性回归:load reaction.matnlintool(reactants,rate,hougen,beta,0.01,xn,yn)b=1.2526 0.0628 0.0400 0.1124 1.1914,实验一:P107 练习一/二Thats all3Q!,