Sunday 26 November 2017

Exponential Moving Average Kernel


Recipe6.4.Smoothing Daten mit gewichteten Durchschnittswerte Youd wie glatt Daten in einer Zeitreihe. Verwenden Sie Excels Exponential-Glättungsfunktion im Analysis ToolPak oder konstruieren Sie eine geglättete Datenreihe selbst, indem Sie Spreadsheet-Funktionen und VBA verwenden. Diskussion Glättungsdaten sind oft wünschenswert, um unerwünschtes Rauschen in einer Datenreihe zu beseitigen. Berechnen von Bewegungsdurchschnitten, wie in Rezept 6.3 diskutiert, ist tatsächlich ein Glättungsprozeß. Neben den oben beschriebenen Methoden der gleitenden Mittelwerte gibt es weitere Möglichkeiten, Daten zu glätten. Excel bietet eine exponentielle Glättungsfunktion als Teil des Analysis ToolPak. Außerdem können Sie beliebige Glättungsoperationen erstellen, die Sie mit Standard-Tabellenkalkulationsfunktionen (andor VBA) wünschen. Sie haben diesen Ansatz bereits im vorigen Rezept gesehen, zeigen aber diesmal, wie Sie einen gewichteten gleitenden Durchschnitt verwenden, der von einem kubischen Spline-Interpolationskernel Gebrauch macht. Exponentielle Glättung Die exponentielle Glättung ist auch eine gewichtete Mittelungstechnik. Die Idee hinter der gewichteten Mittelung besteht darin, Datenwerte zu liefern, die dem Wert am nächsten liegen, der prognostiziert wird oder im Vergleich zu weiter entfernten Werten eine größere Bedeutung oder einen größeren Einfluss hat. Exponentielle Glättung verwendet die folgende Formel: F n 1 ist der Wert, der im Zeitintervall n 1 abgeschätzt wird. A ist ein Gewichtungsfaktor, der in Excel als Dämpfungsfaktor bezeichnet wird. F n der vorherige Schätzwert ist und Y n der vorherige Istwert in der ursprünglichen Datenreihe ist. Um eine exponentielle Glättung zu verwenden, wählen Sie Werkzeuge Abbildung 6-11. Dialogfeld "Exponentialglättung" Geben Sie im Feld Eingabebereich den Zellbereich ein, der die Eingabedaten enthält, die Sie glätten möchten. Geben Sie im Feld Dämpfungsfaktor einen Dämpfungsfaktor ein oder lassen Sie ihn leer, um den Standardwert von 0,3 zu verwenden. Geben Sie im Feld Ausgabebereich einen Verweis auf die oberste Zelle im gewünschten Ausgabezellenbereich ein. Drücken Sie OK, wenn Sie fertig sind, und Sie sollten die Ergebnisse auf Ihrer Tabelle sehen. Abbildung 6-12 zeigt ein Beispiel für die gleichen Jahrestemperaturdaten, die in der vorherigen Rezeptur verwendet wurden. Die resultierende Datenreihe nach Glättung ist in Spalte R enthalten. Abbildung 6-12. Exponentielle Glättungsergebnisse Genau wie das Tool Moving Average, das früher beschrieben wurde, legt das Tool Exponential Smoothing eine Zellenformel anstelle eines Wertes in jeder Zelle der resultierenden Datenreihe an. Auf diese Weise werden die geglätteten Daten automatisch aktualisiert, wenn sich Ihre ursprünglichen Daten ändern. Die Zelle R10 ist in Abbildung 6-12 ausgewählt, so dass Sie sehen können, wie die Formeln aussehen. Die Formel ist in der Formelleiste dargestellt und hat die Form 0.7O90.3R9. Wie Sie sehen können, entspricht diese Formel der exponentiellen Glättungsgleichung, die ich Ihnen früher gezeigt habe. Selbstverständlich können Sie diese Formeln selbst eingeben und dabei die Notwendigkeit nutzen, das Analyse-ToolPak zu verwenden, wenn Sie es wünschen. Abbildung 6-13 zeigt eine grafische Darstellung der geglätteten Datenreihe, die der Originalreihe überlagert ist, so dass Sie den Unterschied zwischen den beiden sehen können. Abbildung 6-13. Exponentiell geglättete Temperaturdaten Andere gewichtete Mittelungsverfahren werden üblicherweise in der Zeitreihenanalyse verwendet. Im nächsten Abschnitt Ill zeigen Sie ein basierend auf einem kubischen Spline-Interpolationskernel. Kernel-Glättung In diesem Beispiel zeigt Ill eine gewichtete Mittelungstechnik, die einen kubischen Spline-Interpolationskern verwendet, der entworfen ist, um einen Gaußschen Kernel zu approximieren. Sie können alle Arten von verschiedenen Kerne für Glättung mit nur geringfügigen Änderungen an der Technik Ill present. Der Kernel, den ich verwende, ist: r stellt den Abstand zwischen Datenpunkten dar und h stellt den effektiven Glättungsradius geteilt durch 2 dar. Kranke verwenden diese Glättungsfunktion, um Gewichte zu berechnen, wenn gewichtete Durchschnittswerte der Zeitreihen berechnet werden. Um diese Aufgabe zu erleichtern, habe ich eine VBA-Funktion namens Wcs, die Sie aus der Tabelle aufrufen. Beispiel 6-1 zeigt meine VBA-Implementierung für diesen Glättungskernel. Beispiel 6-1. Kubische Spline-Kernel Dies ist eine ziemlich einfache Umsetzung der Gleichung Ich zeigte früher, so werde ich nicht über jede Zeile des Codes. Beziehen Sie sich auf Kapitel 2, wenn Sie nicht bereits beschleunigen, wenn Sie VBA verwenden und benutzerdefinierte Funktionen und Unterprogramme hinzufügen. Kranke benutzen diese Funktion, um Gewichte zu erzeugen, um die gleichen Temperaturdaten, die früher erörtert wurden, zu glätten. Abbildung 6-14 zeigt eine mit dieser Funktion berechnete Gewichtstabelle I. Abbildung 6-14. Gewichtstabelle Die erste Spalte in der Tabelle mit der Beschriftung r. Enthält relative Indizes um den vierten Index mit der Bezeichnung 0. Wir können dies hier tun, um r zu berechnen, da die Zeitreihendaten in gleichmäßig beabstandeten Intervallen abgetastet werden. Die zweite Spalte enthält Formeln wie Wcs (U10,2). Dies ist die in Zelle V10 enthaltene Formel. Alle anderen Zellen enthalten ähnliche Formeln. Die Summe der Gewichtungen (berechnet unter Verwendung der in Zelle V14 gezeigten SUM-Formel) ist erforderlich, um die gewichtete Durchschnittsberechnung zu normalisieren. Sie können diesen Schritt vermeiden, wenn Ihr Kernel einheitlich über seinen Supportbereich integriert. Jetzt, um die geglättete Datenreihe zu berechnen, richte ich eine weitere Spalte in meiner Kalkulationstabelle ein, wie in Abbildung 6-15 gezeigt. Abbildung 6-15. Ergebnisse der Kernel-Glättung Die geglätteten Daten sind in Spalte S unter der Überschrift Kernel-Glättung enthalten. Ich selektierte den ersten geglätteten Datenwert in Zelle S10 in der Figur, so dass Sie die Zellformel sehen können. Die Formel ist SUMPRODUCT (R7: R13, V7: V13) V14. Wie Sie sehen können, verwendet es die Formel SUMPRODUCT, um die Summe der Produkte jedes entsprechenden Begriffs in den beiden angegebenen Zellbereichen zu berechnen (siehe Kapitel 7 für weitere Informationen zu dieser und anderen praktischen Funktionen). In diesem Fall entspricht der erste Zellenbereich den sechs Datenelementen um das gegebene Datenelement, einschließlich des gegebenen Datenelements. Dies bedeutet, dass der gewichtete Mittelwert in diesem Fall über dem i-ten Datenposten zentriert ist und den gewichteten Einfluss der drei vorherigen Posten und die drei folgenden Posten umfasst. Der zweite Zellbereich enthält die in Abbildung 6-14 dargestellten Gewichte. Weiterhin normalisiert das Teilen durch die Summe der in der Zelle V14 enthaltenen Gewichtungen das Ergebnis. Sobald die erste Formel aufgebaut wurde, habe ich einfach kopiert und in die restlichen Zellen in der Datenreihe eingefügt. Beachten Sie, dass wir einige Daten verlieren. Insbesondere verlieren wir aufgrund des Einflussbereichs der gewichteten Gewichtungsfunktion I die ersten und letzten drei Datenposten im Bereich. Sie können den Einflussbereich erhöhen, indem Sie den Wert für den in Wcs übergebenen h-Parameter erhöhen. Oder Sie können es verringern, indem Sie diesen Wert verringern. Je größer der Einflussbereich ist (umso größer die Anzahl der Datenelemente in der Reihe, die für jedes geglättete Ergebnis gemittelt wird), desto glatter wird die resultierende Datenreihe. Abbildung 6-16 zeigt ein Diagramm der geglätteten Datenreihe im Vergleich zu den ursprünglichen Datenreihen. Der Effekt der Glättung ist deutlich erkennbar. Abbildung 6-16. Kernelgeglättete Temperaturdaten Siehe Rezept 6.3, um herauszufinden, wie man ungewogene gleitende Durchschnittswerte in Excel berechnet. Glättung von Daten mit den Techniken in diesem und dem vorherigen Rezept ist eigentlich eine Form der Filterung. Sie können auch Daten im Frequenzbereich in Excel mit Fourier-Transformationen lesen Rezept 6.10, um mehr zu erfahren. Ein möglicher Ansatz hier ist eine Methode, die den Kernel zurückgibt. Von dem, was ich sehen kann, Eingaben zu dieser Methode wäre kerneltype. ich. Und andere Eingänge. Ein einfacher Ansatz wäre: Das ist natürlich schrecklich, schrecklich rau, und eine Menge Verbesserung kann gemacht werden, aber es ist beabsichtigt, nur den Punkt zu bekommen. Ich würde eine Schnittstelle verwenden, um einen Kernel darzustellen, und haben Klassen abgeleitet pro Kernel. Nach meiner Erfahrung, die produziert ausreichend lesbar und wartbar Code, aber theres immer Raum für Verbesserungen. Beantwortet 1. Aug 14 um 20:39 Uhr

No comments:

Post a Comment