在R中使用nls函数时,为什么会出现“奇异梯度”错误?

时间:2020-03-25 07:01:49

标签: r nls model-fitting

我已经放置了一个指向.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)。有什么办法可以添加它作为约束?

0 个答案:

没有答案