Wie polynomial zu Daten mit Fehlerbalken passen

8

Ich verwende derzeit numpy.polyfit (x, y, deg), um ein Polynom an experimentelle Daten anzupassen. Ich würde jedoch gerne ein Polynom anpassen, das die Gewichtung basierend auf den Fehlern der Punkte verwendet.

Ich habe gefunden scipy.curve_fit , die Gewichte verwendet, und ich nehme an, ich könnte einfach die Funktion "f" auf die Form eines Polynoms meiner gewünschten Ordnung setzen, und meine Gewichte in "Sigma" setzen, was mein Ziel erreichen sollte.

Ich frage mich, gibt es eine andere, bessere Möglichkeit, das zu tun?

Vielen Dank.

    
Jdog 12.07.2011, 10:58
quelle

3 Antworten

7

Sehen Sie sich Ссылка an, insbesondere den Abschnitt "Macht ein Macht-Gesetz zu Daten mit Fehlern" . Es zeigt, wie man scipy.optimize.leastsq mit einer Funktion verwendet, die eine Fehlerbewertung enthält.

    
Bernhard 12.07.2011, 12:22
quelle
14

Für die gewichtete Polynomanpassung können Sie verwenden:

%Vor%

siehe Ссылка

Wichtig: In dieser Funktion sollten die Gewichte nicht als 1/variance angegeben werden (was in vielen gewichteten Anwendungen die übliche Form ist), sondern als 1/sigma

Obwohl curve_fit und leastsq viel allgemeinere und leistungsfähigere Optimierungstools sind als polyfit (da sie nur any Funktion anpassen können), hat polyfit den Vorteil, dass es nachgibt eine (exakte) analytische Lösung und ist daher wahrscheinlich viel schneller als iterative Approximationsmethoden wie curve_fit und leastsq - insbesondere im Falle der Anpassung von Polynomen an mehrere y-Datenmengen (erhalten am selben x-Vektor)

Update: Ab Version 1.7 verwendet numpy.polyfit auch Gewichte als Eingabe (die idealerweise als 1/sigma , nicht 1/variance angegeben werden sollte)

    
Rolf Bartstra 03.10.2012 14:18
quelle
-2

Hier ist, wie ich es gemacht habe, mit vielen Kommentaren!

Hinweis: Ich habe es mit qth und polynomischen Anpassungen der n-ten Ordnung gemacht.

%Vor%     
8765674 16.08.2012 16:15
quelle

Tags und Links