Estoy ajustando algunos datos exponenciales usando nls
.R: errores de captura en `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 lo cual los parámetros iniciales proporcionaron (100, -3 y 0) funcionan bien. A veces, sin embargo, tengo datos que no van bien con esos parámetros y recibo errores de nls
(por ejemplo, "gradiente singular" o cosas por el estilo). ¿Cómo "atrapo" estos errores?
Me trataron de hacer algo como
fit <- NULL
fit <- nls(...)
if (is.null(fit))
{
// Try nls with other starting parameters
}
Pero esto no va a funcionar porque nls
parece detener la ejecución y el código después de nls
no ejecutará ...
¿Alguna idea?
Gracias nico
Great! ¡Eso es exactamente lo que necesitaba! Acabo de agregar un parámetro 'silent =" TRUE "' para probar, por lo que no me imprimen errores. – nico
@kohske La lógica de su respuesta tiene sentido. Es útil saber sobre el comando 'try' pero esperaba una llamada nls en la línea cuatro de su publicación y no estoy familiarizado con la función nul que aparece allí. Una búsqueda rápida aquí no me ha ayudado a descubrir qué hace nul. ¿Alguna pista sobre dónde encontrar más información sobre esto? Tal vez no sé qué paquete debería requerir? –
@JasonWhyte Eso es solo un error tipográfico. Quise decir 'try (fit <- nls (...))' y fit será NULL cuando 'nls' induce un error. – kohske