6

を使用していくつかの指数データをフィッティングしてい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実行されないため、機能しません...

何か案は?

ありがとうニコ

4

1 に答える 1

11

私は通常このトリックを使用します:

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

}
于 2010-06-03T08:27:33.690 に答える