Ich habe eine Reihe von Daten und eine Messung an jedem dieser Termine. Id wie zu berechnen einen exponentiellen gleitenden Durchschnitt für jeden der Termine. Weiß jemand, wie dies zu tun Im neu zu python. Es scheint nicht, dass Durchschnittswerte in die Standard-Python-Bibliothek, die mich als ein wenig seltsam schlägt gebaut werden. Vielleicht Im nicht auf der Suche nach der richtigen Stelle. Also, angesichts der folgenden Code, wie könnte ich berechnen die bewegten gewichteten Durchschnitt der IQ-Punkte für Kalendertermine (theres vermutlich eine bessere Art und Weise, die Daten zu strukturieren, würde jeder Rat geschätzt werden) Ask Jan 28 09 at 18:01 My python is a Etwas rostig (jedermann kann frei fühlen, diesen Code zu redigieren, um Korrekturen vorzunehmen, wenn Ive die Syntax irgendwie verwirrte), aber hier geht. Diese Funktion bewegt sich von dem Ende der Liste an den Anfang rückwärts, wobei der exponentielle gleitende Durchschnitt für jeden Wert durch Rückwärtsarbeiten berechnet wird, bis der Gewichtungskoeffizient für ein Element kleiner als der gegebene Wert ist. Am Ende der Funktion kehrt es die Werte um, bevor die Liste zurückgegeben wird (so dass sie in der richtigen Reihenfolge für den Aufrufer liegen). (SEITE HINWEIS: Wenn ich eine andere Sprache als Python verwendet habe, erstelle ich zuerst ein leeres Array mit voller Größe und fülle es dann rückwärts, damit ich es nicht am Ende umkehren muss, aber ich glaube nicht, dass du es erklären kannst Eine große leere Array in python. And in Python-Listen, Anhängen ist viel weniger teuer als vorangestellt, weshalb ich baute die Liste in umgekehrter Reihenfolge. Korrigieren Sie mich, wenn Im falsch.) Das Alpha-Argument ist der Zerfallsfaktor auf jeder Iteration. Zum Beispiel, wenn Sie ein Alpha von 0,5 verwendet haben, würde der heutige gleitende Durchschnittswert aus den folgenden gewichteten Werten bestehen: Natürlich, wenn Sie eine riesige Palette von Werten erhalten haben, werden die Werte von zehn oder fünfzehn Tagen nicht viel dazu beitragen Heute gewichteter Durchschnitt. Mit dem epsilon-Argument können Sie einen Cutoff-Punkt festlegen, unterhalb dessen Sie sich nicht mehr um alte Werte kümmern (da deren Beitrag zum heutigen Wert unbedeutend ist). Youd rufen Sie die Funktion so etwas wie folgt auf: Ich weiß nicht, Python, aber für die Mittelung Teil, meinst du ein exponentiell verfallenden Tiefpass des Formulars, wo alpha dt / tau, dt der Zeitstep von Der Filter, tau die Zeitkonstante des Filters (die variable-timestep Form von diesem ist wie folgt, nur Clip dt / tau nicht mehr als 1,0) Wenn Sie etwas wie ein Datum filtern möchten, stellen Sie sicher, dass Sie in eine Gleitkomma-Menge wie von Sekunden seit 1. Januar 1970. Ich fand das obige Code-Snippet von Earino ziemlich nützlich - aber ich brauchte etwas, das kontinuierlich glatt einen Strom von Werten - so habe ich es umgestaltet : Und ich benutze es wie folgt: (wobei Pin. read () erzeugt den nächsten Wert Id wie zu konsumieren). Antwortete am 12. Februar 14 um 20:35 Im immer Berechnen EMAs mit Pandas: Hier ist ein Beispiel, wie es zu tun: Mehr infos über Pandas EWMA: beantwortet Oct 04 15 am 12:42 Don39t neuere Versionen von Pandas haben neue und bessere Funktionen. Ndash Cristian Ciupitu May 11 at 14:10 Beachten Sie, dass im Gegensatz zu ihrer Kalkulationstabelle, ich nicht berechnen die SMA, und ich nicht warten, um die EMA nach 10 Proben zu generieren. Dies bedeutet, meine Werte unterscheiden sich geringfügig, aber wenn Sie es Diagramm, es folgt genau nach 10 Proben. Während der ersten 10 Samples wird die EMA I berechnet. Die Zipline ist eine algorithmische Python-Handelsbibliothek. Es ist ein ereignisgesteuertes System, das sowohl Backtesting als auch Live-Trading unterstützt. Zipline wird derzeit in der Produktion als Backtesting - und Live-Trading-Engine eingesetzt, die Quantopian betreibt - eine freie, gemeinschaftszentrierte, gehostete Plattform für den Aufbau und die Durchführung von Handelsstrategien. Benutzerfreundlichkeit: Zipline versucht, sich aus dem Weg, so dass Sie auf Algorithmus-Entwicklung konzentrieren können. Siehe unten für ein Codebeispiel. Zipline kommt Batterien enthalten, da viele gängige Statistiken wie gleitende durchschnittliche und lineare Regression können leicht aus einem benutzerdefinierten Algorithmus zugegriffen werden. Die Eingabe von historischen Daten und die Ausgabe von Performance-Statistiken basieren auf Pandas DataFrames, um sich gut in das bestehende PyData-Ökosystem zu integrieren. Statistische und maschinelle Lernbibliotheken wie matplotlib, scipy, statsmodels und sklearn unterstützen die Entwicklung, Analyse und Visualisierung von State-of-the-Art-Handelssystemen. Installieren mit pip Wenn Sie alle erforderlichen Python-Abhängigkeiten benötigen (siehe Hinweis unten), können Sie Zipline mit pip installieren: Hinweis: Die Installation von Zipline über Pip ist etwas mehr als das durchschnittliche Python-Paket. Einfache Pip installieren Zipline wird wahrscheinlich fehlschlagen, wenn Sie nie installiert haben alle wissenschaftlichen Python-Pakete vor. Es gibt zwei Gründe für die zusätzliche Komplexität: Zipline versendet mehrere C-Erweiterungen, die Zugriff auf die CPython C-API erfordern. Um die C-Erweiterungen aufzubauen, benötigt pip Zugriff auf die CPython-Header-Dateien für Ihre Python-Installation. Zipline hängt von numpy. Die Kernbibliothek für das numerische Array-Computing in Python. Numpy hängt davon ab, dass die LAPACK linearen Algebra-Routinen zur Verfügung stehen. Da LAPACK und die CPython-Header binäre Abhängigkeiten sind, variiert die richtige Installationsmethode von Plattform zu Plattform. Unter Linux erwerben die Benutzer diese Abhängigkeiten generell über einen Paketmanager wie apt. Yum Oder pacman. Auf OSX, ist Homebrew eine beliebte Wahl mit ähnlichen Funktionalität. Weitere Informationen zum Erwerb binärer Abhängigkeiten für Ihre spezifische Plattform finden Sie in der vollständigen Zipline-Installationsdokumentation. Eine weitere Möglichkeit, Zipline zu installieren, ist über den conda Paketmanager, der als Teil von Anaconda kommt oder über pip install conda installiert werden kann. Einmal eingerichtet, können Sie Zipline von unserem Quantopian-Kanal installieren: Derzeit unterstützte Plattformen umfassen: Windows 32-Bit kann jedoch arbeiten, ist es derzeit nicht in kontinuierliche Integrationstests enthalten. Im nicht sicher der richtigen Lösung aber seit summiert den Durchschnitt von jedem Probe würde eine angemessene Menge von Rundungsfehler einzuführen. Hmm Ich frage mich, wenn die Trennung der gebrochenen Teil aus dem ganzen Teil helfen würde. Teilen Sie den ganzen Teil jeder Zahl durch den Zähler. Halten Sie drei laufende Summen: 1) der Durchschnitt der ganzen Teile, 2) der Rest von jeder Division und 3) der Bruchteil einer jeden Zahl. Jedes Mal, wenn der ganze Teil einer Zahl geteilt wird, wird das gesamte Teilergebnis zu der durchschnittlichen laufenden Summe addiert, und der Rest wird zu der verbleibenden laufenden Summe addiert. Wenn die verbleibende laufende Summe einen Wert größer oder gleich dem Zählwert erhält, wird sein dividiert durch die Zählung mit dem gesamten Teilergebnis zu der durchschnittlichen laufenden Summe addiert, und der Rest wird zu der restlichen laufenden Summe addiert. Auch wird bei jeder Berechnung der Bruchteil zur Bruchlaufsumme addiert. Wenn die Mittelung beendet ist, wird die verbleibende laufende Summe durch die Zählung geteilt, und das Ergebnis wird der durchschnittlichen laufenden Summe als eine fließende Zahl hinzugefügt. Zum Beispiel: Nun, was mit der fraktionalen laufenden Summe zu tun. Die Gefahr des Überlaufs ist hier viel weniger wahrscheinlich, obwohl es noch möglich ist, so dass man damit umgehen würde, wäre es, die gebrochene laufende Summe durch den Zähler am Ende aufzuteilen und es zu unserem Ergebnis hinzuzufügen: Eine Alternative wäre, den fraktionalen Betrieb zu überprüfen Summe bei jeder Berechnung, um zu sehen, ob sie größer oder gleich count ist. Wenn das passiert, tun Sie einfach das Gleiche, was wir mit der restlichen Summe machen. Excellent Jomit Vaghela 6-Mar-07 21:00 Ich mochte, was Sie gesagt haben kleine Jobs schnell zu großen Arbeitsplätzen. Denken an Optimierung während Codierung ist eine gute Praxis. Vielen Dank Mike DiRenzo 5-Mar-07 16:26 Dies ist das erste Mal, dass ich auf einen Ihrer Artikel reagiert haben. Ich bin aber ein sehr begeisterter Leser. Während des Studiums musste ich gewichtete gleitende Durchschnitte und einfache auch berechnen. Heck, hatte ich sogar einige meiner eigenen gleitenden durchschnittlichen Algorithmen in einer benutzerdefinierten ERP-Implementierung vor einiger Zeit auf der Grundlage einiger der gleichen Formeln, die ich in Operations 101 gelernt zu schaffen. Aber diese Umsetzung, mit Generika, weit überwiegt alles in Bezug auf die Optimierung, Einfachheit und verdammt richtige Coolness. Vielen Dank dafür. Einer Ihrer vielen Fans, In Ruhe und Stille, die Wahrheit wird klar. Gobgob 5-Mar-07 5:30 Wenn Ihr versuchen, einen einfachen gleitenden Durchschnitt zu berechnen, müssen Sie eine Sammlung, die ziemlich komplex für eine solche einfache Aufgabe zu halten. Wie wäre es mit einem ewma Seine 2 Zeilen Code, viel einfacher. Marc Clifton 5-Mar-07 5:47 Wie wäre es mit einem ewma Interessante Idee. Für Leser, die nicht wissen, was ein ewma ist, ist es ein exponentiell gewichtet Moving Average. Die Leute sind nur notorisch unmöglich. --DavidCrow Theres Keine Entschuldigung für nicht kommentieren Ihren Code. - John Simmons / outlaw Programmierer Leute, die sagen, dass sie ihren Code später umgestalten, um es gut zu machen nicht verstehen Refactoring, noch die Kunst und Handwerk der Programmierung. - Josh Smith pwasser 5-Mar-07 13:21 Eine Schätzung des gleitenden Mittelwertes, wenn die Behältergrße für den gleitenden Durchschnitt n ist, kann erhalten werden durch: NewAverage (((n-1) OldAverage) newValue) / n Dies funktioniert einmal Der Behälter ist voll (Probennummer n). Der Behälter, der teilweise voll ist, wird häufig behandelt, indem ein Samenwert für den anfänglichen gleitenden Durchschnitt (OldAverage) verwendet wird und dann diese Berechnung verwendet wird. Dies nimmt eine normale Verteilung der Werte etc. Sie waren beschäftigt Colin Angus Mackay 4-Mar-07 12:37 Posting zwei Artikel heute Abend. Große Arbeit Ich weiß nicht, wie Sie es tun. Ive erhielt ungefähr 4 oder 5 Artikel halb fertig und ich scheine nie, die Zeit zu finden, sie zu vollenden. Gut. Vielleicht, wenn ich aus der Lounge Id verwalten. Re: Sie waren schon beschäftigt Marc Clifton 4-Mar-07 14:25 Colin Angus Mackay hat geschrieben: Posting zwei Artikel heute Abend. Große Arbeit Dank schrieb ich tatsächlich den Artikel auf dem laufenden Durchschnitt und erkannte, dass die kreisförmige Liste tatsächlich ein wirklich guter Stand-alone-Artikel wäre. Plus, sie sind leichte Artikel. Ich kann sie ziemlich schnell wegdrehen. Sein gerade hartes, an nützliches aber einfaches Material zu denken. Stellt sich heraus, ich brauchte diese beiden Klassen sowieso. Die Leute sind nur notorisch unmöglich. --DavidCrow Theres Keine Entschuldigung für nicht kommentieren Ihren Code. - John Simmons / outlaw Programmierer Leute, die sagen, dass sie ihren Code später umgestalten, um es gut zu machen nicht verstehen Refactoring, noch die Kunst und Handwerk der Programmierung. - Josh Smith Re: Sie waren beschäftigt JeffPClark 8-Mar-07 1:07 Von dem, was Ive von Marc gelesen, hat er wahrscheinlich ein Programm, das ein Stück Code untersuchen und erklären kann die komplizierten Details, dann veröffentlichen sie direkt zu Code Project . Jeff Clark Systems Architekt JP Clark, INC. Columbus, Ohio Letzte Nachricht: 31-Dec-99 19:00 Letztes Update: 15-Dec-16 23:29 Allgemein Nachricht Vorschlag Frage Bug Antwort Joke Lob Rant Admin Verwenden Sie CtrlLeft / Right zu wechseln CtrlUp / Down, um die Threads zu wechseln, CtrlShiftLeft / Right, um die Seiten zu wechseln.
Comments
Post a Comment