【发布时间】:2018-11-21 08:59:44
【问题描述】:
我正在尝试使用 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 模型不起作用。
关于为什么会发生这种情况的任何建议?
【问题讨论】:
-
你试过
getInitial吗?它是否给出相同的起始值? -
不,我没有,那怎么用?抱歉,这是我第一次使用
nls。 -
类似的东西;
getInitia(Time ~ exp(a + b*n), data = tab2, start = list(a = -3, b = 0))。看看帮助文件。此外,通常n将是您的响应,受Time影响。这是你的目标吗?在这种情况下,您需要在模型中交换这些回合。 -
也看看这个问题,和你一样报错stackoverflow.com/questions/38207716/…
标签: r compiler-errors nls