DMUG-Archiv 2007

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Neues "Rätsel: um FindFit

Hallo,

hier schon das nächste Rätsel, das mir FindFit aufgibt:  Es scheint
wirklich extrem von den Anfangswerten abzuhängen.

Im angehängten Notebook verwende ich (fast[1]) die gleiche Funktion wie
in der ersten Mail, diesmal mit richtigen, also auch verrauschten Daten.
Ich habe "händisch" gute Startwerte für den Fit gefunden und starte ihn
einmal mit exakt diesen Werten, einmal mit leicht variierten:

Map[{#[[1]], (#[[1]] /. guess), #[[2]]} &, variedguess] // TableForm

 donorpos       -0.07 0.
 donorheight    1200. 1000.
 donorwidth     0.15  0.15
 donorasym      1.3   1.3
 unfoldedheight 120.  100
 unfoldedwidth  0.2   0.2
 unfoldedpos    0.6   0.5
 nativeheight   300.  100
 nativepos      0.93  0.94
 nativewidth    0.2   0.15
 nativeasym     0.8   0.9

Aber bei den variierten gibt es dann die Fehlermeldung

,----
| FindFit::cvmit: Failed to converge to the requested accuracy or \
| precision within 100 iterations. >>
`----

und ein in der Tat völlig falshces Fitergebnis.  Noch wilder wird es
übrigens, wenn man "donorheight" auf 100 setzt...

Dieses Verhalten ist ein Problem für mich.  Ich möchte eine große Zahl
von Sätzen von Datensätzen fitten, von denen ich jeweils nur den ersten
inspizieren und die Startwerte festlegen wollte.  Die jeweils folgenden
unterscheiden sich systematisch lediglich in "unfoldedpos", vor allem in
den *height-Parametern, und evtl. (wegen unterschiedlichem Hintergrund)
in den *width-Parametern.

Da ich am Ende constraints brauche, habe ich das mit Mma 5.1 mit einer
selbstgeschriebenen Funktion gelöst, die die Fehlerquadratsumme bildet
und mit NMinimize und constraints die besten Werte findet.  Das geht
leider ziemlich langsam.  Nun wollte ich mit Mma 6 gerne Findfit
verwenden, das ja jetzt auch Constraints kann.  Aber wenn das so wacklig
ist in Bezug auf die Startwerte, dass ich jeden Datensatz mit der Hand
optimieren müsste, geht der Geschwindigkeitsvorteil verloren...

Weiß jemand Abhilfe?

Danke im Voraus, Frank


[1] da ich negative Werte für "asym" erhalten habe, habe ich es in der
Definition durch Sqrt[asym^2] ersetzt
-- 
Frank Küster
Single Molecule Spectroscopy Protein Folding @ Inst. f. Biochemie, Univ. Zürich
Debian Developer (teTeX/TeXLive)

Attachment: minimal2.nb
Description: Mathematica Notebook document

Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html