procesos - R: detecta errores en `nls`
ejemplo de control estadistico de procesos en una empresa (1)
Usualmente uso este truco:
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
}
Estoy ajustando algunos datos exponenciales usando nls
.
El código que estoy usando es:
fit <- nls(y ~ expFit(times, A, tau, C), start = c(A=100, tau=-3, C=0))
expFit
se define como
expFit <- function(t, A, tau, C)
{
expFit <- A*(exp(-t/tau))+C
}
Esto funciona bien para la mayoría de mis datos, para los cuales los parámetros de inicio proporcionados (100, -3 y 0) funcionan bien. A veces, sin embargo, tengo datos que no van bien con esos parámetros y obtengo errores de nls
(por ejemplo, "gradiente singular" o cosas por el estilo). ¿Cómo "atrapo" estos errores?
Traté de hacer algo como
fit <- NULL
fit <- nls(...)
if (is.null(fit))
{
// Try nls with other starting parameters
}
Pero esto no funcionará porque nls
parece detener la ejecución y el código después de que nls
no se ejecute ...
¿Algunas ideas?
Gracias nico