Moving Average Dieses Beispiel lehrt, wie Sie den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen. Eine Bewegung wird verwendet, um Unregelmäßigkeiten (Spitzen und Täler) zu glätten, um Trends leicht zu erkennen. 1. Erstens, werfen wir einen Blick auf unsere Zeitreihe. 2. Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis: Klicken Sie hier, um das Analyse-ToolPak-Add-In zu laden. 3. Wählen Sie Verschiebender Durchschnitt aus, und klicken Sie auf OK. 4. Klicken Sie im Feld Eingabebereich auf den Bereich B2: M2. 5. Klicken Sie in das Feld Intervall und geben Sie 6 ein. 6. Klicken Sie in das Feld Ausgabebereich und wählen Sie Zelle B3 aus. 8. Zeichnen Sie ein Diagramm dieser Werte. Erläuterung: Da wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der letzten 5 Datenpunkte und der aktuelle Datenpunkt. Als Ergebnis werden Spitzen und Täler geglättet. Die Grafik zeigt eine zunehmende Tendenz. Excel kann den gleitenden Durchschnitt für die ersten 5 Datenpunkte nicht berechnen, da nicht genügend frühere Datenpunkte vorhanden sind. 9. Wiederholen Sie die Schritte 2 bis 8 für Intervall 2 und Intervall 4. Fazit: Je größer das Intervall, desto mehr werden die Spitzen und Täler geglättet. Je kleiner das Intervall, desto näher sind die gleitenden Mittelwerte, um die tatsächlichen Datenpunkte. Wie Berechnung der gleitenden Mittelwerte in Excel Excel-Datenanalyse für Dummies, 2nd Edition Der Data Analysis-Befehl bietet ein Werkzeug für die Berechnung der Bewegung und exponentiell geglättete Mittelwerte in Excel. Nehmen Sie an, um zu veranschaulichen, dass Sie tägliche Temperaturinformationen gesammelt haben. Sie wollen den dreitägigen gleitenden Durchschnitt 8212 den Durchschnitt der letzten drei Tage 8212 als Teil einer einfachen Wettervorhersage berechnen. Gehen Sie folgendermaßen vor, um die gleitenden Mittelwerte für diesen Datensatz zu berechnen. Um einen gleitenden Durchschnitt zu berechnen, klicken Sie zuerst auf die Schaltfläche Data tab8217s Data Analysis. Wenn Excel das Dialogfeld Datenanalyse anzeigt, wählen Sie aus der Liste den Eintrag Moving Average aus, und klicken Sie dann auf OK. Excel zeigt das Dialogfeld "Gleitender Durchschnitt" an. Identifizieren Sie die Daten, die Sie verwenden möchten, um den gleitenden Durchschnitt zu berechnen. Klicken Sie im Dialogfeld "Gleitender Durchschnitt" in das Eingabebereichsfeld. Identifizieren Sie dann den Eingabebereich, indem Sie entweder eine Arbeitsbereichsadresse eingeben oder mit der Maus den Arbeitsbereich auswählen. Ihre Bereichsreferenz sollte absolute Zellenadressen verwenden. Eine absolute Zellenadresse steht vor dem Spaltennamen und der Zeilennummer mit Vorzeichen, wie in A1: A10. Wenn die erste Zelle in Ihrem Eingabebereich eine Textbeschriftung enthält, um Ihre Daten zu identifizieren oder zu beschreiben, aktivieren Sie das Kontrollkästchen Labels in First Row. Erklären Sie im Textfeld Interval, wie viele Werte in die gleitende Durchschnittsberechnung einbezogen werden sollen. Sie können einen gleitenden Durchschnitt mit einer beliebigen Anzahl von Werten berechnen. Standardmäßig verwendet Excel die letzten drei Werte, um den gleitenden Durchschnitt zu berechnen. Um festzulegen, dass eine andere Anzahl von Werten zur Berechnung des gleitenden Durchschnitts verwendet werden soll, geben Sie diesen Wert in das Textfeld Intervall ein. Sagen Sie Excel, wo die gleitenden Durchschnittsdaten platziert werden sollen. Verwenden Sie das Textfeld Ausgabebereich, um den Arbeitsblattbereich zu identifizieren, in dem Sie die gleitenden Durchschnittsdaten platzieren möchten. In dem Arbeitsblattbeispiel wurden die gleitenden Durchschnittsdaten in den Arbeitsblattbereich B2: B10 platziert. (Optional) Geben Sie an, ob ein Diagramm gewünscht wird. Wenn Sie ein Diagramm möchten, das die gleitenden Durchschnittsinformationen darstellt, aktivieren Sie das Kontrollkästchen "Diagrammausgabe". (Optional) Geben Sie an, ob Standardfehlerinformationen berechnet werden sollen. Wenn Sie Standardfehler für die Daten berechnen möchten, aktivieren Sie das Kontrollkästchen Standardfehler. Excel legt Standardfehlerwerte neben den gleitenden Mittelwerten fest. (Die Standardfehlerinformationen gehen zu C2: C10.) Nachdem Sie die Angabe, welche gleitenden durchschnittlichen Informationen Sie berechnen lassen möchten und wo Sie sie platzieren möchten, klicken Sie auf OK. Excel berechnet gleitende Durchschnittsinformationen. Hinweis: Wenn Excel doesn8217t über genügend Informationen verfügt, um einen gleitenden Durchschnitt für einen Standardfehler zu berechnen, legt er die Fehlermeldung in die Zelle. Sie können sehen, mehrere Zellen, die diese Fehlermeldung als einen Wert. Ich habe Profil mit dem Visual C-Profiler, und es für etwa 35 der laufenden Zeit. Dieser exponentielle gleitende Durchschnitt wird mehr als eine Billion Mal genannt, weil er wiederholt bei der Verarbeitung von mehr als 400 Gigabyte Daten verwendet wird. Die Daten kommen aus einem Raid Level 0 Festplattenlaufwerk-Array, so dass das Lesen der Daten für weniger als 5 der Zeit. Die Größe des Preises ist etwa 100.Ich beschleunigte es ursprünglich um den Faktor 4, indem es so viele Daten wie möglich vorberechnet. Dann konnte ich es nochmal um einen Faktor von ndash steigern PaeneInsula Okt 30 11 um 20:41 Ich konnte die Geschwindigkeit wieder um den Faktor 12 erhöhen, indem ich sie multithreading (die Natur der Daten ist so, dass sie multithreaded in sein kann So dass die Last perfekt ausbalanciert ist.) Und ich habe es läuft auf einem i7 990x (das hat 6 Kerne, hyperthreaded von insgesamt 12), übertaktet. Ndash PaeneInsula Oct 30 11 at 20:51 Sicher, Multithreading kann helfen. Aber Sie können fast sicher die Leistung auf einem einzigen Gewinde-Maschine zu verbessern. Zuerst berechnen Sie es in die falsche Richtung. Nur die modernsten Maschinen können negative Vorwärts-Prefetching. Fast alle Maschinen sind schneller für Einheit Fortschritte. D. h. Ändern Sie die Richtung des Arrays, so dass Sie scannen von niedrig zu hoch anstatt hoch zu niedrig ist fast immer besser. Als nächstes, umschreiben ein bisschen - erlauben Sie mir, die Variablennamen zu verkürzen, um es einfacher zu machen: By the way, Ich werde mit der Verwendung von Stenogrammen p für Preis und s für Glättung, um die Eingabe zu speichern. Ich bin faul. Aber es ist wahrscheinlich schneller zu tun Die Latenz zwischen avgi und avgi-2 ist dann 1 multiplizieren und addieren, anstatt eine Subtraktion und eine Multiplikation zwischen avgi und avgi-1. D. h. Mehr als doppelt so schnell. Im Allgemeinen möchten Sie die Wiederholung so umschreiben, dass avgi in Form von avgj für j so weit zurück berechnet wird, wie Sie gehen können, ohne das Gerät auszufüllen, entweder Ausführungseinheiten oder Register. Sie sind im Grunde mehr multipliziert insgesamt, um weniger Ketten von Vielfachen (und subtrahiert) auf dem kritischen Pfad zu erhalten. Überspringen von avgi-2 bis avgi ist einfach, können Sie wahrscheinlich drei und vier. Genau wie weit, hängt davon ab, was Ihre Maschine ist, und wie viele Register Sie haben. Und die Latenz der Gleitkomma-Addierer und Multiplikator. Oder besser noch, den Geschmack der kombinierten Multiply-Add-Anweisung haben Sie - alle modernen Maschinen haben sie. Z. B. Wenn der MADD oder MSUB 7 Zyklen lang ist, können Sie bis zu 6 andere Berechnungen in seinem Schatten tun, auch wenn Sie nur eine einzige Gleitkommaeinheit haben. Vollständig pipeline. Und so weiter. Weniger, wenn alle anderen Zyklen pipelined, wie für doppelte Genauigkeit auf älteren Chips und GPUs üblich ist. Der Assembler-Code sollte Softwarepipeline sein, so dass unterschiedliche Loop-Iterationen überlappen. Ein guter Compiler sollte das für Sie tun, aber möglicherweise müssen Sie den C-Code umschreiben, um die beste Leistung zu erhalten. Übrigens: Ich meine nicht, dass du ein Array von avg erstellen solltest. Stattdessen würden Sie zwei Durchschnitte benötigen, wenn avgi in Bezug auf avgi-2 berechnet wird, und so weiter. Sie können ein Array von avgi verwenden, wenn Sie wollen, aber ich denke, dass Sie nur 2 oder 4 avgs, genannt, kreativ, avg0 und avg1 (2, 3.) haben müssen, und drehen sie. Diese Art von Trick, Aufteilung eines Akkumulators oder Durchschnitt in zwei oder mehr, kombiniert mehrere Stufen der Wiederholung, ist in Hochleistungs-Code gemeinsam. Ach ja, ss vorberechnen usw. Wenn ich es richtig gemacht habe, wäre dies in unendlicher Genauigkeit identisch. (Bitte überprüfen Sie mich, bitte.) Allerdings in endlichen Präzision FP Ihre Ergebnisse können sich unterscheiden, hoffentlich nur geringfügig, wegen der verschiedenen Rundungen. Wenn das Aufrollen korrekt ist und die Antworten signifikant unterschiedlich sind, haben Sie wahrscheinlich einen numerisch instabilen Algorithmus. Du bist derjenige, der es weiß. Hinweis: Fließkomma-Rundungsfehler ändern die niedrigen Bits Ihrer Antwort. Beide, weil der Umzug des Codes, und mit MADD. Ich denke, dass ist wahrscheinlich okay, aber Sie müssen entscheiden. Hinweis: Die Berechnungen für avgi und avgi-1 sind nun unabhängig. So können Sie einen SIMD-Befehlssatz wie Intel SSE2 verwenden, der den Betrieb auf zwei 64-Bit-Werten in einem 128-Bit breiten Register zu einem Zeitpunkt ermöglicht. Das ist gut für fast 2X, auf einer Maschine, die genug ALUs hat. Wenn Sie genug Register haben, um avgi in Bezug auf avgi-4 umzuschreiben (und ich bin sicher, dass Sie auf iA64 tun), dann können Sie 4X breit gehen, wenn Sie Zugang zu einer Maschine wie 256 Bit AVX haben. Auf einem GPU. Können Sie für tiefere Wiederholungen gehen, umzuschreiben avgi in Bezug auf avgi-8, und so weiter. Einige GPUs haben Anweisungen, die AXB oder sogar AXBY als einen Befehl berechnen. Obwohl das für 32-Bit üblicher ist als für 64-Bit-Präzision. An einem gewissen Punkt würde ich wahrscheinlich beginnen zu fragen: wollen Sie dies auf mehrere Preise zu einem Zeitpunkt tun nicht nur dies hilft Ihnen mit Multithreading, wird es auch für den Betrieb auf einem GPU. Und mit breiten SIMD. Minor Late Addition Ich bin ein bisschen peinlich, nicht anzuwenden Horners Rule auf Ausdrücke wie etwas effizienter. Leicht abweichende Ergebnisse mit Rundung. In meiner Verteidigung sollte jeder anständige Compiler dies für Sie tun. Aber Hrners Regel macht die Abhängigkeit Kette tiefer in Form von Multiplikatoren. Möglicherweise müssen Sie die Schleife ein paar Mal entrollen und pipelined. Oder Sie können tun, wo Sie vorberechnen
No comments:
Post a Comment