首页 > 解决方案 > nls 无法拟合指数曲线来完美数据

问题描述

我试图使用函数将指数模型拟合到一些预先计算的数据nlsr。但是,计算并完全适合我的模型的数据不能由 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

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

标签: rcurve-fittingexponentialnls

解决方案


推荐阅读