Ich versuche, einige Daten aus einem Simulationscode, den ich ausgeführt habe, um eine Macht Gesetz Abhängigkeit herauszufinden. Wenn ich eine lineare Anpassung zeichne, passen die Daten nicht sehr gut.versucht, vernünftige Werte von scipy powerlaw fit zu bekommen
Hier ist der Python-Skript ich die Daten passen bin mit:
#!/usr/bin/env python
from scipy import optimize
import numpy
xdata=[ 0.00010851, 0.00021701, 0.00043403, 0.00086806, 0.00173611, 0.00347222]
ydata=[ 29.56241016, 29.82245508, 25.33930469, 19.97075977, 12.61276074, 7.12695312]
fitfunc = lambda p, x: p[0] + p[1] * x ** (p[2])
errfunc = lambda p, x, y: (y - fitfunc(p, x))
out,success = optimize.leastsq(errfunc, [1,-1,-0.5],args=(xdata, ydata),maxfev=3000)
print "%g + %g*x^%g"%(out[0],out[1],out[2])
der Ausgang I erhalten: -71.205,3 + 71.174,5 * x^-9.79038e-05
Während auf der Schau dir die Passform an sieht ungefähr so gut aus, wie du es von einer minimalsten Passform erwarten würdest, die Form der Ausgabe stört mich. Ich hatte gehofft, dass die Konstante nahe an der Stelle sein würde, wo man die Null erwarten würde (etwa 30). Und ich hatte erwartet, eine Leistungsabhängigkeit von einem größeren Bruchteil als 10^-5 zu finden.
Ich habe versucht, meine Daten zu reskalieren und mit den Parametern zu spielen, um optimize.leastsq ohne Glück zu spielen. Ist das, was ich erreichen will, möglich oder erlauben meine Daten das nicht? Die Berechnung ist teuer, daher ist es nicht trivial, mehr Datenpunkte zu erhalten.
Danke!
In der Dokumentation sieht es so aus, als ob diese Funktion erwartet, dass das 'params' Argument zweit und das' xdata' Argument das erste ist. Ich bezweifle, dass dies die Dinge ändern wird, aber kannst du das versuchen und sehen, was passiert? – ely
N/M Ich habe gerade diese Änderung vorgenommen und die gleichen Ergebnisse erzielt wie Sie. Es hilft Ihnen nicht, zeigt aber, dass diese Dokumente viel besser sein müssen. – ely
Die einzige andere Sache, die ich denken kann, ist: Können Sie die Standardfehler dieser Schätzungen zurück erhalten? In O.L.S. Regression gibt es eine schöne Formel für die Standardfehler der Koeffizienten. Mit solch einem kleinen Datensatz kann ich glauben, dass sie extrem groß sind. Möglicherweise sehen Sie nur kleine Stichprobengrößeneffekte. Haben Sie das mit einem größeren Datensatz versucht, sagen Sie ~ 100 Beobachtungen? – ely