R: ловить ошибки в `nls`
Я подгоняю некоторые экспоненциальные данные, используяnls
.
Код, который я использую:
fit <- nls(y ~ expFit(times, A, tau, C), start = c(A=100, tau=-3, C=0))
expFit
определяется как
expFit <- function(t, A, tau, C)
{
expFit <- A*(exp(-t/tau))+C
}
Это хорошо работает для большинства моих данных, для которых предоставленные начальные параметры (100, -3 и 0) работают хорошо. Иногда, однако, у меня есть данные, которые не соответствуют этим параметрам, и я получаю ошибки отnls
(например, «единственный градиент» или тому подобное). Как мне «поймать» эти ошибки?
Я пытался сделать что-то вроде
fit <- NULL
fit <- nls(...)
if (is.null(fit))
{
// Try nls with other starting parameters
}
Но это не сработает, потому чтоnls
кажется, чтобы остановить выполнение и код послеnls
не выполнит ...
Есть идеи?
Спасибо нико