跟踪迭代迭代完全一样

时间:2016-01-20 02:06:43

标签: r

我正在尝试使用nls()函数来拟合一些数据,但我不断收到错误“迭代次数超过50次”。

为了确定我是否只是做出错误的开始猜测,我在下面的代码中用“假数据”重新创建了问题。看起来最初的猜测不是问题。

我也试过设置trace = TRUE并发现所有迭代都是一样的,所以我怀疑增加迭代次数会有效。

# test code ####

set.seed(12345)

calc_exp <- function(a, m, x, b){
  y <- a - exp(m*-x + b)
  return(y)
}

a_i <- 583
m_i <- 0.0025
b_i <- 3.8

noise <- 2*rnorm(800)

xs <- 1:800
data <- calc_exp(a_i, xs, m_i, b_i) + noise

plot(xs, data)

ys <- calc_exp(a_i, xs, m_i, b_i)
lines(xs, ys, col = "blue")

fit <- nls(ys~calc_exp(a, m, xs, b), start = c(a = a_i, m = m_i, b = b_i)
       , trace = T)

(我认为我不能线性化该函数并使用lm(),因为没有用于添加和减去的日志规则,并且您无法使用此处的数据创建线性对数 - 日志图<) / p>

P.S。谢谢你的帮助 - 我是堆栈溢出的新手

0 个答案:

没有答案