Friday 31 March 2017

Sas Proc Expand Exponentiell Gleitender Durchschnitt

Ich habe einen Screenshot enthalten, um zu helfen, mein Problem zu klären: Ich versuche, irgendeine Art von gleitendem Durchschnitt zu berechnen und die Standardabweichung zu bewegen. Die Sache ist, dass ich die Variationskoeffizienten (stdevavg) für den tatsächlichen Wert berechnen möchte. Normalerweise erfolgt dies durch die Berechnung der stdev und avg für die letzten 5 Jahre. Allerdings gibt es manchmal auch Beobachtungen in meiner Datenbank, für die ich nicht die Informationen der letzten 5 Jahre habe (vielleicht nur 3, 2 usw.). Thats, warum ich einen Code wünsche, der das avg und stdev berechnet, selbst wenn es keine Informationen für die ganzen 5 Jahre gibt. Auch, wie Sie in den Beobachtungen sehen, manchmal habe ich Informationen über mehr als 5 Jahre, wenn dies der Fall ist, brauche ich irgendeinen gleitenden Durchschnitt, der mir erlaubt, das avg und stdev für die letzten 5 Jahre zu berechnen. Wenn also ein Unternehmen 7 Jahre lang Informationen hat, brauche ich irgendeine Art von Code, der das avg und stdev berechnen wird, sagen wir 1997 (von 1991-1996), 1998 (von 1992-1997) und 1999 (1993-1998). Als ich nicht sehr vertraut mit sas Befehlen es aussehen sollte (sehr sehr grob) wie: Oder so etwas, ich habe wirklich keine Ahnung, Im gonna versuchen und es herauszufinden, aber es lohnt es, es zu schreiben, wenn ich es nicht selbst finden werde SAS Anfänger und Im neugierig, wenn die folgende Aufgabe viel einfacher gemacht werden kann, wie es derzeit in meinem Kopf ist. Ich habe die folgenden (vereinfachten) Metadaten in einer Tabelle namens userdatemoney: User - Date - 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 bestellt, Beispieldaten sehen so aus: Ich möchte nun einen fünftägigen gleitenden Durchschnitt für das Geld berechnen. Ich begann mit dem ziemlich populären apprach mit der lag () Funktion wie folgt: Wie Sie sehen, das Problem mit dieser Methode tritt auf, wenn es wenn der Datenschritt in einen neuen Benutzer läuft. Aron bekam einige hintere Werte von Anna, was natürlich nicht passieren sollte. Nun meine Frage: Ich bin mir ziemlich sicher, dass du mit dem User-Switch umgehen kannst, indem du einige zusätzliche Felder wie laggeduser hinzufügst und die N-, Summen - und Mean-Variablen zurücksetzest, wenn du einen solchen Schalter kennst, aber das kann man einfacher machen BY Klausel in irgendeiner Weise Danke für deine Ideen und Hilfe Ich denke, der einfachste Weg ist, PROC EXPAND zu verwenden: Und wie in Johns Kommentar erwähnt, ist es wichtig, sich an fehlende Werte zu erinnern (und auch über Anfangs - und Endbeobachtungen). Ive hat die SETMISS-Option zum Code hinzugefügt, da du klar gemacht hast, dass du zerofy fehlende Werte willst, ignorierst sie nicht (Standard-MOVAVE-Verhalten). Und wenn du die ersten 4 Beobachtungen für jeden Benutzer ausschließen willst (da sie nicht genug Vorgeschichte haben, um den gleitenden Durchschnitt zu berechnen), kannst du die Option TRIMLEFT 4 innerhalb von TRANSFORMOUT () verwenden. Beantwortet am 3. Dezember 13 um 15: 29Beginnend in Release 6.08 des SAS-Systems kann PROC EXPAND in der SASETS-Software verwendet werden, um eine Vielzahl von Datenumwandlungen vorzunehmen. Diese Transformationen beinhalten: Leads, Lags, gewichtete und ungewichtete gleitende Durchschnitte, bewegte Summen und kumulative Summen, um nur einige zu nennen. Viele neue Transformationen wurden in Release 6.12 hinzugefügt, einschließlich separater Spezifikationen für zentrierte und rückwärts bewegte Durchschnitte. Diese neuen Transformationen machten es notwendig, die Syntax für einige der vor Release 6.12 unterstützten Transformationen zu ändern. Beispiele für die Angabe der Syntax für zentrierte und rückwärts bewegte Mittelwerte mit Release 6.11 und früher und Release 6.12 und höher sind nachfolgend 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 berechnet durch Mittelung von insgesamt 5 aufeinanderfolgenden Werten der Reihe (der aktuelle Periodenwert zusätzlich zu den beiden unmittelbar vorhergehenden Werten und zwei unmittelbar nach dem aktuellen Wert folgenden Werten). Ein 5-fach rückwärts gleitender Durchschnitt 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-Zentrier-Gleitender Durchschnitt mit Release 6.11 oder früher zu berechnen: Um einen n-Perioden-Rückwärts-Gleitender 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 wo k (n-2) 2 ist, wenn n gerade ist. Beispielsweise veranschaulicht die folgende Syntax, wie ein 5-fach rückwärts gleitender Durchschnitt mit Release 6.11 oder früher berechnet werden kann. Die folgende Syntax veranschaulicht, wie die TRANSFORM (CMOVAVE n) - Spezifikation verwendet wird, um einen 5-Perioden-zentrierten gleitenden Durchschnitt mit Release 6.12 oder zu berechnen Später: Die folgende ähnliche Syntax veranschaulicht, wie die TRANSFORM (MOVAVE n) - Spezifikation verwendet wird, um einen 5-fach rückwärts gleitenden 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 dargestellt. Betriebssystem - und Freigabeinformationen Die Operationen, die in den Optionen TRANSFORMIN und TRANSFORMOUT verwendet werden können, 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 Zeitperiode t darstellt, bevor die Transformation angewendet wird, repräsentiert den Wert der Ergebnisreihe und N die Gesamtzahl der Beobachtungen. Die Notation n zeigt an, dass das Argument n optional ist, ist die Voreinstellung 1. Das Notationsfenster wird als Argument für die beweglichen Statistikoperatoren verwendet und es zeigt an, dass Sie entweder eine ganzzahlige Anzahl von Perioden n oder eine Liste von n Gewichten angeben können Klammern Die Notationssequenz wird als Argument für die Sequenzoperatoren verwendet und zeigt an, dass Sie eine Folge von Zahlen angeben müssen. Die Notation s gibt die Länge der Saisonalität an, und es ist ein erforderliches Argument. Tabelle 14.1 Transformationsoperationen Verschieben von Zeitfenster Operatoren Einige Operatoren berechnen Statistiken für einen Satz von Werten innerhalb eines Bewegungszeitfensters, die als Laufzeitfensteroperatoren bezeichnet werden. Es gibt zentrierte und rückseitige Versionen dieser Operatoren. Die zentrierten Bewegungszeitfensteroperatoren sind CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS und CMOVVAR. Diese Operatoren berechnen die Statistik der Beobachtungswerte. 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 Bewegungszeitfensteroperatoren akzeptieren ein Argument, das die Anzahl der Perioden angibt, die in das Zeitfenster aufgenommen werden sollen. Beispielsweise berechnet die folgende Anweisung einen fünfmaligen rückwärts gleitenden Durchschnitt von X. In diesem Beispiel ist die resultierende Transformation Die folgende Aussage berechnet einen fünfmaligen, 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 Leitungswert im Zeitfenster enthalten. Zum Beispiel ist das Ergebnis des Operators CMOVAVE 4 Sie können eine Vorwärtsbewegungszeitfensteroperation durch Kombinieren eines rückwärts beweglichen Zeitfensterbedieners mit dem REVERSE-Operator berechnen. Beispielsweise berechnet die folgende Anweisung einen fünfwertigen, vorwärts gleitenden Durchschnitt von X. In diesem Beispiel ist die daraus resultierende Transformation. Einige der Laufzeitfensteroperatoren ermöglichen es Ihnen, eine Liste von Gewichtswerten anzugeben, um gewichtete Statistiken zu berechnen. Diese sind CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVPROD, CMOVSTD, CMOVTVALUE, CMOVUSS, CMOVVAR, MOVAVE, MOVCSS, MOVGMEAN, MOVPROD, MOVSTD, MOVTVALUE, MOVUSS und MOVVAR. Um einen gewichteten Bewegungszeitfensteroperator anzugeben, geben Sie nach dem Operatornamen die Gewichtswerte in Klammern ein. Die Fensterbreite entspricht der Anzahl der Gewichte, die Sie nicht angeben. Beispielsweise berechnet die folgende Anweisung einen gewichteten fünfwertigen, 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 auf 1 summieren, werden die angegebenen Gewichte durch ihre Summe dividiert, um die zur Berechnung der Statistik verwendeten Gewichte zu erzeugen. Ein komplettes Zeitfenster steht zu Beginn der Serie nicht zur Verfügung. Für die zentrierten Betreiber ist auch ein komplettes Fenster am Ende der Serie nicht verfügbar. Die Berechnung der Laufzeitfensteroperatoren wird für diese Randbedingungen wie folgt angepasst. Bei rückwärts bewegten Fensteroperatoren wird die Breite des Zeitfensters zu Beginn der Serie verkürzt. Zum Beispiel sind die Ergebnisse des MOVSUM 3-Operators fehlende Werte Sie können die Länge der Ergebnisreihen mit den TRIM-, TRIMLEFT - und TRIMRIGHT-Operatoren abschneiden, um die Werte am Anfang oder Ende der Serie festzulegen. Sie können diese Funktionen verwenden, um die Ergebnisse der Laufzeitfensteroperatoren zu schneiden, so dass die Ergebnisreihe nur Werte enthält, die aus einem Vollbreiten-Zeitfenster berechnet wurden. Beispielsweise berechnen die folgenden Aussagen einen zentrierten fünfwertigen gleitenden Durchschnitt von X. Und sie setzen auf fehlende Werte an den Enden der Serie, die Mittelwerte von weniger als fünf Werte sind. Normalerweise ignorieren das Bewegungszeitfenster und die kumulativen Statistikoperatoren fehlende Werte und berechnen ihre Ergebnisse für die nichtmissenden Werte. Wenn dem NOMISS-Operator vorangestellt wird, ergeben diese Funktionen ein fehlendes Ergebnis, wenn ein Wert innerhalb des Zeitfensters fehlt. Der NOMISS-Operator führt keine Berechnungen durch, sondern dient dazu, den Betrieb des bewegten Zeitfensterbetreibers zu ändern, der darauf folgt. Der NOMISS-Operator hat keine Wirkung, es sei denn, es folgt ein bewegter Zeitfensteroperator. Beispielsweise berechnet die folgende Anweisung einen fünfwertigen 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 durch (sofern nicht die MEAN-Option gefolgt wird), sondern dient dazu, den Betrieb des bewegten Zeitfensterbetreibers zu ändern, der darauf folgt. Wenn der MISSONLY-Operator vorangegangen ist, ersetzen diese Laufzeitfensterbetreiber alle fehlenden Werte mit der bewegten Statistik und lassen unveränderte Werte unverändert. Beispielsweise ersetzt die folgende Anweisung alle fehlenden Werte der Variablen X mit einem exponentiell gewichteten gleitenden Durchschnitt der vergangenen Werte von X und hinterlässt unverä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 Gesamtmittelwert von X. Sie können den SETMISS-Operator verwenden, um fehlende Werte durch eine bestimmte Nummer zu ersetzen. Beispielsweise ersetzt die folgende Anweisung fehlende Werte der Variablen X mit der Nummer 8.77. Klassische Zerlegungsoperatoren Wenn saisonale Zeitreihen mit Beobachtungen pro Saison sind, brechen klassische Zerlegungsmethoden die Zeitreihe in vier Komponenten: Trend, Zyklus, saisonale und unregelmäßige Komponenten. Die Trend - und Zykluskomponenten werden oft zu der Trendzykluskomponente zusammengefasst. Es gibt zwei grundlegende Formen der klassischen Zersetzung: multiplikativ und additiv, die unten zu sehen sind. Anwendungsbeispiele Die multiplikativen saisonalen Indizes sind 0,9, 1,2. 0,8 und 1,1 für die vier Quartale. Sei SEASADJ eine vierteljährliche Zeitreihenvariable, die saisonbereinigt multiplikativ angepasst wurde. Um die Saisonalität für SEASADJ wiederherzustellen, verwenden Sie die folgende Transformation: Die additiven saisonalen Indizes sind 4,4, -1,1, -2,1 und -1,2 für die vier Quartale. Sei SEASADJ eine vierteljährliche Zeitreihenvariable, die saisonabhängig additiv angepasst wurde. Um die Saisonalität auf SEASADJ zurückzusetzen, verwenden Sie die folgende Transformation: Set Operators Für die Set-Operatoren steht der erste Parameter, der Wert, der ersetzt werden soll, und der zweite Parameter, stellt den Ersatzwert dar. Der Ersatz kann bis zum Anfang, Mitte oder Ende der Serie lokalisiert werden. Anwendungsbeispiele Angenommen, ein Laden wurde vor kurzem geöffnet und der Verkaufsverlauf wird in einer Datenbank gespeichert, die keine fehlenden Werte erkennt. Obwohl die Nachfrage vor dem Öffnen der Filiale existiert hat, weist diese Datenbank den Wert Null auf. Die Modellierung der Verkaufsgeschichte kann problematisch sein, weil die Verkaufsgeschichte meist Null ist. Um diesen Mangel zu kompensieren, sollten die führenden Nullwerte so eingestellt werden, dass sie mit den verbleibenden Nullwerten unverändert bleiben (ohne Anforderung). Ebenso wird angenommen, dass ein Laden vor kurzem geschlossen ist. Die Nachfrage kann noch vorhanden sein und damit ein aufgezeichneter Wert von Null nicht genau die tatsächliche Nachfrage widerspiegeln. Scale Operator


No comments:

Post a Comment