Gibt es einfache Möglichkeit mit python zu extrapolieren Daten, die in die Zukunft weist?
Habe ich eine einfache numpy-array, für jedes Datum gibt es einen Punkt. So etwas wie dieses:
>>> import numpy as np
>>> from datetime import date
>>> from datetime import date
>>> x = np.array( [(date(2008,3,5), 4800 ), (date(2008,3,15), 4000 ), (date(2008,3,
20), 3500 ), (date(2008,4,5), 3000 ) ] )
Ist es einfach Weg zu extrapolieren Daten, die in die Zukunft weist: Datum(2008,5,1), date(2008, 5, 20) etc? Ich verstehen, es kann getan werden mit mathematischen algorithmen. Aber hier Suche ich für einige niedrig hängende Früchte. Eigentlich mag ich, was numpy.linalg.lösen tut, aber es sieht nicht anwendbar für die extrapolation. Vielleicht bin ich die absolut falsche.
Eigentlich um genauer zu sein Baue ich ein burn-down-chart (xp term): x=Datum und y=Volumen der Arbeit zu tun', so hab ich das bereits getan sprints und das möchte ich visualisieren, wie sich die Zukunft sprints gehen wird, wenn die aktuelle situation anhält. Und zum Schluss möchte ich Vorhersagen, das release-Datum. So ist die Natur von 'Volumen zu tun" ist, es geht immer nach unten auf burn-down-charts. Auch ich möchte den extrapoliert release-Datum: das Datum, wenn das Volumen null wird.
Dies ist für alle zeigen, um dev-team, wie die Dinge gehen. Die Genauigkeit ist nicht so wichtig hier 🙂 Die motivation des dev-team ist der wichtigste Faktor. Das heißt, ich bin vollkommen zufrieden mit der sehr Ungefähre Hochrechnung Technik.
- Wenn Sie googeln für "Statistik python" was haben Sie? Fragen zu den statistischen Pakete, die Sie gefunden?
- Es ist schwer zu reden, keine extrapolation, ohne zu wissen, die Art der Daten in Frage. Die oben genannten, so weit wie man sehen kann, kann alles (nicht ohne random-Werte), so zu sprechen, über jeden praktischen Ansatz wäre, nur spekulieren. Verfeinern Sie die Frage.
- Sie haben absolut Recht! raffiniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist alles zu einfach für die extrapolation zu erzeugen Müll; versuchen Sie dies.
Viele verschiedene extrapolationen sind natürlich möglich;
einige produzieren offensichtlich Müll, einige nicht-offensichtliche Müll, viele sind schlecht definiert.
Hinzugefügt: ein Scipy ticket sagt,
"Das Verhalten der FITPACK Klassen in
scipy.interpolieren ist viel komplexer als die docs führen würde man glauben" --
imho gilt für die anderen software doc zu.
Einen einfachen Weg das zu tun, extrapolationen ist die Verwendung einer Interpolation Polynome oder splines: es gibt viele Routinen, die für diese in scipy.interpolieren, und es gibt ganz einfach zu bedienen (einfach das (x, y) Punkte, und Sie erhalten die Funktion [a callable, genau]).
Nun, wie angedeutet worden in diesem thread, Sie können nicht erwarten, dass die extrapolation zu werden, immer aussagekräftig (vor allem, wenn Sie weit Weg von Ihrer Daten-Punkte), wenn Sie nicht über ein Modell für Ihre Daten. Aber ich möchte Sie ermutigen, zu spielen mit der Polynom-oder spline-Interpolationen aus scipy.interpolieren, um zu sehen, ob die Ergebnisse, die Sie erhalten, die zu Ihnen passen.
Mathematische Modelle sind der Weg zu gehen in diesem Fall. Zum Beispiel, wenn Sie haben nur drei Daten-Punkte können Sie haben absolut keinen Hinweis darauf, wie sich der trend entwickeln wird (könnte einer von beiden Parabel.)
Holen Sie einige Statistiken Kurse und versuchen, die Implementierung von algorithmen. Versuchen Wikibooks.
Müssen Sie swpecify über die Funktion, die Sie brauchen extrapolation.
Als Sie verwenden können, regression http://en.wikipedia.org/wiki/Regression_analysis zu finden paratmeters der Funktion. Und extrapolieren diese in die Zukunft.
Zum Beispiel:
übersetzen Daten in die x-Werte und verwenden Sie den ersten Tag als x=0, für Ihr problem die Werte werden soll aproximatly
(0,1.2), (400,1.8),(900,5.3)
Nun Sie entscheiden, dass seine Punkte liegt auf der Funktion vom Typ
a+bx+cx^2
Verwendung der Methode der kleinsten squers zu finden, die a,b und c
http://en.wikipedia.org/wiki/Linear_least_squares
(ich volle Quelle, aber später, beacuase ich habe keine Zeit für diese)