Sas Proc Erweitern Bewegtes Durchschnittliches Beispiel


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 3. Dezember um 15: 29Die Operationen, die in den Optionen TRANSFORMIN und TRANSFORMOUT verwendet werden können, sind in Tabelle 14.1 gezeigt. 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. Scale OperatorQuick Frage zum Erstellen von gleitenden Durchschnitten. Ich glaube, proc erweitern ist, was ich will, aber ich kann nicht bekommen, um die genaue Operation durchzuführen, die ich will. Auf der Übersichtsebene muss ich auf der Grundlage von Zeitreihendaten für verschiedene Personen Bewegungsdurchschnitte für das letzte Jahr erstellen. Das Problem ist, dass nicht jedes Datum als Beobachtung dargestellt wird. Das Problem hebt seinen Kopf, wenn ich den folgenden Code ausführen: proc erweitern datatest outouttest konvertieren Betrag rollave methodnone transformout (movave 365) Die Ergebnisse der oben genannten Code geben mir Mittelwerte mit der 365 Beobachtungen über die aktuelle (vorausgesetzt, gleiche ID) und nicht die Beobachtungen für die 365 Tage vor dem Beobachtungstag. Als ein einfaches Beispiel, nehmen wir an, ich möchte einen gleitenden Durchschnitt der letzten Woche und verwenden Sie den folgenden Code mit den folgenden Daten (sehr ähnlich meinem ultimativen Problem, aber durchschnittlich nur eine Woche statt ein Jahr). Proc erweitern datatest outouttest konvertieren Betrag rollave methodnone transformout (movave 7)

Comments

Popular posts from this blog

Forex Trading Api Frei

Forex Cargo Toronto Webseite

Mercado Forex Es Seguro