首页 理论教育 实验设计与R语言应用:非线性回归简介

实验设计与R语言应用:非线性回归简介

时间:2023-11-24 理论教育 版权反馈
【摘要】:在非线性回归中,通常采用一个确定的函数形式和相应的参数来拟合数据。最常用的参数估计方法是利用非线性最小二乘法[R中的nls()函数]。非线性回归的良好性质之一是估计出的参数都有清晰的解释,而变换数据后得到的线性模型其参数往往难以解释。同时该包内置一些自启动模型供nls()函数进行常规非线性迭代计算。

实验设计与R语言应用:非线性回归简介

线性模型能很好地拟合数据,但在某些(很多)情形下,变量间的关系未必是线性的。这时,一般有三类方法解决这个问题:(1)通过变换数据使得其关系线性化;(2)用多项式或者比较复杂的模型来拟合数据;(3)用非线性函数来拟合数据。

在非线性回归中,通常采用一个确定的函数形式和相应的参数来拟合数据。最常用的参数估计方法是利用非线性最小二乘法[R中的nls()函数]。该方法使用线性函数来逼近非线性函数,并且通过不断迭代这个过程来得到参数的最优解。非线性回归的良好性质之一是估计出的参数都有清晰的解释(如Michaelis-Menten模型的Vmax是指最大速率),而变换数据后得到的线性模型其参数往往难以解释。

R语言中nls(formula,start=list(a=,b=))函数能够优化非线性模型,寻找最优参数。其中a、b表示待估计参数,start设置了参数初始值。寻找合适初值的最好办法是“紧盯着”数据,绘制相应图表并结合你对方程的理解来确定参数的合适初值。设定trace为真以显示迭代过程。nls函数默认采用Gauss-Newton方法寻找极值,迭代过程中第一列为RSS值(残差平方和),后面三列是各参数估计值。然后用summary返回回归结果。(www.xing528.com)

由于nls(formula,start=list(a=,b=))里面的起始值(a,b)的设定非常烦琐,必须在函数趋势内取值,设置不当很容易出错。虽然nls()函数内置自启动模型(self-starting Models),此时只需要指定函数形式,而不需要指定参数初始值。但是这里还是推荐一个基于nls函数的新R包basic Trendline(梅卫平等),这个包有一个通用函数trendline(x,y,model="")使用非常方便。可以一步完成绘图,添加线性或非线性拟合线,在图上显示回归方程及R2和回归模型的p值(不是参数的p值);并且它默认会同时输出模型summary()的结果,即各参数的具体数值及SD值,t值,p值等。同时该包内置一些自启动模型供nls()函数进行常规非线性迭代计算。参数model的值如下,只需改变参数model的值,即可输出不同的回归模型的结果以及图:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈