下载此文档

图灵社区 阅读 【译文】R语言非线性回归初步.doc


文档分类:生活休闲 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
图灵社区 阅读 【译文】R语言非线性回归初步
R语言非线性回归入门
作者 Lionel Hertzog        
在一簇散点中拟合一条回归线(即线性回归)是数据分析的基本方法之一。有时,线性模型能很好地拟合数据,但在某些(很多)情形下,变量间的关系未必是线性的。这时,一般有三类方法解决这个问题: (1) 通过变换数据使得其关系线性化, (2) 用多项式或者比较复杂的样条来拟合数据, (3) 用非线性函数来拟合数据
从标题你应该已经猜到非线性回归是本文的重点
什么是非线性回归
在非线性回归中,分析师通常采用一个确定的函数形式和相应的参数来拟合数据。最常用的参数估计方法是利用非线性最小二乘法(R中的nls函数)。该方法使用线性函数来逼近非线性函数,并且通过不断迭代这个过程来得到参数的最优解(本段来自维基百科)。非线性回归的良好性质之一是估计出的参数都有清晰的解释(如Michaelis-Menten模型的Vmax是指最大速率),而变换数据后得到的线性模型其参数往往难以解释。
非线性最小二乘拟合
首先,我们以Michaelis-Menten方程为例。
# 生成一些仿真数据
(20160227)
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]
# 将结果可视化
plot(x, y)
lines(x, predict(m), lty = 2, col = "red", lwd = 3)
输出的图片如下:
选择适宜的迭代初值
在非线性回归中,找到合适的迭代初值对于整个模型算法的收敛性而言至关重要。假如你设定的参数初值完全脱离了其潜在的取值范围,迭代算法可能不收敛或者返回一些没有意义的参数值。比如返回一个大小为1000的增长率,。寻找合适初值的最好办法是“紧盯着”数据,绘制相应图表并结合你对方程的理解来确定参数的合适初值。
# 生成仿真数据,并且此次对于参数没有先验信息
y <- runif(1, 5, 15)*exp(-runif(1, , )*x)+rnorm(51, 0, )
# 可视化数据并选择一些参数初值
plot(x, y)
# 通过这个散点图确定参数a, b的初值
a_start <- 8 # 参数a是x = 0时y的取值
b_start<- 2*log(2)/a_start # b 是衰减速率
# 拟合模型
m <- nls(y ~ a*exp(-b*x), start = list(a = a_start, b = b_start))
# 计算拟合优度
cor(y, predict(m))
[1]
# 将结果可视化
lines(x, predict(m), col = "red", lty = 2, l

图灵社区 阅读 【译文】R语言非线性回归初步 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人元春文档
  • 文件大小15 KB
  • 时间2022-01-08