为多个系列寻找 NLS

Finding NLS for multiple series

我想拟合模型/使用 70 系列查找函数形式。我对它们每个都有 30 个值。该图显示趋势不是线性的,所以我正在尝试使用 NLS。

不确定这是否正确。我以前没有实施过。我应该使用其他东西来建模吗?我收到以下错误:

Error in nls(y ~ a * exp(b * x), start = list(a = a_start, b = b_start)) :
singular gradient

x 的值为 1:30,重复 70 次。 Y 值在 0 和 1 之间变化。我应该使用 71 个向量(长度为 30)还是应该将它们全部收集在两列中。目前,我已将它们全部收集在两列中。

数据看起来像这样:


a_start<-0.2
b_start<-2*log(2)/a_start

问题是您的公式无法准确反映您的数据。 y ~ a * exp(b * x) 永远不会看起来像你的数据,所以你会得到没有任何意义的尖锐梯度。

试试这个:

#some made up data, since none provided
x <- runif(1000) * 30
y <- -0.9 * exp(-0.5 * x) + 1.1 + rnorm(length(x), sd=0.1)

fit <- nls(y ~ a * exp(b * x) + c, start = list(a = -1, b=-.1, c=1))

plot(x,y)
lines(x[order(x)], predict(fit)[order(x)], col="red", lwd=4)