Ich passe einige exponentielle Daten mit nls
.R: Fangfehler in `nls`
Der Code Ich verwende ist:
fit <- nls(y ~ expFit(times, A, tau, C), start = c(A=100, tau=-3, C=0))
expFit
als
expFit <- function(t, A, tau, C)
{
expFit <- A*(exp(-t/tau))+C
}
Das funktioniert gut für die meisten meiner Daten, für die die Startparameter (100, -3 und 0) gut funktionieren. Manchmal habe ich jedoch Daten, die mit diesen Parametern nicht gut gehen, und ich bekomme Fehler von nls
(z. B. "singular gradient" oder solche Dinge). Wie "erfasse" ich diese Fehler?
Ich habe versucht, so etwas wie
fit <- NULL
fit <- nls(...)
if (is.null(fit))
{
// Try nls with other starting parameters
}
Aber das wird nicht funktionieren zu tun, weil nls
scheint die Ausführung und den Code nach nls
zu stoppen nicht ausführen ...
Irgendwelche Ideen?
Dank nico
Great! Genau das habe ich gebraucht! Ich habe gerade einen 'silent = "TRUE" 'Parameter hinzugefügt, um Fehler zu vermeiden. – nico
@kohske Die Logik Ihrer Antwort macht Sinn. Es ist nützlich, über den 'try'-Befehl Bescheid zu wissen, aber ich habe einen nls-Anruf in der vierten Zeile Ihres Posts erwartet und bin nicht vertraut mit der Nul-Funktion, die dort erscheint. Eine schnelle Suche hat mir nicht geholfen herauszufinden, was Nul macht. Haben Sie Hinweise, wo Sie mehr darüber erfahren können? Vielleicht weiß ich nicht, welches Paket ich benötigen sollte? –
@JasonWhyte Das ist nur ein Tippfehler. Ich meinte 'try (fit <- nls (...))' und fit wird NULL sein, wenn 'nls' einen Fehler verursacht. – kohske