Hallo Udo,
vielen Dank für das geduldige Wälzen unseres Problems!
Bei den verschiedenen j-Exponenten, mit denen die Gewichte eingehen
können, ist es aber leider so, dass der so ermittlelte optimale
Exponent von der Amplitude des Lorentz' abhängt. Für Daten mit einer
grossen maximalen Ammplitude sind gewichteter Fit (diff^2 / sigma^2)
und ungewichteter Fit fast gleichauf, nur für kleine Amplituden
weichen die beiden Methoden voneinander ab. Das ist misslich, denn
der Schätzer für einen Parameter sollte schon von den Daten
unabhängig sein ...
Die einzige "gute" Fitmethode, die wir bei unseren Versuchen
gefunden haben, ist, ungewichtet (bwz. alle Punkte gleich gewichtet)
vorzugehen. Die zusätzliche Information über die Statistik der
Daten können wir so aber leider nicht einbringen.
> Der Fit ist aber gut. Das Problem ist eher, dass im Bereich des
> Maximums der Ausgangslorentzkurve nur sehr wenige Punkte zu liegen
> kommen. Wenn diese alle auf dieselbe Seite streuen, verzerrt es
> den Fit ganz klar, i. e. die Startwerte können nicht getroffen
> werden.
Ja, das ist ein weiterer Punkt, den wir auch schon ähnlich
beobachtet haben. Mit Gewichtung spielt es eine gesteigerte Rolle,
ob man viele weit von der Linienmitte entfernte Punkte miteinbezieht
(grosses relatives Gewicht) oder nur die "Guten" in der Mitte.
Datenauswahl treffen ist aber nicht gerade, um die Fitmethode zu
"verbessern". Vielmehr sollten die Fitresultate für alle Untermengen
der Daten halbwegs übereinstimmen. Das ist wiederum für die
ungewichtete Methode am besten erfüllt. Grübel ..
Viele Grüße,
Martin
On Saturday 07 August 2004 17:05, you wrote:
> Hallo Martin,
>
> das beiliegende Bildchen ist für die Fitparameter
> Weight: 0 BestFitParameters: a = 19.0559 c = 0.0201002 g = 0.92473
>
> das sieht zahlenmässig schlecht aus und spricht anscheinend gegen die
> Weights -> Automatic. Deshalb habe ich die Bildchen nun doch erzeugt.
> Der Fit ist aber gut. Das Problem ist eher, dass im Bereich des Maximums
> der Ausgangslorentzkurve nur sehr wenige Punkte zu liegen kommen. Wenn
> diese alle auf dieselbe Seite streuen, verzerrt es den Fit ganz klar, i.
> e. die Startwerte können nicht getroffen werden.
>
> Mit den besten Grüssen
> Udo.
>
> In[43]:=
> With[{a = 20., c = 0., g = 1., xL = -2., xR = 2., anZ = 100, j = 0},
> data = ({#, Lorentz[#, a, c, g] + Random[NormalDistribution[0.,
> sigma[Lorentz[#, a, c, g]]]]} & ) /@ Sort[Table[Random[Real, {xL,
> xR}, 8], {anZ}]];
> If[Length[Select[Last[Transpose[data]], Negative]] > 0,
> Print["Negative data point(s) generated."];
> Return[$Failed]
> ];
> pic = ListPlot[data, DisplayFunction -> Identity];
> {a2, c2, g2} = {a1, c1, g1} /. BestFitParameters /.
> NonlinearRegress[data, Lorentz[x1, a1, c1, g1], {x1}, {a1, c1, g1},
> Weights -> (sigma[#]^j &), RegressionReport -> BestFitParameters];
> Print["Weight: ", j, " BestFitParameters: a = ", a2, " c = ", c2, "
> g = ", g2];
> Show[{pic,
> Plot[Lorentz[x2, a2, c2, g2], {x2, xL, xR}, PlotStyle -> RGBColor[1,
> 0, 0],
> DisplayFunction -> Identity],
> Plot[Lorentz[x2, a, c, g], {x2, xL, xR}, PlotStyle -> RGBColor[0, 0,
> 1],
> DisplayFunction -> Identity]}, DisplayFunction -> $DisplayFunction]
> ]
>