我正在尝试使用该nls
函数在 R 中拟合这个非线性模型。
这是我要拟合的数据:
tab2 = data.frame(n = c(10,100,1000,10000,100000), Time = c(3.989220e-03,
1.994681e-02, 3.311172e-01, 5.142252e+00, 1.314725e+03))
我们看到时间呈指数增长,所以我想使用nls
. 这是我到目前为止所尝试的:
mod4 = nls(Time ~ exp(a + b*n), data = tab2, start = list(a = -3, b = 0))
但是,这不起作用,并且出现以下错误消息:
Error in numericDeriv(form[[3L]], names(ind), env) : Missing value or an
infinity produced when evaluating the model
我不知道为什么会这样,但我猜它与这些起始值有关?我通过使用 lm 估计模型得到它们:
mod3 = lm(log(Time) ~ n, data = tab2); coef(mod3)
(Intercept) n
-2.5908574883 0.0001010623
由于这几乎是相同的模型,我认为系数会匹配,但是当我使用接近它们的值作为起始值时,nls
模型不起作用。
关于为什么会发生这种情况的任何建议?