Я разместил ссылку на файл .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
Я пытаюсь согласовать свои данные с моделью экспоненциального затухания. Насколько я понимаю, эта ошибка обычно происходит из-за плохих начальных параметров. Однако я не понимаю, почему начальные параметры здесь плохие или как это исправить. У меня есть другой dataframe с очень похожими исходными данными (dat2.RData), который прекрасно работает с приведенным выше кодом. Я составил здесь необработанные данные для обоих фреймов. Если я приведу начальные параметры, такие как:
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 для моих данных не могут go ниже 0). Могу ли я добавить это как ограничение?