在一簇散点中拟合一条回归线(即线性回归)是数据分析的基本方法之一。有时,线性模型能很好地拟合数据,但在某些(很多)情形下,变量间的关系未必是线性的。这时,一般有三类方法解决这个问题: (1) 通过变换数据使得其关系线性化, (2) 用多项式或者比较复杂的样条来拟合数据, (3) 用非线性函数来拟合数据。
什么是非线性回归
在非线性回归中,分析师通常采用一个确定的函数形式和相应的参数来拟合数据。最常用的参数估计方法是利用非线性最小二乘法(R中的nls函数)。该方法使用线性函数来逼近非线性函数,并且通过不断迭代这个过程来得到参数的最优解。非线性回归的良好性质之一是估计出的参数都有清晰的解释,而变换数据后得到的线性模型其参数往往难以解释。
非线性最小二乘拟合
首先,我们以Michaelis-Menten方程为例。
# 生成一些仿真数据
set.seed(0227)
x <- seq(0, 50, 1)
y <- ((runif(1, 10, 20)*x)/(runif(1, 0, 10)+x)) + rnorm(51, 0, 1)
# 对于一些简单的模型,nls函数可以自动找到合适的参数初值
m <- nls(y ~ a*x/(b+x))
# 计算模型的拟合优度
cor(y, predict(m)) [1] 0.9496598
# 将结果可视化
plot(x, y)
lines(x, predict(m), lty = 2, col = "red", lwd = 3)
输出的图片如下:
如果觉得《R 回归分析 非线性回归模型》对你有帮助,请点赞、收藏,并留下你的观点哦!