nls无法拟合指数曲线来完善数据

时间:2019-04-30 14:01:12

标签: r curve-fitting exponential nls

我试图使用nls中的函数r使指数模型适合一些预先计算的数据。 但是,nls无法拟合计算出的并完全适合我的模型的数据,尽管它可以处理稍有偏差的数据。 现在我在想,如果我做错了事...

以下是无法正常工作的示例代码:

times <- c(0,10,20,30,40,50,60)
A3 <- data.frame(time=times, intensity=c(0))
# calculating some optimal data:
A3$intensity <- 200*exp(-0.022*A3$time)

# do the fitting:
nls(data=A3, formula=intensity~200*exp(b * time), start=c(b=-0.022))

如您所见,我正在将用于计算数据的完全相同的公式传递给nls。另外,我将确切的系数传递给nls。仍然无法将数据拟合到模型中……但是相反,它告诉我已超过了迭代次数(即50)。

但是,如果我操纵数据以使强度稍微降低,它就会突然起作用。

A3p1 <- A3
#increasing the intensities by 1
A3p1$intensity <- A3p1$intensity + 1

nls(data=A3p1, formula=intensity~200*exp(b * time), start=c(b=-0.022))

在这种情况下,它可以正常工作,甚至返回足够接近的系数:-0.02167

任何人都可以解释一下我,为什么会发生这种情况,以及我需要如何调整代码以获得正确的结果?

0 个答案:

没有答案