计算机语言与应用第三章精选文档.ppt
计算机语言与应用第计算机语言与应用第三章三章本讲稿第一页,共三十三页讲讲 课课 内内 容容n n第第1章章MATLAB入门与基本运算入门与基本运算n n第第2章章MATLAB图形与可视化图形与可视化n n第第3章章MATLAB回归分析回归分析本讲稿第二页,共三十三页第 3章 MATLAB 回归分析l l1.1.学习三条命令:学习三条命令:polyfit(x,y,n)-polyfit(x,y,n)-拟合成一元幂函数(一元多次)拟合成一元幂函数(一元多次)拟合成一元幂函数(一元多次)拟合成一元幂函数(一元多次)regress(y,x)-regress(y,x)-可以多元,可以多元,可以多元,可以多元,nlinfit(x,y,fun,beta0)(nlinfit(x,y,fun,beta0)(可用于任何类型的函数,任意多元函数,应用可用于任何类型的函数,任意多元函数,应用可用于任何类型的函数,任意多元函数,应用可用于任何类型的函数,任意多元函数,应用范围最主,最万能的范围最主,最万能的范围最主,最万能的范围最主,最万能的)l l2.2.同一个问题,可能这三条命令都可以使用,但结果同一个问题,可能这三条命令都可以使用,但结果肯定是不同的,因为拟合的近似结果,没有唯一的标肯定是不同的,因为拟合的近似结果,没有唯一的标准的答案。相当于咨询多个专家。准的答案。相当于咨询多个专家。本讲稿第三页,共三十三页第 2 章 MATLAB 回归分析l l3.3.回归的操作步骤:回归的操作步骤:回归的操作步骤:回归的操作步骤:根据图形(实际点),选配一条恰当的函数形式(类型)根据图形(实际点),选配一条恰当的函数形式(类型)根据图形(实际点),选配一条恰当的函数形式(类型)根据图形(实际点),选配一条恰当的函数形式(类型)-需要数学理论基础与经验。(并写出该函数表达式的需要数学理论基础与经验。(并写出该函数表达式的需要数学理论基础与经验。(并写出该函数表达式的需要数学理论基础与经验。(并写出该函数表达式的一般形式,含待定系数);一般形式,含待定系数);一般形式,含待定系数);一般形式,含待定系数);选用某条回归命令求出所有的待定系数;选用某条回归命令求出所有的待定系数;选用某条回归命令求出所有的待定系数;选用某条回归命令求出所有的待定系数;所以可以说,回归就是求待定系数的过程(需确定所以可以说,回归就是求待定系数的过程(需确定函数的形式);函数的形式);本讲稿第四页,共三十三页第 2 章 MATLAB 回归分析l l4.4.拟合曲线的一般方法:拟合曲线的一般方法:拟合曲线的一般方法:拟合曲线的一般方法:(1)(1)先对两个变量先对两个变量先对两个变量先对两个变量x x和和和和y作作作作n n次试验观察得次试验观察得次试验观察得次试验观察得 画出散点图画出散点图本讲稿第五页,共三十三页 幂函数曲线幂函数曲线幂函数曲线幂函数曲线 其中其中x0,a0 指数曲线指数曲线指数曲线指数曲线其中其中a0第 2 章 MATLAB 回归分析l l4.4.拟合曲线的一般方法:拟合曲线的一般方法:(2)根据散点图确定须配曲线的类型,通常选择的六类根据散点图确定须配曲线的类型,通常选择的六类曲线如下:曲线如下:双曲线双曲线双曲线双曲线 倒指数曲线倒指数曲线倒指数曲线倒指数曲线其中其中a0 对数曲线对数曲线对数曲线对数曲线其中其中x0 S S型曲线型曲线其中其中ab0本讲稿第六页,共三十三页第 2 章 MATLAB 回归分析l4.拟合曲线的一般方法:拟合曲线的一般方法:拟合曲线的一般方法:拟合曲线的一般方法:(3)(3)然后由然后由然后由然后由nn对试验数据确定每一类曲线的未知参数对试验数据确定每一类曲线的未知参数对试验数据确定每一类曲线的未知参数对试验数据确定每一类曲线的未知参数a a和和和和b.本讲稿第七页,共三十三页一、一元回归一、一元回归 polyfit(x,y,n)二、多元回归二、多元回归 regress,nlinfit(其其实实可以是非可以是非线线性,它通用性极高性,它通用性极高)本讲稿第八页,共三十三页regress函数函数说说明明对对于多元于多元线线性回性回归归模型:模型:设变设变量量的的n组观测值为组观测值为记,则 的估计值为b,bint,r,rint,stats=regress(y,x,alpha)本讲稿第九页,共三十三页b,bint,r,rint,stats=regress(y,x,alpha)-命令中是先命令中是先y后后x,-须须构造好矩构造好矩阵阵x(x中的每列与目中的每列与目标标函数的一函数的一项对应项对应)-并且并且x要在最前面要在最前面额额外添加全外添加全1列列/对应对应于常数于常数项项-y必必须须是列向量是列向量-结结果是从常数果是从常数项项开始开始-与与polyfit的不同的不同其中:其中:n b为回归系数为回归系数 的估计值的估计值(第一个为常数项第一个为常数项);n bint为回归系数的区间估计;为回归系数的区间估计;n r:残差;残差;n rint:残差的置信区间;残差的置信区间;n stats:用于检验回归模型的统计量,有四个数值:用于检验回归模型的统计量,有四个数值:相关系数相关系数r2、F值值、与与F对应的概率对应的概率p和残差的方差(前两个越大越好,后两个越小越好)和残差的方差(前两个越大越好,后两个越小越好)n alpha:显著性水平(缺省时为显著性水平(缺省时为0.05,即置信水平为,即置信水平为95%)本讲稿第十页,共三十三页b,bint,r,rint,stats=regress(y,x,alpha)-命令中是先命令中是先y后后x,-须构造好矩阵须构造好矩阵x(x中的每列与目标函数的一项对应中的每列与目标函数的一项对应)-并且并且x要在最前面额外添加全要在最前面额外添加全1列列/对应于常数项对应于常数项-y必须是列向量必须是列向量-结果是从常数项开始结果是从常数项开始-与与polyfit的不同的不同其中:其中:n b为回归系数为回归系数 的估计值的估计值(第一个为常数项第一个为常数项);n bint为回归系数的区间估计;为回归系数的区间估计;n r:残差;残差;n rint:残差的置信区间;残差的置信区间;n stats:用于检验回归模型的统计量,有四个数值:用于检验回归模型的统计量,有四个数值:相关系数相关系数r2、F值值、与与F对应的概率对应的概率p和残差的方差(前两个越大越好,后两个越小越好)和残差的方差(前两个越大越好,后两个越小越好)n alpha:显著性水平(缺省时为显著性水平(缺省时为0.05,即置信水平为,即置信水平为95%)(alpha不影响不影响b,只影响只影响bint(区间估计区间估计)。它越小,即置信度越高,则。它越小,即置信度越高,则bint范范围越大。显著水平越高,则区间就越小)围越大。显著水平越高,则区间就越小)本讲稿第十一页,共三十三页例例1测测16名成年女子的身高与腿名成年女子的身高与腿长长所得数据如下:所得数据如下:身高143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164腿长8885889192939395969897969899100 102拟拟合成合成y=a+b*x形式形式本讲稿第十二页,共三十三页例例1测测16名成年女子的身高与腿名成年女子的身高与腿长长所得数据如下:所得数据如下:身高143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164腿长8885889192939395969897969899100 102 x=143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164;y=88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102;plot(x,y,r+)z=x;x=ones(16,1),x;-常数常数项项b,bint,r,rint,stats=regress(y,x);本讲稿第十三页,共三十三页即 ,的置信区间为-33.7017,1.5612,的置信区间为0.6047,0.834;r2=0.9282,F=180.9531,p=0.0000;pb,bint,stats得结果:b=bint=-16.0730 -33.7071 1.5612 -每一行为一个区间 0.7194 0.6047 0.8340 stats=0.9282 180.9531 0.0000 0.0174本讲稿第十四页,共三十三页残差分析,作残差残差分析,作残差图图:rcoplot(r,rint)从残差从残差图图可以看出,除第二个数据外,其余数据的可以看出,除第二个数据外,其余数据的残差离零点均残差离零点均较较近近,且残差的置信区且残差的置信区间间均包含零点均包含零点,这说这说明回明回归归模型模型:y=-16.073+0.7194x能能较较好的符合原始数据,好的符合原始数据,而第二个数据可而第二个数据可视为视为异常点异常点(而剔除而剔除)本讲稿第十五页,共三十三页预测预测及作及作图图:从残差从残差图图可以看出,除第二个数据外,其余数据的可以看出,除第二个数据外,其余数据的残差离零点均残差离零点均较较近近,且残差的且残差的置信区置信区间间均包含零点均包含零点,这说这说明回明回归归模型模型:y=-16.073+0.7194x能能较较好的符合原始数据,好的符合原始数据,而第二个数据可而第二个数据可视为视为异常点异常点(而剔除而剔除)plot(x,y,r+)holdona=140:165;b=b(1)+b(2)*a;plot(a,b,b)本讲稿第十六页,共三十三页例例2设某商品的需求量与消费者的平均收入、商品价格的统计数设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为据如下,建立回归模型,预测平均收入为1000、价格为、价格为6时时 的商的商品需求量品需求量.需求量需求量10075807050659010011060收入收入10006001200500300400130011001300300价格价格5766875439选择纯二次模型,即选择纯二次模型,即 本讲稿第十七页,共三十三页例例2设某商品的需求量与消费者的平均收入、商品价格的统计设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为数据如下,建立回归模型,预测平均收入为1000、价格为、价格为6时时 的商品需求量的商品需求量.选择纯二次模型,即选择纯二次模型,即 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=ones(10,1)x1 x2(x1.2)(x2.2);%注意技巧性注意技巧性b,bint,r,rint,stats=regress(y,X);b,stats 本讲稿第十八页,共三十三页例例2设某商品的需求量与消费者的平均收入、商品价格的统计数据设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为如下,建立回归模型,预测平均收入为1000、价格为、价格为6时时 的商品需的商品需求量求量.b,stats b=110.5313 0.1464 -26.5709 -0.0001 1.8475stats=0.9702 40.6656 0.0005 20.5771故回归模型为:剩余标准差为4.5362,说明此回归模型的显著性较好.本讲稿第十九页,共三十三页-re是是y/x逆置的逆置的-y是列向量是列向量-须须确定目确定目标标函数的形式函数的形式-x须须构造(通构造(通过过构造来反映目构造来反映目标标函数)函数)-x中的每一列与目中的每一列与目标标函数的一函数的一项对应项对应(剔除待定系数)(剔除待定系数)-首首项为项为常数常数项项(x的第一列的第一列为为全全1)-有函数有有函数有n项项(待定系数待定系数),则则x就有就有n列列-regress只能解决每只能解决每项项只有一个待定系数的情况且必只有一个待定系数的情况且必须须有常数有常数项项的情的情况(且每况(且每项项只有一个待定系数,即只有一个待定系数,即项项数与待定系数数目相同)数与待定系数数目相同)其重(其重(难难、关、关键键)点:列向量、构造矩)点:列向量、构造矩阵阵(X):目目标标函数中的每函数中的每项项与与X中中的一列的一列对应对应。(由。(由X来确定目来确定目标标函数的函数的类类型型/形式)形式)b,bint,r,rint,stats=regress(y,x,alpha)本讲稿第二十页,共三十三页非线性回归非线性回归使用格式:使用格式:beta=nlinfit(x,y,程序名程序名,beta0)beta,r,J=nlinfit(X,y,fun,beta0)X给定的自定的自变量数据量数据,Y给定的因定的因变量数据量数据,fun要要拟合的函数模型合的函数模型(句柄函数或者内句柄函数或者内联函数形式函数形式),beta0函数模型中待定系数估系数估计初初值(即程序的初始实参)beta返回返回拟合后的待定系数合后的待定系数其中beta为估计出的回归系数;r为残差;J为Jacobian矩阵;输入数据x、y分别为n*m矩阵和n维列向量列向量,对一元非线性回归,x为n维列向量。程序名程序名 为是事先用m-文件定义的非线性函数;beta0为回归系数的初值本讲稿第二十一页,共三十三页非线性回归非线性回归使用格式:使用格式:beta=nlinfit(x,y,程序名程序名,beta0)beta,r,J=nlinfit(X,y,fun,beta0)不同的不同的beta0,则会产生不同的结果;则会产生不同的结果;如何给待定系数的初值以及如何分析结果的好坏?如何给待定系数的初值以及如何分析结果的好坏?(因为拟合本来就是近似的,可能有多个结果)(因为拟合本来就是近似的,可能有多个结果)本讲稿第二十二页,共三十三页例例1已知数据:已知数据:x1=0.5,0.4,0.3,0.2,0.1;x2=0.3,0.5,0.2,0.4,0.6;x3=1.8,1.4,1.0,1.4,1.8;y=0.785,0.703,0.583,0.571,0.126;且且y与与x1,x2,x3关系关系为多元非多元非线性关系(只与性关系(只与x2,x3相关)相关)为:为:y=a+b*x2+c*x3+d*(x2.2)+e*(x3.2)此函数是由用此函数是由用户户根据根据图图形的形状等所配的曲形的形状等所配的曲线线,即自己,即自己选选定函数定函数类类型型求非求非线性回性回归系数系数a,b,c,d,e。本讲稿第二十三页,共三十三页y=a+b*x2+c*x3+d*(x2.2)+e*(x3.2)(1)对回归模型建立M文件myfun.m如下:function yy=myfun(beta,x)%一定是两个参系数和自变量:一个%向量/一个矩阵%a=beta(1);%b=beta(2);%c=beta(3);x1=x(:,1);x2=x(:,2);x3=x(:,3);%自变量x是一个矩阵,它的每一列分别代表一个变量它的每一列分别代表一个变量,%有n列就可以最多n元函数yy=beta(1)+beta(2)*x2+beta(3)*x3+beta(4)*(x2.2)+beta(5)*(x3.2);必须要必须要.*./.(x一定是一列对应一个变量,不能x1=x(1),x2=x(2),x3=x(3))本讲稿第二十四页,共三十三页y=a+b*x2+c*x3+d*(x2.2)+e*(x3.2)(2)主程序如下:x=0.5,0.4,0.3,0.2,0.1;0.3,0.5,0.2,0.4,0.6;1.8,1.4,1.0,1.4,1.8;y=0.785,0.703,0.583,0.571,0.126;beta0=1,1,1,1,1,1;%有多少个待定系数,就给多少个初始值。beta,r,j=nlinfit(x,y,myfun,beta0)beta=-0.4420 5.5111 0.3837 -8.1734 -0.1340本讲稿第二十五页,共三十三页例例2已知数据:已知数据:混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期(日)及抗压强度个试块,记录了养护日期(日)及抗压强度y(kg/cm2)的数据:)的数据:养护时间:养护时间:x=2 3 4 5 7 9 12 14 17 21 28 56 抗压强度:抗压强度:y=35+r 42+r 47+r 53+r 59+r 65+r 68+r 73+r 76+r 82+r 86+r 99+r 建立非线性回归模型,对得到的模型和系数进行检验。建立非线性回归模型,对得到的模型和系数进行检验。注明:此题中的注明:此题中的+r代表加上一个代表加上一个-0.5,0.5之间的随机数之间的随机数 模型为:模型为:y=a+k1*exp(m*x)+k2*exp(-m*x);本讲稿第二十六页,共三十三页x=2 3 4 5 7 9 12 14 17 21 28 56;r=rand(1,12)-0.5;y1=35 42 47 53 59 65 68 73 76 82 86 99;y=y1+r;myfunc=inline(beta(1)+beta(2)*exp(beta(4)*x)+beta(3)*exp(-beta(4)*x),beta,x);-也可也可编程序程序beta=nlinfit(x,y,myfunc,0.5 0.5 0.5 0.5);%初初值为0.2也可以,也可以,%如如为1则不行,不行,则试着着换系数初系数初值-此此处为一元,一元,x,y行行/列向量都可以列向量都可以a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)%test the modelxx=min(x):max(x);-2:56yy=a+k1*exp(m*xx)+k2*exp(-m*xx);plot(x,y,o,xx,yy,r)本讲稿第二十七页,共三十三页例例3 出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大不断增大.我们希望知道使用次数与增大的容积之间的关我们希望知道使用次数与增大的容积之间的关 系系.对一钢包对一钢包作试验,测得的数据列于下表:作试验,测得的数据列于下表:使用次数增大容积使用次数增大容积234567896.428.209.589.509.7010.009.939.991011121314151610.4910.5910.6010.8010.6010.9010.76本讲稿第二十八页,共三十三页例例3 出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大断增大.我们希望知道使用次数与增大的容积之间的关我们希望知道使用次数与增大的容积之间的关 系系.对一钢包对一钢包作试验,测得的数据列于下表:作试验,测得的数据列于下表:对将要拟合的非线性模型对将要拟合的非线性模型 y=aeb/x,或function f=volum(beta,x)a=beta(1);b=beta(2);f=a*exp(b./x);%一定要点除2、输入数据:x=2:16;y=6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76;beta0=8 2;-初值1,1也可以3、求回归系数:beta,r,J=nlinfit(x,y,volum,beta0);%beta0初值为列/行向量都可以,还是为列。betabeta=11.6037 -1.0641即得回即得回归归模型模型为为:本讲稿第二十九页,共三十三页例例3例例4 财政收入预测问题:财政收入与国民收入、工业总产值、农业总产值、总财政收入预测问题:财政收入与国民收入、工业总产值、农业总产值、总人口、就业人口、固定资产投资等因素有关。人口、就业人口、固定资产投资等因素有关。下表列出了下表列出了1952-1981年的原始年的原始数据数据,试构造预测模型。,试构造预测模型。年份年份国民收国民收入(入(亿亿元)元)工工业总业总产值产值(亿亿元元)农业总农业总产值产值(亿亿元)元)总总人口人口(万人)(万人)就就业业人人口(万人)口(万人)固定固定资产资产投投资资(亿亿元)元)财财政政收入收入(亿亿元元)195259834946157482207294418419535864554755879621364892161954707520491602662183297248195573755852961465223289825419568257155566282823018150268195783779857564653237111392861958102812355986599426600256357195911141681509672072617333844419601079187044466207258803805061961757115643465859255901382711962677964461672952511066230196377910465146917226640852661964943125058470499277361293231965115215816327253828670175393196613221911687745422980521246619671249164769776368308141563521968118715656807853431915127303196913722101688806713322520744719701638274776782992344323125641971178031567908522935620355638197218333365789871773585435465819731978368485589211366523746911974199336968919085937369393655197521214254932924213816846269219762052430995593717388344436571977218949259719497439377454723197824755590105896259398565509221979270260651150975424058156489019802791659211949870541896568826198129276862127310007273280496810本讲稿第三十页,共三十三页例例3解解 设设国民收入、工国民收入、工业总产值业总产值、农业总产值农业总产值、总总人口、就人口、就业业人口、固定人口、固定资产资产投投资资分分别为别为x1、x2、x3、x4、x5、x6,财财政收入政收入为为y,设变设变量之量之间间的关系的关系为为:y=ax1+bx2+cx3+dx4+ex5+fx6使用非线性回归方法求解。1对对回回归归模型建立模型建立M文件文件model.m如下如下:function yy=model(beta0,X)%一定是两个参数,第一个为系数数组,%b(1),b(2),b(n)%分别代表每个系数,而第二个参数代表所有的自变量,%是一个矩阵,它的每一列分别代表一个自变量。a=beta0(1);b=beta0(2);%每个元素每个元素 c=beta0(3);d=beta0(4);e=beta0(5);f=beta0(6);x1=X(:,1);%每一列每一列 x2=X(:,2);x3=X(:,3);x4=X(:,4);x5=X(:,5);x6=X(:,6);yy=a*x1+b*x2+c*x3+d*x4+e*x5+f*x6;本讲稿第三十一页,共三十三页例例32.主程序主程序liti6.m如下如下:X=598.00,349.00,461.00,57482.00,20729.00,44.00;%可以直接整个从WORD拷贝过来 586,455,475,58796,21364,89;707,520,491,60266,21832,97;737,558,529,61465,22328,98;825,715,556,62828,23018,150;837,798,575,64653,23711,139;1028,1235,598,65994,26600,256;1114,1681,509,67207,26173,338;1079,1870,444,66207,25880,380;757,1156,434,65859,25590,138;677,964,461,67295,25110,66;779,1046,514,69172,26640,85;943,1250,584,70499,27736,129;1152,1581,632,72538,28670,175;1322,1911,687,74542,29805,212;1249,1647,697,76368,30814,156;1187,1565,680,78534,31915,127;1372,2101,688,80671,33225,207;1638,2747,767,82992,34432,312;1780,3156,790,85229,35620,355;1833,3365,789,87177,35854,354;1978,3684,855,89211,36652,374;1993,3696,891,90859,37369,393;2121,4254,932,92421,38168,462;2052,4309,955,93717,38834,443;2189,4925,971,94974,39377,454;2475,5590,1058,96259,39856,550;2702,6065,1150,97542,40581,564;2791,6592,1194,98705,41896,568;2927,6862,1273,100072,73280,496;y=184.00 216.00 248.00 254.00 268.00 286.00 357.00 444.00 506.00.271.00 230.00 266.00 323.00 393.00 466.00 352.00 303.00 447.00.564.00 638.00 658.00 691.00 655.00 692.00 657.00 723.00 922.00.890.00 826.00 810.0;beta0=0.50-0.03-0.60 0.01-0.02 0.35;-也可以用5个1betafit=nlinfit(X,y,model,beta0)本讲稿第三十二页,共三十三页例例3 出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断出钢时所用的盛钢水的钢包,由于钢水对耐火材料的侵蚀,容积不断增大增大.我们希望知道使用次数与增大的容积之间的关我们希望知道使用次数与增大的容积之间的关 系系.对一钢包对一钢包作试验,测得的数据列于下表:作试验,测得的数据列于下表:本讲稿第三十三页,共三十三页