Monday 13 February 2017

Moving Average Filter Javascript

Ich habe im Wesentlichen ein Array von Werten wie folgt: Das obige Array ist oversimplified, Im sammeln 1 Wert pro Millisekunde in meinem realen Code und ich muss die Ausgabe auf einem Algorithmus, den ich schrieb, um die nächste Peak vor einem Zeitpunkt zu finden verarbeiten. Meine Logik schlägt fehl, weil in meinem Beispiel oben 0.36 die wahre Spitze ist, aber mein Algorithmus würde rückwärts schauen und sehen die sehr letzte Zahl 0.25 als die Spitze, als theres eine Abnahme zu 0.24 vor ihm. Das Ziel ist, diese Werte zu nehmen und einen Algorithmus auf sie, die glätten sie ein wenig, so dass ich mehr lineare Werte. (Dh: Id wie meine Ergebnisse curvy, nicht jaggedy) Ive wurde gesagt, um einen exponentiellen gleitenden durchschnittlichen Filter auf meine Werte anzuwenden. Wie kann ich dies tun Es ist wirklich schwer für mich, mathematische Gleichungen zu lesen, gehe ich viel besser mit Code. Wie verarbeite ich Werte in meinem Array, die Anwendung einer exponentiellen gleitenden Durchschnittsberechnung, um sie herauszufordern, um einen exponentiellen gleitenden Durchschnitt zu berechnen. Müssen Sie einige Zustand zu halten und Sie benötigen einen Tuning-Parameter. Dies erfordert eine kleine Klasse (vorausgesetzt, Sie verwenden Java 5 oder höher): Instantiate mit dem Decay-Parameter, die Sie wollen (kann Abstimmung sollte zwischen 0 und 1) und dann mit Average () zu filtern. Beim Lesen einer Seite auf einige mathematische Rekursion, alles, was Sie wirklich wissen müssen, wenn Sie es in Code ist, dass Mathematiker gerne Indizes in Arrays und Sequenzen mit Indizes schreiben. (Theyve einige andere Anmerkungen außerdem, die nicht helfen.) Jedoch ist die EMA ziemlich einfach, da Sie nur an einen alten Wert erinnern müssen, der keine komplizierten Zustandarrays erfordert. Beantwortet Feb 8 12 at 20:42 TKKocheran: Ziemlich viel. Isn39t es schön, wenn die Dinge einfach sein können (Wenn Sie mit einer neuen Sequenz beginnen, erhalten Sie einen neuen Mittelwert.) Beachten Sie, dass die ersten paar Begriffe in der durchschnittlichen Sequenz wird ein bisschen durch Randeffekte springen, aber Sie erhalten die mit anderen gleitenden Durchschnitten auch. Allerdings ist ein guter Vorteil, dass Sie die gleitende durchschnittliche Logik in die Mittelung einwickeln und experimentieren können, ohne den Rest des Programms zu viel zu stören. Ndash Donal Fellows Ich habe eine harte Zeit, Ihre Fragen zu verstehen, aber ich werde versuchen, trotzdem zu beantworten. 1) Wenn Ihr Algorithmus 0,25 statt 0,36 gefunden hat, dann ist es falsch. Es ist falsch, weil es eine monotone Zunahme oder Abnahme (das ist immer nach oben oder immer nach unten). Wenn Sie ALLE Ihre Daten nicht klassifizieren, sind Ihre Datenpunkte - wie Sie sie darstellen - nichtlinear. Wenn Sie wirklich den maximalen Wert zwischen zwei Zeitpunkten finden wollen, dann schneiden Sie Ihr Array von tmin zu tmax und finden Sie das Maximum dieses Unterarrays. 2) Nun ist das Konzept der gleitenden Durchschnitte sehr einfach: vorstellen, dass ich die folgende Liste haben: 1.4, 1.5, 1.4, 1.5, 1.5. Ich kann es glätten, indem ich den Durchschnitt von zwei Zahlen: 1.45, 1.45, 1.45, 1.5. Beachten Sie, dass die erste Zahl ist der Durchschnitt von 1,5 und 1,4 (zweite und erste Zahlen) die zweite (neue Liste) ist der Durchschnitt von 1,4 und 1,5 (dritte und zweite alte Liste) die dritte (neue Liste) der Durchschnitt von 1,5 und 1,4 (Vierte und dritte), und so weiter. Ich könnte es Zeitraum drei oder vier gemacht haben, oder n. Beachten Sie, wie die Daten viel glatter sind. Ein guter Weg, um zu sehen, gleitende Durchschnitte bei der Arbeit ist, gehen Sie zu Google Finance, wählen Sie eine Aktie (versuchen Tesla Motors ziemlich volatil (TSLA)) und klicken Sie auf Technische Daten am unteren Rand des Diagramms. Wählen Sie Moving Average mit einer bestimmten Periode und Exponential gleitenden Durchschnitt, um ihre Differenzen zu vergleichen. Exponentielle gleitende Durchschnitt ist nur eine weitere Ausarbeitung dieser, aber Gewichte die älteren Daten weniger als die neuen Daten ist dies ein Weg, um die Glättung nach hinten auszugleichen. Bitte lesen Sie den Wikipedia-Eintrag. Also, dies ist eher ein Kommentar als eine Antwort, aber die kleine Kommentar-Box war nur zu klein. Viel Glück. Wenn Sie Probleme mit der Mathematik haben, könnten Sie mit einem einfachen gleitenden Durchschnitt statt exponentiell gehen. Also die Ausgabe erhalten Sie die letzten x-Terme durch x geteilt werden. Ungetestetes Pseudocode: Beachten Sie, dass Sie die Anfangs - und Endteile der Daten behandeln müssen, da deutlich, dass Sie die letzten 5 Ausdrücke nicht durchschnittlich sind, wenn Sie auf Ihrem 2. Datenpunkt sind. Außerdem gibt es effizientere Methoden, diesen gleitenden Durchschnitt (sum sum - älteste neueste) zu berechnen, aber dies ist, um das Konzept von dem, was passiert, zu bekommen. Beantwortet Feb 08 12 at 20:41 Deine Antwort 2017 Stack Exchange, IncForecasting von Smoothing Techniques Diese Seite ist ein Teil der JavaScript E-Labs Lernobjekte für die Entscheidungsfindung. Andere JavaScript in dieser Serie sind unter verschiedenen Bereichen von Anwendungen im Abschnitt MENU auf dieser Seite kategorisiert. Eine Zeitreihe ist eine Folge von Beobachtungen, die zeitlich geordnet sind. Inhärent in der Sammlung von Daten über die Zeit genommen ist eine Form der zufälligen Variation. Es gibt Methoden zur Verringerung der Annullierung der Wirkung aufgrund zufälliger Variation. Weit verbreitete Techniken sind Glättung. Diese Techniken, wenn richtig angewandt, zeigt deutlicher die zugrunde liegenden Trends. Geben Sie die Zeitreihe Row-weise in der Reihenfolge beginnend mit der linken oberen Ecke und den Parametern ein, und klicken Sie dann auf die Schaltfläche Berechnen, um eine Prognose für eine Periode zu erhalten. Blank Boxen sind nicht in den Berechnungen, sondern Nullen enthalten. Wenn Sie Ihre Daten eingeben, um von Zelle zu Zelle in der Daten-Matrix zu bewegen, verwenden Sie die Tabulatortaste nicht Pfeil oder geben Sie die Tasten ein. Merkmale der Zeitreihen, die durch die Untersuchung seines Graphen aufgezeigt werden könnten. Mit den prognostizierten Werten und dem Residualverhalten, Condition Prognose Modellierung. Moving Averages: Gleitende Durchschnitte zählen zu den beliebtesten Techniken für die Vorverarbeitung von Zeitreihen. Sie werden verwendet, um zufälliges weißes Rauschen aus den Daten zu filtern, um die Zeitreihe glatter zu machen oder sogar bestimmte in der Zeitreihe enthaltene Informationskomponenten zu betonen. Exponentialglättung: Dies ist ein sehr populäres Schema, um eine geglättete Zeitreihe zu erzeugen. Während in den gleitenden Durchschnitten die früheren Beobachtungen gleich gewichtet werden, weist Exponentialglättung exponentiell abnehmende Gewichte zu, wenn die Beobachtung älter wird. Mit anderen Worten, die jüngsten Beobachtungen sind relativ mehr Gewicht in der Prognose gegeben als die älteren Beobachtungen. Double Exponential Smoothing ist besser im Umgang mit Trends. Triple Exponential Smoothing ist besser im Umgang mit Parabeltrends. Ein exponentiell gewichteter gleitender Durchschnitt mit einer Glättungskonstanten a. Entspricht in etwa einem einfachen gleitenden Durchschnitt der Länge (d. h. Periode) n, wobei a und n durch a 2 (n1) OR n (2 - a) a verknüpft sind. So würde beispielsweise ein exponentiell gewichteter gleitender Durchschnitt mit einer Glättungskonstante gleich 0,1 etwa einem 19 Tage gleitenden Durchschnitt entsprechen. Und ein 40 Tage einfacher gleitender Durchschnitt würde etwa einem exponentiell gewichteten gleitenden Durchschnitt mit einer Glättungskonstanten gleich 0,04878 entsprechen. Holts Lineare Exponentialglättung: Angenommen, die Zeitreihe ist nicht saisonal, sondern zeigt Trend. Holts-Methode schätzt sowohl das aktuelle Niveau als auch den aktuellen Trend. Beachten Sie, dass der einfache gleitende Durchschnitt ein Spezialfall der exponentiellen Glättung ist, indem die Periode des gleitenden Mittelwertes auf den ganzzahligen Teil von (2-Alpha) Alpha gesetzt wird. Für die meisten Geschäftsdaten ist ein Alpha-Parameter kleiner als 0,40 oft effektiv. Man kann jedoch eine Gittersuche des Parameterraums mit 0,1 bis 0,9 mit Inkrementen von 0,1 durchführen. Dann hat das beste Alpha den kleinsten mittleren Absolutfehler (MA Error). Wie man mehrere Glättungsmethoden miteinander vergleicht: Obwohl es numerische Indikatoren für die Beurteilung der Genauigkeit der Prognosetechnik gibt, besteht der am weitesten verbreitete Ansatz darin, einen visuellen Vergleich mehrerer Prognosen zu verwenden, um deren Genauigkeit zu bewerten und unter den verschiedenen Prognosemethoden zu wählen. Bei diesem Ansatz muss man auf demselben Graphen die ursprünglichen Werte einer Zeitreihenvariablen und die vorhergesagten Werte aus verschiedenen Prognoseverfahren aufzeichnen und damit einen visuellen Vergleich erleichtern. Sie können die Vergangenheitsvorhersage von Smoothing Techniques JavaScript verwenden, um die letzten Prognosewerte basierend auf Glättungstechniken zu erhalten, die nur einen einzigen Parameter verwenden. Holt - und Winters-Methoden zwei bzw. drei Parameter, daher ist es keine leichte Aufgabe, die optimalen oder sogar nahezu optimalen Werte durch Versuch und Fehler für die Parameter auszuwählen. Die einzelne exponentielle Glättung betont die kurzreichweite Perspektive, die sie den Pegel auf die letzte Beobachtung setzt und basiert auf der Bedingung, dass es keinen Trend gibt. Die lineare Regression, die auf eine Linie der kleinsten Quadrate zu den historischen Daten (oder transformierten historischen Daten) passt, repräsentiert die lange Reichweite, die auf dem Grundtrend konditioniert ist. Holts lineare exponentielle Glättung erfasst Informationen über die jüngsten Trend. Die Parameter im Holts-Modell sind Ebenenparameter, die verringert werden sollten, wenn die Menge der Datenvariation groß ist, und der Trends-Parameter sollte erhöht werden, wenn die aktuelle Trendrichtung durch das Kausale beeinflusst wird. Kurzfristige Prognose: Beachten Sie, dass jeder JavaScript auf dieser Seite eine einstufige Prognose zur Verfügung stellt. Um eine zweistufige Prognose zu erhalten. Fügen Sie einfach den prognostizierten Wert an das Ende der Zeitreihendaten und klicken Sie dann auf die Schaltfläche Berechnen. Sie können diesen Vorgang einige Male wiederholen, um die benötigten Kurzzeitprognosen zu erhalten. Ein einführender Digitalfilter Nun öffnen Sie den MicroModeler DSP und wählen Sie einen digitalen Filter aus der Symbolleiste an der Oberseite aus und ziehen Sie ihn zu unserer Anwendung. Nun wählen Sie einen gleitenden Durchschnitt Filter, weil seine eine der einfachsten Arten von Filtern. Nach dem Löschen des Filters werden die Anzeigen automatisch aktualisiert. (Klicken Sie auf MicroModeler DSP in einem neuen Fenster zu starten) Wir alle wissen, was ein Durchschnitt ist - fügen Sie die Zahlen zusammen und teilen, wie viele es gibt. Ein gleitender Durchschnitt filtert genau das. Es speichert eine Historie der letzten N Zahlen und gibt ihren Durchschnitt aus. Jedes Mal, wenn eine neue Zahl kommt, wird der Mittelwert effektiv aus den gespeicherten Mustern neu berechnet und eine neue Zahl ausgegeben. Der Frequenzgang eines Filters Oben rechts sehen wir den Graphen von Magnitude vs Frequency, oder wie viel unterschiedliche Frequenzen durch den gleitenden mittleren Filter verstärkt oder reduziert werden. Wie Sie vielleicht erwarten, wird ein Mittelwert der letzten N Abtastwerte eine Art Glättung auf das Signal anwenden, wobei die niedrigen Frequenzen beibehalten und die hohen Frequenzen entfernt werden. Wir können die Anzahl der vorherigen Eingaben oder Proben, die sie durch die Einstellung der Filterlänge N steuert, steuern. Durch Anpassen dieser Funktion können wir sehen, dass wir eine grundlegende Kontrolle darüber haben, welche Frequenzen passieren und welche verworfen werden. Das Innere eines Filters Wenn wir die Strukturansicht betrachten, können wir sehen, wie das Innere eines gleitenden Durchschnittsfilters aussehen könnte. Das Diagramm wurde kommentiert, um zu zeigen, was die verschiedenen Symbole bedeuten. Die Z -1 - Zeichen bedeuten Verzögerung um ein Mal und die Symbole bedeuten addieren oder kombinieren die Signale. Die Pfeile bedeuten multiplizieren (denken verstärken, reduzieren oder skalieren) das Signal um den Betrag rechts neben dem Pfeil angezeigt. Für einen Durchschnitt von 5 Proben nehmen wir ein Fünftel (0,2) der letzten Probe, ein Fünftel der zweitletzten Stichprobe und so weiter. Die Verzögerungskette wird als Verzögerungsleitung bezeichnet, wobei das Eingangssignal um einen weiteren Zeitschritt verzögert wird, wenn man entlang der Verzögerungsleitung fortschreitet. Die Pfeile werden auch als Hähne, so können Sie fast sie als Hähne wie die in Ihrem Küchenspüle, die alle eine fünfte offen sind. Man könnte sich vorstellen, dass das Signal von links einfließt und sich fortschreitend verzögert, wenn es sich entlang der Verzögerungsstrecke bewegt und dann in unterschiedlichen Stärken durch die Abgriffe wieder zusammengeführt wird, um den Ausgang zu bilden. Es sollte auch leicht zu sehen, dass die Ausgabe des Filters werden: Das entspricht dem Durchschnitt der letzten 5 Proben. In der Praxis wird der von MicroModeler DSP erzeugte Code Tricks verwenden, um dies effizienter zu machen, so daß nur erste und letzte Abtastungen beteiligt sein müssen, aber das Diagramm ist zu illustrativen Zwecken gut. Wenn Sie dies verstehen können, dann können Sie eine Idee, was ein FIR-Filter ist. Ein FIR-Filter ist identisch mit dem gleitenden Durchschnittsfilter, aber stattdessen können alle Zapfstärken gleich sein, sie können unterschiedlich sein. Hier haben wir einen gleitenden Mittelfilter und einen FIR-Filter. Sie können sehen, dass sie strukturell gleich sind, der einzige Unterschied ist die Stärken der Hähne. Im nächsten Abschnitt werden wir Ihnen Finite Impulse Response (FIR) Filter vorstellen. Durch die Veränderung der Zapfwellenstärken können wir nahe jedem Frequenzgang, den wir wollen, erzeugen.


No comments:

Post a Comment