我已经放置了一个指向.RData文件的链接,该文件具有我的数据帧(“ dat.RData”),可以通过以下R代码运行:
nls(y ~ SSasymp(t, yf, y0, log_alpha), data = dat)
https://www.dropbox.com/sh/i7jphg3qhqub4o1/AABH9cGwsMfgHc-Tam7ta17Ka?dl=0
运行此代码时,出现错误:
Error in nls(y ~ cbind(1 - exp(-exp(lrc) * x), exp(-exp(lrc) * x)), data = xy, :
singular gradient
我正在尝试将数据拟合为指数衰减模型。 据我了解,此错误通常是由于错误的初始参数而发生的。但是,我不明白为什么初始参数在这里不好,或者如何解决。我有一个看起来非常相似的原始数据(dat2.RData)的另一个数据框,可以与上述代码很好地工作。 I have plotted the raw data for both dataframes here.如果输入初始参数,例如:
fit = nls(y ~ SSasymp(t, yf, y0, log_alpha), data = dat,start = list(yf=100,y0=0,log_alpha=-2))
...然后我得到输出:
Nonlinear regression model
model: y ~ SSasymp(t, yf, y0, log_alpha)
data: dat
yf y0 log_alpha
100.2767 -38.7204 -0.7667
residual sum-of-squares: 562.1
Number of iterations to convergence: 6
Achieved convergence tolerance: 4.602e-06
但是,我不希望我的模型的y0值为负(我的数据的y值不能低于0)。有什么办法可以添加它作为约束?