Thursday, February 9, 2017

Weighted Moving Average In Sas

Ab Release 6.08 des SAS-Systems kann mit PROC EXPAND in SASETS eine Vielzahl von Datentransformationen realisiert werden. Diese Transformationen umfassen: Leitungen, Verzögerungen, gewichtete und ungewichtete gleitende Mittelwerte, bewegte Summen und kumulative Summen, um nur einige zu nennen. Viele neue Transformationen wurden in Release 6.12 hinzugefügt, einschließlich getrennter Spezifikationen für zentrierte und rückwärts gerichtete Durchschnitte. Diese neuen Transformationen machten es erforderlich, die Syntax für einige der vor Release 6.12 unterstützten Transformationen zu ändern. Nachfolgend sind Beispiele für die Angabe der Syntax für zentrierte und rückwärts gerichtete Durchschnitte nach Release 6.11 und früher und Release 6.12 und später aufgeführt. PROC EXPAND kann entweder einen zentrierten gleitenden Durchschnitt oder einen rückwärts gleitenden Durchschnitt berechnen. Ein 5-Perioden-zentrierter gleitender Durchschnitt wird durch Mittelung von insgesamt 5 aufeinanderfolgenden Werten der Serie (der aktuelle Periodenwert zusätzlich zu den zwei unmittelbar vorhergehenden Werten und zwei Werten unmittelbar nach dem aktuellen Wert) berechnet. Ein 5-Perioden-Rückwärts-Mittelwert wird berechnet, indem der aktuelle Periodenwert mit den Werten aus den 4 unmittelbar vorhergehenden Perioden gemittelt wird. Die folgende Syntax veranschaulicht, wie die TRANSFORM (MOVAVE n) Spezifikation verwendet wird, um einen 5-Perioden-zentrierten gleitenden Durchschnitt mit Release 6.11 oder früher zu berechnen: Um einen n-Perioden-Rückwärts-Durchschnitt mit Release 6.11 oder früher zu berechnen, verwenden Sie die TRANSFORM (MOVAVE N LAG k) Spezifikation, wobei k (n-1) 2, wenn n ungerade ist oder k (n-2) 2, wenn n gerade ist. In der folgenden Syntax wird beispielsweise veranschaulicht, wie Sie einen 5-Perioden-Rückwärtsbewegungsdurchschnitt mit Release 6.11 oder früher berechnen: Die folgende Syntax veranschaulicht, wie die TRANSFORM-Spezifikation (CMOVAVE n) verwendet wird, um einen 5-Perioden-zentrierten gleitenden Durchschnitt mit Hilfe von Release 6.12 zu berechnen Später: Die folgende ähnliche Syntax veranschaulicht, wie die TRANSFORM-Spezifikation (MOVAVE n) verwendet wird, um einen 5-Perioden-Rücklauf-Durchschnitt mit Release 6.12 oder höher zu berechnen: Weitere Informationen finden Sie unter Transformationsoperationen im EXPAND-Kapitel des SASETS-Benutzerhandbuchs. Wenn Sie keinen Zugriff auf SASETS haben, können Sie einen gleitenden Durchschnitt im DATA-Schritt berechnen, wie in diesem Beispielprogramm veranschaulicht. Betriebssystem und Freigabeinformationen Der Beispielcode auf der Registerkarte Voller Code veranschaulicht, wie der gleitende Durchschnitt einer Variablen über einen gesamten Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-Gruppe berechnet werden kann. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Berechnen Sie den gleitenden Durchschnitt einer Variablen über einen ganzen Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb eines BY-Groupputs einen gleitenden Durchschnitt in SAS. Dieser Beitrag wurde freundlicherweise von The DO Loop-go beigesteuert Dort zu kommentieren und den kompletten Beitrag zu lesen. Eine gemeinsame Frage zu SAS Diskussionsforen ist, wie man einen gleitenden Durchschnitt in SAS berechnet. Dieser Artikel beschreibt die Verwendung von PROC EXPAND und enthält Verknüpfungen zu Artikeln, die den DATA-Schritt oder Makros verwenden, um Bewegungsdurchschnitte in SAS zu berechnen. In einem früheren Beitrag, erklärte ich, wie man einen gleitenden Durchschnitt zu definieren und ein Beispiel, das hier gezeigt wird. Die Grafik ist ein Streudiagramm des monatlichen Schlusskurses für IBM-Aktien über einen Zeitraum von 20 Jahren. Die drei Kurven sind gleitende Mittelwerte. Die 8220MA8221-Kurve ist ein Fünfpunkt - (nachlaufender) gleitender Durchschnitt. Die 8220WMA8221-Kurve ist ein gewichteter gleitender Durchschnitt mit den Gewichten 1 bis 5. (Bei der Berechnung des gewichteten gleitenden Durchschnitts zum Zeitpunkt t hat der Wert yt das Gewicht 5, der Wert yt-1 das Gewicht 4, der Wert yt-2 hat Gewicht 3, usw.) Die 8220EWMA8221-Kurve ist ein exponentiell gewichteter gleitender Durchschnitt mit Glättungsfaktor alpha 0,3. Dieser Artikel zeigt, wie die EXPAND-Prozedur in SASETS-Software verwendet wird, um einen einfachen gleitenden Durchschnitt, einen gewichteten gleitenden Durchschnitt und einen exponentiell gewichteten gleitenden Durchschnitt in SAS zu berechnen. Für einen Überblick über PROC EXPAND und seine vielen Fähigkeiten empfehle ich, das kurze Papier 8220Stupid Human Tricks mit PROC EXPAND8221 von David Cassell (2010) zu lesen. Da nicht jeder SAS-Kunde eine Lizenz für SASETS-Software hat, gibt es Links am Ende dieses Artikels, die zeigen, wie man einen einfachen gleitenden Durchschnitt in SAS mit dem DATA-Schritt berechnen kann. Erstellen einer beispielhaften Zeitreihe Bevor Sie einen gleitenden Durchschnitt in SAS berechnen können, benötigen Sie Daten. Der folgende Aufruf von PROC SORT erstellt eine Beispielzeitreihe mit 233 Beobachtungen. Es fehlen keine Werte. Die Daten werden nach der Zeitvariablen T sortiert. Die Variable Y enthält den monatlichen Schlusskurs der IBM-Aktie während eines Zeitraums von 20 Jahren. Berechnen Sie einen gleitenden Durchschnitt in SAS mithilfe von PROC EXPAND PROC EXPAND berechnet viele Arten von gleitenden Durchschnittswerten und anderen rollenden Statistiken, wie z. B. Standardabweichungen, Korrelationen und Summensummen von Quadraten. In der Prozedur identifiziert die ID-Anweisung die Zeitvariable T. Die Daten sollten nach der ID-Variablen sortiert werden. Die CONVERT-Anweisung gibt die Namen der Ein - und Ausgabevariablen an. Die Option TRANSFORMOUT gibt die Methode und die Parameter an, mit denen die rollierende Statistik berechnet wird. Das Beispiel verwendet drei CONVERT-Anweisungen: Der erste gibt an, dass MA eine Ausgangsgröße ist, die als (rückwärts) gleitender Durchschnitt berechnet wird, der fünf Datenwerte (k 5) verwendet. Die zweite CONVERT-Anweisung gibt an, dass WMA eine Ausgabevariable ist, die ein gewichteter gleitender Durchschnitt ist. Die Gewichte werden automatisch durch die Prozedur genormt, so dass die Formel WMA (t) ist. Die dritte CONVERT-Anweisung gibt an, dass EWMA die WMA (t) (5 yt 4y t-1 3y t-2 2 y t-3 1 y t-4) ist Ist eine Ausgangsgröße, die ein exponentiell gewichteter gleitender Durchschnitt mit dem Parameter 0,3 ist. Beachten Sie die METHODNONE-Option in der PROC EXPAND-Anweisung. Die EXPAND-Prozedur passt standardmäßig kubische Spline-Kurven zu den nicht-ignorierenden Werten von Variablen. Die METHODNONE-Optionen stellen sicher, dass die Rohdatenpunkte verwendet werden, um die gleitenden Mittelwerte und nicht die interpolierten Werte zu berechnen. Visualisieren von Bewegungsdurchschnitten Eine wichtige Verwendung eines gleitenden Mittelwertes besteht darin, eine Kurve auf einem Streudiagramm der Rohdaten zu überlagern. So können Sie kurzfristige Trends in den Daten visualisieren. Der folgende Aufruf von PROC SGPOT erstellt die Grafik am Anfang dieses Artikels: Um diesen Artikel so einfach wie möglich zu halten, habe ich nicht diskutiert, wie fehlende Daten bei der Berechnung der gleitenden Durchschnitte zu behandeln. Weitere Informationen zu den fehlenden Daten finden Sie in der Dokumentation zu PROC EXPAND. Mit der Option METHOD können Sie insbesondere festlegen, wie fehlende Werte interpoliert werden sollen. Sie können auch Transformationsoptionen verwenden, um zu steuern, wie gleitende Durchschnittswerte für die ersten Datenpunkte definiert werden. Erstellen Sie einen gleitenden Durchschnitt in SAS, indem Sie den DATA-Schritt verwenden Wenn Sie keine SASETS-Software haben, zeigen die folgenden Referenzen, wie Sie den SAS-DATA-Schritt verwenden, um einfache gleitende Mittelwerte mit Hilfe der LAG-Funktion zu berechnen. Die SAS Knowledge Base bietet den Artikel 8220Bechnen Sie den gleitenden Durchschnitt einer Variablen.8221 Premal Vora (2008) vergleicht den DATA-Schritt mit dem PROC EXPAND-Code im Papier 8220Easy Rolling Statistics mit PROC EXPAND.8221 Ron Cody enthält ein SAS-Makro in mehreren seiner Bücher. Zum Beispiel, Cody8217s Sammlung von beliebten SAS-Programmierung Aufgaben und wie man sie anpackt, bietet ein Makro namens movingAve. Sie können das Makro als Teil des 8220Example-Codes und Data8221 für das Buch herunterladen. Der DATA-Schritt, der für eine Beobachtung zu einem Zeitpunkt ausgelegt ist, ist nicht das beste Werkzeug für Zeitreihenberechnungen, die natürlich mehrere Beobachtungen (Verzögerungen und Ableitungen) erfordern. In einem zukünftigen Blogpost werde ich zeigen, wie SASIML-Funktionen geschrieben werden, die einfache, gewichtete und exponentiell gewichtete gleitende Mittelwerte berechnen. Die Matrix-Sprache in PROC IML ist einfacher zu bearbeiten für Berechnungen, die Zugriff auf mehrere Zeitpunkte erfordern. ffTheDoLoopdyIl2AUoC8zA ffTheDoLoopdqj6IDK7rITs ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: gIN9vFwOqvQ ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: VsGLiPBpWU ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: F7zBnMyn0Lo ffTheDoLoopdl6gmwiTKsz0


No comments:

Post a Comment