Ich weiß, dass es einige ähnliche Fragen gibt, aber da keiner von ihnen mich weiter brachte, entschied ich mich, einen meiner eigenen Fragen zu stellen. Es tut mir leid, wenn die Antwort auf mein Problem bereits irgendwo da draußen ist, aber ich konnte es wirklich nicht finden.Probleme mit curve_fit von scipy.optimze
Ich versuchte, f (x) = a * x ** b an eher lineare Daten mit curve_fit anzupassen. Es kompiliert richtig, aber das Ergebnis ist weg Art und Weise, wie unten dargestellt:
Die Sache ist, dass ich weiß nicht wirklich, was ich tue, aber auf der anderen Seite immer passend mehr eine Kunst als Wissenschaft und es gab mindestens einen allgemeinen bug with scipy.optimize.
Meine Daten sieht wie folgt aus:
x-Werte:
[16.8, 2.97, 0.157, 0.0394, 14.000000000000002, 8.03, 0.378, 0.192, 0.0428, 0.029799999999999997, 0.000781, 0.0007890000000000001]
y-Werte:
[14561.766666666666, 7154.7950000000001, 661.53750000000002, 104.51446666666668, 40307.949999999997, 15993.933333333332, 1798.1166666666666, 1015.0476666666667, 194.93800000000002, 136.82833333333332, 9.9531566666666684, 12.073133333333333]
, dass mein Code ist (ein wirklich schönes Beispiel in der letzten Antwort mit zu that question):
Die Startwerte stammen von einer Anpassung mit Gnuplot, das ist plausibel, aber ich muss es überprüfen.
[ 4.67885857e+03 6.24149549e-01]
chi-square
424707043.407
Ich denke, dies ist eine schwierige Frage ist daher vielen Dank im Voraus:
(, dann Chi-Quadrat ersten p0 ausgestattet, p1) Dies ist Ausgabe gedruckt!
Vielen Dank, die Verwendung von 'sigma' gab mir eine gut aussehende Passform. Ich habe es vorher nicht benutzt, weil ich dachte, es sei a) nicht wichtig und b) für Fehler in den 'xvalues'. (Was ich nicht verstehe ist, warum es keinen Parameter für Fehler in 'xvalues' gibt.) Auch ich denke, ein geschätzter Fehler von 1 ist ein Designfehler und würde etwas wie '0.1 * value' bevorzugen. Würdest du zustimmen? Glauben Sie, dass es sich lohnt, einen Fehlerbericht einzureichen? Schöne Grüße. – Fabi
Nicht wirklich - der Weg der geringsten Überraschung für mich im Code wäre, dass wenn keine Fehler gegeben sind, dann sollte angenommen werden, dass die Fehler konstant sind. Das wäre normalerweise das, was du willst. Die [Dokumentation ist auch hier ziemlich klar] (http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.curve_fit.html) –
Ich bin mir nicht sicher. Ich habe immer gedacht, dass es auf eine Weise sein muss, die keinen Einfluss darauf hat, wie wichtig ein Punkt ist, da a priori kein Unterschied zwischen ihnen besteht. Weißt du, ob 0 möglich ist? – Fabi