1578647543227第三十四课非线性回归分析现实世界中严格的线性模型并不多见,它们或多或少都带有某种程度的近似;在不少情况下,非线性模型可能更加符合实际。由于人们在传统上常把“非线性”视为畏途,非线性回归的应用在国内还不够普及。事实上,在计算机与统计软件十分发达的令天,非线性回归的基本统计分析已经与线性回归一样切实可行。在常见的软件包中(诸如SAS、SPSS等等),人们已经可以像线性回归一样,方便的对非线性回归进行统计分析。因此,在国内回归分析方法的应用中,已经到了“更上一层楼”,线性回归与非线性回归同时并重的时候。对变量间非线性相关问题的曲线拟合,处理的方法主要有:首先决定非线性模型的函数类型,对于其中可线性化问题则通过变量变换将其线性化,从而归结为前面的多元线性回归问题来解决。若实际问题的曲线类型不易确定时,由于任意曲线皆可由多项式来逼近,故常可用多项式回归来拟合曲线。若变量间非线性关系式已知(多数未知),且难以用变量变换法将其线性化,则进行数值迭代的非线性回归分析。一、可变换成线性的非线性回归在实际问题中一些非线性回归模型可通过变量变换的方法化为线性回归问题。例如,对非线性回归模型titititixbixay210sincos(34.1)即可作变换ttttttttxxxxxxxx2sin,2cos,sin,cos4321将其化为多元线性回归模型。一般地,若非线性模型的表达式为tmmtttxgbxgbxgbby22110(34.2)则可作变量变换tmmtttttxgxxgxxgx*2*21*1,,,(34.3)将其化为线性回归模型的表达式,从而用前面线性模型的方法来解决,其中(34.3)中的xt也可为自变量构成的向量。这种变量变换法也适用于因变量和待定参数bi。如1exp2132211tttttxxbxbxbay(34.4)时上式两边取对数得1lnln2132211tttttxxbxbxbay(34.5)现作变换1,ln,ln2130*tttttxxxabyy(34.6)则可得线性表达式1578647543227ttttxbxbxbby3322110*(34.7)利用前面方法确定了3,2,1,0,ˆibi,并由)ˆexp(ˆ0ba得到aˆ的值。变量变换的线性化方法可推广到下列形式的非线性模型tmmmttxgbcxgbcbcyh)()()()(11100(34.8)其中x=(x1,x2,,xp),而h(yt)、ci(bi)、gi(xt)则分别化为新的因变量、线性回归参数和自变量,即可归结为线性回归模型来解。见表34.1所示给出了一些常见的可线性化的非线性模型。表34.1典型的函数及线性化方法函数名称函数表达式线性化方法双曲线函数xbay1yv1xu1幂函数baxyyvlnxuln指数函数bxaeyyvlnxuxbaey/yvlnxu1对数函数xbaylnyvxulnS型函数xbeay1yv1xeu当曲线的函数类型未确定时,我们常采用上述非线性模型作为其拟合曲线,即将自变量的各种初等函数的组合作为新自变量,用逐步回归法(或正交筛选法等)对新变量进行筛选,以确定一个项数不多的线性函数表达式。该方法对表达式形式没限制且精度要求不高的问题颇为有效。二、多项式回归分析在式(34.2)中,若取iixxg,则为多项式回归模型。由数学分析知识可知,一般函数都可用多项式来逼近,故多项式回归分析可用来处理相当广泛的非线性问题。对观测数据(xt,yt)(t=1,…,N),多项式回归模型为tmtmtttxbxbxbby2210,t=1,2,,N令1578647543227NyyyY21,mNNNmmxxxxxxxxxX222221211111,mbbbB10,N21则模型可表示为XBY当X列满秩时,由前面的讨论知,其最小二乘估计为YXXXB1ˆ由此即可求得其多项式回归方程。但由于1XX的计算既复杂又不稳定,故我们一般采用正交多项式法来进行多项式回归。三、不可变换成线性的非线性回归分析假设因变量y与自变量(x1,x2,…,xp)之间满足非线性模型;,,,21pxxxFy(34.9)其中m,,,21为未知参数,F为已知表达式,仅未知的非线性函数,为误差项。现将观察数据pttttxxxy,,,,21,t=1,2,,N代人上式(34.9)得非线性回归模型tpttttxxxFy;,,,21,t=1,2,,N常记为EFY)(其中NyyyY,,,21为y的观察向量,m,,1为非线性回归系数,E=N,,,21为观察误差向量,F为未知参数的函数向量。非线性回归分析就是利用最小二乘准则来估计回归系数,即求ˆ使得残差平方和FYFYEEQ2121在ˆ处达到最小。非线性回归分析一般来用数值迭代法来进行,其共同特点是:由选定的初值0出发,通过逐步迭代1578647543227t0(34.10)即选择适当的步长t(0)及确定搜索方向向量=(1,2,…,m),使得0QQ(5.4.11)再由取代0,重复上述迭代过程,直至Q()可认为达到最小值为止,即可将所得的作为其最小二乘估计ˆ,从而得到非线性回归方程ˆ;,,,ˆ21pxxxFy1.下降方向和步长的选择首先考察FYFYEEQ2121的梯度向量(即导数)FYGFYFQ其中mFFFG,,1为F的梯度矩阵。为使0迭代收敛到ˆ,其迭代公式应满足下降性质(5.4.11)。现考虑一元函数tQt0,它从0出发以为方向的射线上取值。由复合求导公式得GFYQtdt0可以证明,当d0时,在以为方向向量的射线上可以找到t0,使得0QQ。我们将满足d0的称为下降方向,Bard于1974年给出了为下降方向的充要条件为FYGP其中P为对称正定阵,由此我们可得下降算法的迭代公式为FYGtP0(34.12)其中P为任意正定阵,G为F的梯度,t为满足0QQ的正实数,即步长。如何计算以便修改参数向量有五种常用的非线性回归迭代方法:高斯-牛顿法(Gauss-Newton)、最速下降法(梯度法,Gradient)、牛顿法(Newton)、麦夸特法(Marquardt)、正割法(DUD)。以下我们介绍其中高斯-牛顿法。15786475432272.Gauss-Newton法首先选取的一切初始近似值0,令0,则只要确定的值即可确定。为此,考虑)(F在0处的Taylor展开式,并略去二次以上的项得GFFFFF0000其中0FG为F的梯度。此时其残差平方和GFYGFYQ0021由0Q,得其的正则方程为0FYGGG(34.13)故01FYGGG(34.14)由此即可用前面线性回归法求,只需将G、)(0FY视为前面(5.2.1)式中的X、Y即可。此时,对给定精度1、2,当1maxii或20Q时,即得的最小二乘法估计0ˆ;否则用所得的ˆ代替0,重复上述步骤,直至i或Q()满足精度要求为止。该法称为Gauss-Newton法,其一般迭代公式为iiit1(34.15)其中:为iiiiFYGGG的解,ti为tQti的最小值点。Gauss-Newton法在初值0选取适当,且GG可逆时非常有效,但在其他情形,其求解较为困难,对此,Marguardt对(34.14)中的正则系数阵作适当修正,得到了改进算法。四、nlin非线性回归过程在很多场合,可以对非线性模型进行线性化处理,尤其是关于变量非线性的模型,以运用OLS进行推断。对线性化后的线性模型,可以应用SAS的reg过程进行计算。多项式模型可以直接应用glm(广义线性模型)求解。对于不能线性化的非线性模型。其估计不能直接运用经典的最小二乘法,而需要运用其他估计方法,如直接搜索法、直接最优法与Taylor级数展开法进行线性逼近。此时,可以利用SAS/STAT的nlin过程实现相应的计算。1.procnlin过程1578647543227procnlin采用最小误差平方法(LeastSquaresMethod)及循环推测法(IterativeEstimationMethod)来建立一个非线性模型。一般而言,用户必须自订参数的名字、参数的启动值(startingva1ue)、非线性的模型与循环推测法所用的准则。若用户不指明,则nlin程序自动以高斯-牛顿迭代法(Gauss-Newtoniterativeprocedure)为估计参数的方法。另外此程序也备有扫描(Gridsearch)的功能来帮助读者选择合适的参数启动值。由于非线性回归分析十分不易处理,nlin程序不保证一定可以算出符合最小误差平方法之标准的参数估计值。nlin过程的功能,计算非线性模型参数的最小二乘估计LS及加权最小二乘估计。与reg过程不同的是:模型的参数要命名、赋初值、求偏导数;model语句与参数名、解释变量的表达式有关;可以使用赋值语句及条件语句。nlin过程一般由下列语句控制:procnlindata=数据集/选项列表;parameters参数名=数值;model因变量=表达式/选项列表;bounds表达式;der.参数名{.参数名}=表达式;id变量列表;outputout=数据集/选项列表;by变量列表;run;其中,parameters语句和model语句是必需的,而其余语句供用户根据需要选择。2.procnlin语句中的主要选择项。outest=数据集名——指定存放参数估计的每步迭代结果的数据集名。best=n——要求过程只输出网格点初始值可能组合中最好的n组残差平方和。method=gauss|marquardt|newton|gradient|dud|——设定参数估计的迭代方法。缺省时为gauss,除非没有der.语句。eformat——要求所有数值以科学记数法输出。nopoint——抑制打印输出。noinpoint——抑制迭代结果的输出。3.parameters(parms)语句。用于对所有参数赋初值,项目之间以空格分隔。例如,parmsb0=0b1=1to10b2=1to10by2b3=1,10,100;4.model语句。表达式可以是获得数值结果的任意有效SAS表达式。这个表达式包括参数名字、输入数据集中的变量名以及在nlin过程中用程序设计语句创建的新变量。例如,modely=b0*(1-exp(-b1*x));5.bounds语句。用于设定参数的约束,主要是不等式约束,约束间用逗号分隔。例如,boundsa=20,b30,1=c=10;6.der.语句。除非在procnlin语句中指明所用的迭代法是dud,使用选择项method=dud,否则der.