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 не выполнится...

Какие-либо идеи?

Спасибо nico

6
задан nico 3 June 2010 в 06:26
поделиться

1 ответ

Я обычно использую этот трюк:

params<-... # setup default params.

while(TRUE){

fit<-NULL
try(fit<-nls(...)); # does not stop in the case of error

if(!is.null(fit))break; # if nls works, then quit from the loop

params<-... # change the params for nls

}
10
ответ дан 10 December 2019 в 00:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: