Tuesday 7 November 2017

Gleitender Durchschnitt Mit Proc Expandieren


Im ein SAS Anfänger und Im neugierig, wenn die folgende Aufgabe viel einfacher getan werden kann, wie es gegenwärtig in meinem Kopf ist. Ich habe die folgenden (vereinfachten) Metadaten in einer Tabelle namens userdatemoney: Benutzer - Datum - Geld mit verschiedenen Benutzern und Daten für jeden Kalendertag (für die letzten 4 Jahre). Die Daten werden von User ASC und Date ASC geordnet, Beispieldaten sieht so aus: Ich möchte nun einen fünftägigen gleitenden Durchschnitt für das Geld berechnen. Ich begann mit der beliebten apprach mit der Funktion lag () wie folgt: Das Problem mit dieser Methode tritt auf, wenn der Datenschritt in einen neuen Benutzer läuft. Aron würde einige verzögerte Werte von Anna bekommen, was natürlich nicht passieren sollte. Nun meine Frage: Ich bin ziemlich sicher, dass Sie den Benutzer wechseln können, indem Sie einige zusätzliche Felder wie laggeduser und durch Rücksetzen der N, Summe und Mean-Variablen, wenn Sie einen solchen Schalter bemerken, aber: Kann dies in einer einfacheren Art und Weise erfolgen Vielleicht mit dem BY-Klausel in irgendeiner Weise Vielen Dank für Ihre Ideen und Hilfe Ich denke, der einfachste Weg ist, um PROC EXPAND verwenden: Und wie in Johns Kommentar erwähnt, ist es wichtig, über fehlende Werte (und auch über Anfang und Ende Beobachtungen) zu erinnern. Ive hinzugefügt SETMISS-Option auf den Code, da Sie klar, dass Sie zerofy fehlende Werte wollen, nicht ignorieren (Standard-MOVAVE-Verhalten). Und wenn Sie die ersten 4 Beobachtungen für jeden Benutzer ausschließen möchten (da sie nicht genug Vorgeschichte haben, um den gleitenden Durchschnitt 5 zu berechnen), können Sie die Option TRIMLEFT 4 innerhalb von TRANSFORMOUT () verwenden. Beantwortet Dec 3 13 am 15: 29Beginning in Release 6.08 des SAS-Systems kann PROC EXPAND in SASETS-Software verwendet werden, um eine Vielzahl von Daten-Transformationen zu machen. 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 (CMOVAVE n) Spezifikation verwendet wird, um einen 5-Perioden-zentrierten gleitenden Durchschnitt mit 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ückwärts-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 Die in den Optionen TRANSFORMIN und TRANSFORMOUT verwendbaren Operationen sind in Tabelle 14.1 dargestellt. Operationen werden auf jeden Wert der Serie angewendet. Jeder Wert der Serie wird durch das Ergebnis der Operation ersetzt. In Tabelle 14.1. Oder x den Wert der Reihe zu einer bestimmten Zeitspanne t darstellt, bevor die Transformation angewendet wird, den Wert der Ergebnisreihe darstellt und N die Gesamtzahl der Beobachtungen darstellt. Die Notation n gibt an, dass das Argument n optional ist. Der Standardwert ist 1. Das Notation-Fenster wird als Argument für die beweglichen Statistikoperatoren verwendet und gibt an, dass Sie entweder eine ganzzahlige Anzahl von Perioden n oder eine Liste von n-Gewichten eingeben können Klammern. Die Notationsequenz wird als Argument für die Sequenzoperatoren verwendet und gibt an, dass Sie eine Zahlenfolge angeben müssen. Die Notation s gibt die Länge der Saisonalität an und ist ein erforderliches Argument. Tabelle 14.1 Transformationsoperationen Verschieben von Zeitfensteroperatoren Einige Operatoren berechnen die Statistik für einen Satz von Werten innerhalb eines Laufzeitfensters, die als Laufzeitfensteroperatoren bezeichnet werden. Es gibt zentrierte und rückwärtige Versionen dieser Operatoren. Die Zentrierbewegungszeitfensteroperatoren sind CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS und CMOVVAR. Diese Operatoren berechnen die Statistik der Werte für Beobachtungen. Die Rückwärtsbewegungszeitfensteroperatoren sind MOVAVE, MOVCSS, MOVGMEAN, MOVMAX, MOVMED, MOVMIN, MOVPROD, MOVRANGE, MOVRANK, MOVSTD, MOVSUM, MOVTVALUE, MOVUSS und MOVVAR. Diese Operatoren berechnen die Statistik der Werte. Alle Laufzeitfensteroperatoren akzeptieren ein Argument, das die Anzahl der Perioden angibt, die in das Zeitfenster eingeschlossen werden sollen. Zum Beispiel berechnet die folgende Aussage einen Fünf-Perioden-Rückwärtsbewegungsdurchschnitt von X. In diesem Beispiel wird die resultierende Transformation Die folgende Anweisung berechnet einen Fünfperioden-zentrierten gleitenden Durchschnitt von X. In diesem Beispiel ist die resultierende Transformation Wenn das Fenster mit einem zentrierten Bewegungszeitfensteroperator keine ungerade Zahl ist, wird ein weiterer verzögerter Wert als der Leitwert in das Zeitfenster eingeschlossen. Das Ergebnis des CMOVAVE 4-Operators ist z. B. Sie können eine Vorwärtsbewegungszeitfensteroperation durch Kombinieren eines rückwärts beweglichen Zeitfensteroperators mit dem REVERSE-Operator berechnen. Zum Beispiel berechnet die folgende Anweisung einen Fünf-Zeit-Vorwärtsbewegungsdurchschnitt von X. In diesem Beispiel ist die resultierende Transformation Einige der Laufzeitfensteroperatoren ermöglichen es Ihnen, eine Liste von Gewichtswerten anzugeben, um gewichtete Statistiken zu berechnen. Hierbei handelt es sich um CMOVAVE-, CMOVAVE-, CMOV-, CMOV-, CMOVPROD-, CMOVSTD-, CMOVTVALUE-, CMOVUSS-, CMOVVAR-, MOVAVE-, MOVCSS-, MOVGMEAN-, MOVPROD-, MOVSTD-, MOVTVALUE-, MOVUSS - und MOVVAR-Signale. Um einen gewichteten Bewegungszeitfensteroperator anzugeben, geben Sie nach dem Operatornamen die Gewichtswerte in Klammern ein. Die Fensterbreite ist gleich der Anzahl der Gewichte, die Sie nicht angeben. Zum Beispiel berechnet die folgende Anweisung einen gewichteten fünfperiodischen zentrierten gleitenden Durchschnitt von X. In diesem Beispiel ist die resultierende Transformation Die Gewichtswerte müssen größer als Null sein. Wenn die Gewichte nicht zu 1 addieren, werden die angegebenen Gewichte durch ihre Summe geteilt, um die Gewichte zu erzeugen, die verwendet werden, um die Statistik zu berechnen. Ein vollständiges Zeitfenster steht am Anfang der Serie nicht zur Verfügung. Für die zentrierten Operatoren ist auch ein komplettes Fenster am Ende der Serie nicht verfügbar. Die Berechnung der Laufzeitfensteroperatoren wird wie folgt für diese Randbedingungen angepasst. Bei rückwärts bewegenden Fensteroperatoren wird die Breite des Zeitfensters am Anfang der Reihe verkürzt. Beispielsweise sind die Ergebnisse des Operators MOVSUM 3 fehlende Werte Sie können die Länge der Ergebnisserien abschneiden, indem Sie die Operatoren TRIM, TRIMLEFT und TRIMRIGHT verwenden, um Werte am Anfang oder Ende der Serie fehlen zu lassen. Sie können diese Funktionen verwenden, um die Ergebnisse von Laufzeitfensteroperatoren zu trimmen, sodass die Ergebnisreihe nur Werte enthält, die aus einem Zeitfenster mit voller Breite berechnet werden. Zum Beispiel berechnen die folgenden Aussagen einen zentrierten Fünfperiodenbewegungsdurchschnitt von X. Und sie setzen auf fehlende Werte an den Enden der Serie, die Mittelwerte von weniger als fünf Werten sind. Normalerweise ignorieren die Bewegungszeitfenster und die kumulativen Statistikoperatoren fehlende Werte und berechnen ihre Ergebnisse für die nichtmissing Werte. Wenn dem Operator NOMISS vorangestellt wird, erzeugen diese Funktionen ein fehlendes Ergebnis, wenn irgendein Wert innerhalb des Zeitfensters fehlt. Der NOMISS-Operator führt keine Berechnungen durch, sondern dient dazu, die Operation des bewegten Zeitfenster-Operators, der ihm folgt, zu modifizieren. Der NOMISS-Operator hat keine Wirkung, es sei denn, es wird von einem beweglichen Zeitfensteroperator gefolgt. Beispielsweise berechnet die folgende Anweisung einen fünfperiodischen gleitenden Durchschnitt der Variablen X, erzeugt aber einen fehlenden Wert, wenn einer der fünf Werte fehlt. Die folgende Anweisung berechnet die kumulative Summe der Variablen X, erzeugt aber für alle Perioden nach dem ersten fehlenden X-Wert einen fehlenden Wert. Ähnlich wie der NOMISS-Operator führt der MISSONLY-Operator keine Berechnungen aus (es sei denn, es folgt die MEAN-Option), jedoch dient er dazu, die Operation des bewegten Zeitfenster-Operators, der ihm folgt, zu modifizieren. Wenn der Operator MISSONLY vorangestellt wird, ersetzen diese Laufzeitfensteroperatoren alle fehlenden Werte durch die sich bewegende Statistik und lassen die nicht-veränderten Werte unverändert. Zum Beispiel ersetzt die folgende Anweisung alle fehlenden Werte der Variablen X durch einen exponentiell gewichteten gleitenden Durchschnitt der vergangenen Werte von X und lässt nicht veränderte Werte unverändert. Die fehlenden Werte werden mit dem angegebenen exponentiell gewichteten gleitenden Durchschnitt interpoliert. (Dies wird auch als einfache exponentielle Glättung bezeichnet.) Die folgende Anweisung ersetzt alle fehlenden Werte der Variablen X mit dem Gesamtmittel von X. Sie können den SETMISS-Operator verwenden, um fehlende Werte durch eine angegebene Zahl zu ersetzen. Beispielsweise ersetzt die folgende Anweisung alle fehlenden Werte der Variablen X durch die Zahl 8.77. Klassische Zerlegungsoperatoren Ist eine saisonale Zeitreihe mit Beobachtungen pro Saison, brechen klassische Zersetzungsmethoden die Zeitreihen in vier Komponenten: Trend, Zyklus, saisonale und unregelmäßige Komponenten. Die Trend - und Taktkomponenten werden oft zu einem Trendkreislauf zusammengefasst. Es gibt zwei grundlegende Formen der klassischen Zersetzung: multiplikativ und additiv, die unten gezeigt werden. Anwendungsbeispiele Die multiplikativen saisonalen Indizes sind 0,9, 1,2. 0,8 und 1,1 für die vier Quartale. Lassen Sie SEASADJ eine vierteljährliche Zeitreihenvariable sein, die saisonbereinigt multiplikativ angepasst wurde. Zur Wiederherstellung der Saisonalität zu SEASADJ verwenden Sie die folgende Transformation: Die additive saisonalen Indizes sind 4,4, -1,1, -2,1 und -1,2 für die vier Quartale. Lassen Sie SEASADJ eine vierteljährliche Zeitreihenvariable sein, die saisonabhängig additiv angepasst wurde. Um die Saisonalität nach SEASADJ wiederherzustellen, verwenden Sie folgende Transformation: Set Operators Für die set Operatoren steht der erste Parameter,, für den zu ersetzenden Wert und der zweite Parameter für den Ersatzwert. Der Ersatz kann am Anfang, an der Mitte oder am Ende der Serie lokalisiert werden. Beispiele für die Verwendung Nehmen wir an, dass ein Geschäft vor kurzem eröffnet wurde und dass die Verkaufsgeschichte in einer Datenbank gespeichert ist, die fehlende Werte nicht erkennt. Obwohl die Nachfrage vor dem Öffnen der Filialen existiert, weist diese Datenbank den Wert Null auf. Das Modellieren der Verkaufsgeschichte kann problematisch sein, da die Verkaufsgeschichte meist Null ist. Um diesen Mangel zu kompensieren, sollten die führenden Nullwerte auf Fehlen gesetzt werden, wobei die verbleibenden Nullwerte unverändert bleiben (keine Nachfrage darstellen). Ebenso wird angenommen, dass ein Geschäft vor kurzem geschlossen wurde. Die Nachfrage kann noch vorhanden sein, und daher ein aufgezeichneter Wert von Null nicht genau widerspiegeln tatsächlichen Nachfrage. Maßstabsbediener

No comments:

Post a Comment