数据拟合与模型选择CurveFitandModelSelectingJieFeiMPTCJune20,2012引例美国人口预测给出美国人口从1790年到1990年间的人口如表1(每10年为一个间隔),请估计出美国2010年的人口。年份1790180018101820183018401850人口(×106)3.95.37.29.612.917.123.2年份1860187018801890190019101920人口(×106)31.438.650.262.976.092.0105.8年份1930194019501960197019801990人口(×106)122.8131.7150.7179.3203.2226.5248.7表1美国人口统计数据一、数据拟合的方法1.平面上绘出已知数据的分布图(散点图,ScatterPlot).2.通过直观观察或经验公式猜测人口随时间的变化规律(函数关系).3.利用函数拟合的方法确定拟合函数中的未知参数.4.利用拟合函数估计出2010年的美国人口.曲线拟合问题的提法——什么是曲线拟合已知一组二元数据,这组数据形成平面上的一组散点.在某一类函数中寻找一个函数使得函数曲线在某种准则下与所有数据点最为接近,这种构造近似函数的方法称为曲线拟合,称为拟合函数.(,),1,2,...,,iixyin()fx()fxxyO曲线拟合的图示图1数据散点图设有m个数据点(xi,yi)i=1,2,…,m.作散点图如下:ScatterPlot要想对图1所示的数据拟合模型f(x)=ax+b.应如何选择a和b,使直线最好地拟合数据?即最佳拟合的原则与方法是什么?最佳拟合准则从图上看,存在两个以上点时,不能期望它们精确地处于一直线上。数据点和直线间总存在一些纵向差异。称这些纵向差异为绝对偏差。最佳拟合的准则:(1)极小化这些绝对偏差的和.即极小化图2极小化绝对偏差的和解这一问题必须用数值最优化方法解出模型参数a,b的估计.1()miiiyfx偏差(2)极小化所有点的最大偏差.图3极小化最大绝对偏差(3)极小化这些绝对偏差的平方和(最小二乘原则)即极小化Max|yi–f(xi)|,i=1,2,,m解这个问题可能需要高级的数学方法,或者需要计算机的数值算法。简单情形,会转化成一个线性规划问题。偏差(Least-SquaresCriterion)即极小化21()miiiyfx21()miiiyfx最小二乘准则函数中的参数作为自变量,绝对偏差的平方和作为目标函数,利用多元函数的极值理论就可以解决。给定某一函数类型y=f(x),以及m个数据点(xi,yi)的集合,极小化绝对偏差|yi-f(xi)|的平方和,即确定函数y=f(x)中的参数,极小化21()miiiyfx21()miiiyfx用最小二乘准则来估计各种类型曲线参数的数学过程如下:一、拟合直线设预期模型的形式为y=Ax+B,用a、b记A、B的最小二乘估计,这时要求极小化:2211()mmiiiiiiSyfxyaxb等价于下述线性方程组的最小二乘解:1122mmaxbyaxbyaxby根据多元函数的极值理论,最优的必要条件是两个偏导数等于0.21212()02()0miiiimiiiSxyaxbaSyaxbb211111mmmiiiiiiimmiiiiaxbxxyaxmby整理得正规方程:(正规方程)正规方程组解的矩阵表示:1211,1mxxAx12,myyyy记若可逆,正规方程的解为.baTAA().TTAAAy则正规方程组为1().TTAAAy解得1112211211112211,,mmmiiiiiiimmiiiimmmmiiiiiiiiimmiiiimxyxyamxxxyxyxbmxx可以编写计算机程序解a和b.用Matlab编程,只要输入数据,再输入regress命令即可得到系数的最小二乘估计。统计上利用最小二乘准则估计拟合直线的参数称为线性回归。例1:弹簧的弹性系数的测定.下表给出了悬挂不同重量的物体时弹簧的长度,试由这组数据推测弹簧的弹性系数.已知弹簧的弹力与弹簧长度有线性关系:y=ax+b其中常数a与b需要根据数据测定.51015202530长度(cm)7.258.128.959.9010.9011.80x=5:5:30;y=[7.258.128.959.9010.9011.80];x1=[ones(length(x),1),x'];regress(y',x1)输入Matlab指令如下:得到最佳拟合直线为:y=0.1831x+0.682751015202530拟合效果图:二、拟合多项式最小二乘估计即要求极小化(以n=2为为例)S对参数求偏导,令其等于零得方程:设预期模型的形式为n是固定的.01(),nnyfxaaxax220121()miiSyaaxax22012102201211222012102()02()02()0miiiimiiiiimiiiiiSyaaxaxaSxyaaxaxaSxyaaxaxa正规方程组解的矩阵表示:211222211,1mmxxxxAxx12,myyyy记若可逆,正规方程的解为012.aaaaTAA().TTAAaAy则正规方程组为1().TTaAAAy多项式拟合的Matlab指令为:polyfit其调用格式为a=polyfit(adata,ydata,n)其中n—拟合多项式的次数.xdata,ydate—拟合的数据,以数组方式输入.a—输出参数,拟合多项式的系数.多项式在x处的取值y可用如下命令格式计算:y=polyval(a,x)三、经变换的最小二乘拟合这个方程组是非线性的,手工难于求解。理论上最小二乘准则可用于其它模型,方法都是对参数求导,令其等于零,解得到的方程,求出模型的参数。但在实践上可能有困难。例如要拟合模型,作最小二乘估计时需要极小化bxyae2211()immbxiiiiiSyfxyae120iimbxbxiiSeyaea120iimbxbxiiiSaexyaeb处理方法:在模型取对数以后,变成线性模型:bxyaelnln.yabx可以利用最小二乘求解。非线性关系变成线性关系,常见形式有一下几种:111.,,,xyyxuabvaxbuv2.,ln,lnln,byaxuyvxuabv3.,lnln,bxyaeuyuabx14.,ln,ln,bxyaeuyvuabvx115.,,,xxyyveuabvabeu一般地,变换以后再进行最小二乘拟合与直接进行最小二乘拟合的结果是不一样的。在原始问题中,寻找曲线时,是极小化原始数据的偏差平方和,而在变换后的问题中,极小化变换后的变量的偏差平方和。非线性拟合的Matlab指令为:lsqcurvefit其调用格式为p=lsqcurvefit(‘Fun’,p0,xdata,ydata)其中Fun—表示拟合函数的M文件或内联函数.xdata,ydate—拟合的数据,以数组方式输入.p0–拟合参数的初值.p—拟合的参数.若要求在x处的取值y可用如下命令格式计算:y=Fun(p,x)2.按照一个或一些选出的模型类型对数据进行拟合(确定模型中的最佳参数).3.对拟合模型的评价(不同模型之间的优劣).4.根据收集的数据做出预报,评价预报的效果.在分析一个数据集合时,有四个可能需要解决的任务:1.模型选择,线性模型,多项式模型,指数模型或是其它模型.怎样评价一个好模型?评估模型是否很好地拟合了数据的途径是:计算残差。即计算模型点与实际点间的偏差。要回答哪个模型最好时要以考虑模型的目的、实际情况要求的精度、数据的准确性以及使用模型时独立变量的值的范围等因素。1.单项模型的选择;2.通过数据点的高阶多项式;3.低阶多项式对数据光滑化;4.三次样条插值。当实际问题中不能根据一些假定提出某种模型时,就要基于数据建立经验模型。二、基于数据建立经验模型例2.Chesapeake海湾的收成.1.单项模型的选择任务是预测蓝鱼的产量。策略是变换数据,使得所产生的图形近似一条直线。怎样确定这一变换呢?作出散点图:散点图中数据的倾向是增的、下凸的。对于一个向上凹的正值函数,y=f(x),x1.用阶梯中处于z下方的某些变换,将y值变为或logy或更剧烈的变化,挤压右侧尾部向下,可能产生更接近直线的新函数。应该采用哪个变换是反复试验、不断摸索的问题(或根据经验)。另一种变换是改变x的值为x2,x3等,拉伸右侧的尾部向右。y22log111zzzzzzz幂阶梯对于蓝鱼的产量数据,将x的值改为阶梯向上的几种值(x2,x3等),不能产生有关线性图形;因此将y的值改为阶梯向下的值或lny的值。经比较,选取lny对x的模型,用最小二乘拟合下面模型:ylogyaxb找出拟合的曲线其中x是基底年,logy是以10为底的对数,y的单位是104磅。log0.72310.1654yx由logy取指数得5.2857(1.4635)xy数据拟合效果图:例3.估计蓝蟹.散点图中数据的倾向是增的、上凸的。作出散点图:对于一个向上凸的正值函数,y=f(x),x1.这次尝试改变y的值成为y2、y3等来拉伸右侧尾部向上而线性化。另一种可能是尝试改变x的值成为或logx,或更剧烈的变换梯步(变换阶梯表的下部),来使右侧尾部向左。x注意,阶梯表中log以下的变换有时会把一个增函数逆转为减函数,这是不希望的。因此数据分析时常加一个负号,以保持变换的数据与原数据有相同的增减性。322log111zzzzzzzz变换阶梯常用变换试图改变y的值为y2或y3和改变x的值成为或logx等,最后选择一条过原点的直线ykx由最小二乘法得到158.344yx其中x是基底年,y的单位是104磅蓝蟹。x曲线似乎是可取的。曲线拟合效果图:蓝鱼蓝蟹模型验证:对每一对数据计算残差和相对误差。模型预测:预测2010年海湾收成1445.2857(1.4635)1092.95(10)10.9.y磅百万磅4158.34414592.469(10)5.92.y磅百万磅这些简单的单项模型应该用于内插,而在作外推时误差较大。小结:构造一个预测模型时,细心分析收集到的数据,看数据存在什么样的倾向?是否有明显处于倾向外的数据点?如果这样的异常值存在,是否抛弃它?如果是实验观察到的,重复该实验以检查数据。当某一种倾向确实清楚存在时,找到一个将数据变换成一直线(近似地)的函数。如果选择了模型y=axb,应画一个lny对lnx的图,看是否产生一近似直线。同样在研究模型y=aebx的适当性时,应画lny对x的图是否产生一条直线。当认为一个确定的模型类型比较符合数据的倾向时,可以用最小二乘及其他解析方法估计模型参数。最后对原始模型作拟合优度分析。如果对这一拟合不满意,可以研究其他的单项模型。如果在单项模型框架内不能满意地拟合数据,则要使用其他的技术。这就是将要讨论的多项式拟合和样条插值。2.高阶多项式(polynomials)模型单项模型易于进行模型分析,然而由于其数学上的简单性,在追踪数据到的数据的趋势时,单项模型是有局限的。在某些情况下,必须考虑多于一项的模型,即多项式。当然多项式也是有其缺点的。大家知道:有惟一的最高阶为2的多项式y=a0+a1x+a2x2能够通过三个不同的