Bester Jens,
danke fuer den hinweis auf das anfaengerpraktikum.
ich habe versucht deine erleuterungen umzusaetzen.
meine orginalfunktion g[x] linearisiere ich mittels trans[g[x]].
also rechne ich meine daten fd={x, y} in {x, trans[y]} um.
der urspruengliche fehler soll fuer alle daten gleich sein (also sigma =1
bezw. bei deinen erleuterungen delta =1).
ich verwende also NonlinearFit ohne Weights option um die orginaldaten zu
fitten.
jetzt kommts ich versuche nun die transormierten daten mit der
transformirten funktion mittels Regress zu fitten. die notwendigen gewichte
errechne ich indem ich meine transformationsfunktion trans differenziere und
die differenzierte funktion auf die daten anwende. die ermittelten werte
werden alle mit delta=1 multipliziert (oder eben mit garnichts).
anschliessend wird 1/fehler^2 gebildet um als gewicht zu dienen.
wie man sieht liefern beide fits voellig unterschiedliche ergebnisse.
was mache ich falsch ?
muessten die beiden ergebnisse (bis auf numerische probleme) nich voellig
uebereinstimmen wenn die gewichte richtig gewaehlt sind ?
habe ich die gewichte richtig gewaehlt ?
wie waehle ich sie richtig ?
Beste Gruesse Robert
In[189]:=
<< "Statistics`LinearRegression`"
In[193]:=
<< "Statistics`NonlinearFit`"
In[235]:=
g[x_] := 1/(a + b*x);
In[236]:=
f[x_] := g[x] /. {a -> 3, b -> 7};
In[237]:=
trans[x_] := 1/x;
In[238]:=
gd = Table[{x, Random[]/100 + f[x]},
{x, 1, 10}];
In[239]:=
fd = ({First[#1], trans[Last[#1]]} & ) /@ d;
In[240]:=
NonlinearFit[gd, g[x], {x}, {{a, 1}, {b, 1}}]
Out[240]=
1/(3.428 + 5.970*x)
In[333]:=
r = Regress[fd, {1, x}, x, RegressionReport ->
BestFit, Weights ->
(Evaluate[D[trans[#1], #1]] & ) /@
Last /@ fd^(-2)];
trans[BestFit /. r]
Out[334]=
1/(13.436 + 4.426*x)
---
Robert Nowak (robert.nowak@XXXXXXX.at)
Ionen Mikrofabrikations Systeme GmbH
A-1020 Wien, Schreygasse 3, Austria
Phone: (+43 1)2144894-32, Fax: (+43 1)2144894-99
----- Original Message -----
From: Jens-Peer Kuska <kuska@XXXXXXX.de>
To: Robert Nowak <robert.nowak@XXXXXXX.at>
Cc: Deutsche Mathematica News Group <dmug@XXXXXXX.ch>
Sent: Tuesday, March 07, 2000 6:03 PM
Subject: Re: Fit, Weights
> Hallo,
>
> >
> > 1. wie geht das, wie errechnet man die korrigierten gewichte (wenn geht
im
> > allgemeinen nicht nur fuer das spezielle beispiel)?
>
> Fehlerfortpflanzung ? Also eigentlich hat man das im Anf"angerpraktikum,
> dort gibt es auch immer sch"one Regeln, die alle auf einer
> Taylorentwicklung
> basieren weil man ja berechnen will: ich kenne den Fehler delta der
> Gr"osse
> x und berechne damit eine Gr"osse f[x], wie gross ist der Fehler von
> f[x] also:
>
> f[x]=f[x]+f'[x]*delta
>
> was uns zeigt der Fehler von f[x] ist f'[x]*delta. Das w"urde war einen
> Mathematischen Statistiker in den Irrsinn treiben, aber dazu braucht es
> nicht viel.
>
> > 2. kann man die gewichte bei Fit[] so wie bei NonlinearFit[]
> > berucksichteigen ?
>
> Bei NonlinearFit[]/NonlinearRegress[] gibt es die Option Weights mit dem
> man
> die Gewichte angeben kann.
>
> > 3. kann man prizipiell gewichte ungleich 1 beim linearen fitten
> > beruecksichtigen ?
>
> Prinzipell ja, man kann die lineare Regression (die ja Fit[] entspricht)
> benutzen und dort mit der Option Weights die Gewichte angeben.
> Bei Fit[] selbst geht das nicht.
>
> Gruss
> Jens
>