Skip to main content

Moving Average Berechnung In Sas


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. Ich habe einen Screenshot, um zu klären, mein Problem: Im Versuch, eine Art von gleitenden Durchschnitt und Bewegung Standardabweichung zu berechnen. Die Sache ist, ich möchte die Variationskoeffizienten (stdevavg) für den aktuellen Wert berechnen. Normalerweise geschieht dies durch die Berechnung der stdev und avg für die letzten 5 Jahre. Aber manchmal gibt es Beobachtungen in meiner Datenbank, für die ich nicht über die Informationen der letzten 5 Jahre (vielleicht nur 3, 2 etc). Thats, warum ich einen Code wünschen, der den avg und stdev berechnet, selbst wenn es keine Informationen für die ganzen 5 Jahre gibt. Auch, wie Sie in den Beobachtungen zu sehen, manchmal habe ich Informationen über mehr als 5 Jahren, wenn dies der Fall ist, brauche ich irgendeine Art von gleitenden Durchschnitt, der mir erlaubt, die avg und stdev für die letzten 5 Jahre zu berechnen. Also, wenn ein Unternehmen hat Informationen für 7 Jahre Ich brauche eine Art von Code, der die avg und stdev für berechnen wird, sagen wir, 1997 (1991-1996), 1998 (von 1992-1997) und 1999 (1993-1998). Wie im mit sas nicht sehr vertraut Befehle sollte es (sehr sehr grob) aussehen: Oder so etwas wie dieses, ich habe wirklich keine Ahnung, Im gonna versuchen, es herauszufinden, aber es lohnt sich zu veröffentlichen, wenn ich es gewohnt finden myself. moving Durchschnitt Mit Datumsbereich gleitenden Durchschnitt mit Datumsbereich gleitenden Durchschnitt mit Datumsbereich Im neu zu SAS, und ich habe einige Probleme mit der Berechnung der gleitenden Durchschnitt basierend auf Daten und Gruppierungen innerhalb der Datenmenge. Grundsätzlich versuche ich, den gleitenden Durchschnitt für jede Beobachtung auf der Grundlage der letzten 90 Tage zu berechnen. Jede Beobachtung hat ein Datum. Ich muss sie auch gruppieren, damit der gleitende Durchschnitt nur auf der Gruppe basiert. Mit anderen Worten, wenn ich war es Gruppierung von Früchten, Äpfel würde seine einzige gleitende Durchschnitt und orages, etc. Ich weiß, ich muss die Datensatz zuerst sortieren, dann verwenden Sie eine Retain-Anweisung. Ich dachte eigentlich, ein Makro zu tun. Ich begann dieses, aber scheinen, irgendeinen Teil davon zu erhalten, um zu arbeiten. Kann jemand mir helfen Ich weiß, wie die Sortierung zu tun, aber ich weiß auch, wie man den Durchschnitt zu bekommen, aber seine nicht Gruppierung richtig. Sie gibt mir nur den Wert der Beobachtung. Ich habe versucht, es mit SQL zu tun, aber seine nicht funktioniert entweder. Das ist, was ich kam mit. Proc sql create table data. movingavg als select a., Mean (Basis) als Bewegen von xx wo Dating-Gruppe nach Produkt RE: gleitender Durchschnitt mit Datumsbereich dies funktioniert auch nicht. Data new set alt von id beibehalten basis if date90 then avg mean (Basis) run RE: gleitender Durchschnitt mit Datumsbereich Hier ist ein Beispiel für meine Datenmenge. Produkt Datum Basis Apfel may20 4 Orange march2 3 april 3 Banane jan31 33 Apfel feb13 88 Apfel dec2 12, was ich brauche, ist ein laufender gleitenden Durchschnitt der letzten 90 Tagen von Produkt, das auf der Basis Menge. Sorry für den mehrfachen Pfosten, aber, nachdem ich meinen früheren Post wieder las, schien es verwirrend, was ich versuche zu tun. Danke RE: gleitender Durchschnitt mit Datumsbereich klaz2002 (Programmierer) 25 Sep 07 16:00 Ich muss damit anfangen, danke für diese Frage. Denn es gab mir keine Ruhe, bis ich es lösen konnte. Lassen Sie mich sagen, was ich glaube, ist Ihre Anforderung nur so, dass Sie und ich sind auf der gleichen Seite. Req 1) Sie möchten einen gleitenden Durchschnitt der letzten 90 Tage von Daten nach Produktnamen haben. Bedeutet, dass für ein einziges Produkt (zB Apple) Sie nur daran interessiert, die Basis-Werte für dieses Produkt gehen zurück 90 Tage. 2) Ich nahm an, dass Sie eine (1) Aufzeichnung pro Produkt pro Tag haben. Das heißt, Sie haben nie mehr als einen Basiswert pro Produkt pro Tag. (Der Code behandelt nicht mehr jetzt) ​​Zur Lösung der Geschichte Problem (Werte gehen zurück 90 Tage) Ich verwendete die lagx () und legte Tage 1-90 in Variablen und fügte sie dann zu einem ARRAY. Da die Variable in das Array aufgenommen werden muss, habe ich ein kleines Makro erstellt, das die Codezeilen erzeugt hat, die ich benötigte. Makro, das SCHAFFT 270 VARIABLE FÜR 90 TAGE DER GESCHICHTE Makro SetVars do i1 bis 90 prodampi lagampi (Produkt) dateampi lagampi (Datum) basisampi lagampi (Basis) Ende Sortierung PRODUKT UND DATUM proc Art Daten flicken yourdata aus datasorted nach Produkt Datum Laufdaten letzte Satz datasorted nach Produkt Datum Länge prod1-prod90 7 date1-date90 Basis1-basis90 mySum 8 Array aktuellen mySum Array prod prod1-prod90 Array dt date1-date90 Array bs Basis1-basis90 SetVars SET THE DATE 90 TAGEN DateMinus90 Datum-90 ÜBERPRÜFEN BCTR 1 mySum 0 LOOP durch alle möglichen TAGE tun i1 bis 90 WRITE AUSNAHME FÜR ERSTE FALL-Gruppe wie KEIN LAG nOCH wenn first. product dann MovingAvg Basis PRÜFEN SAME Produktname und innerhalb von 90 Tagen sonst, wenn trim (upcase (prod )) trim (upcase (Produkt)) und dt dateminus90 dann WENN dANN tun GEFUNDEN ADD VAR mySum Summe (mySum, Basis, bs) HALTEN A an, wie viele Datenpunkte sUM Ende GEFUNDEN BCTR 1 Ende WENN KEINE dann die aktuelle Basis Wert GEFUNDEN Sollte verwendet werden, wenn mysum 0 dann myavg Basis sonst myavg mysumbctr laufen proc print dataFINAL var Produkt Datum dateminus90 Basis myavg Format Datum dateminus90 mmddyy10. Ich hoffe, dass dies Ihnen hilft. Sie sollten wirklich so aussehen, wie ich dies wirklich ohne umfassende Überprüfung getan habe. Es kann viele Einschränkungen für diesen Code so hüten.

Comments

Popular posts from this blog

Binary Optionen Strategien Erwürgen

Die Straddle-Strategie Diese Strategie ist sehr beliebt bei Anfänger und professionelle Händler. Die ursprüngliche Form der Straddle-Strategie kann nur ordnungsgemäß implementiert werden, indem entweder traditionelle Optionen oder fortgeschrittene binäre Optionen Trading-Plattformen, die ausstehende Aufträge zu unterstützen. Diese Art von Anweisung ermöglicht es Ihnen, Trades auszuführen, sobald der Kurs die vorgewählten Werte überschreitet. Die meisten erstklassigen Binäroptionen-Broker unterstützen diese Art von Anlage nicht, da sie normalerweise nur Positionen offen zum aktuellen Marktpreis zulassen. Da die Straddle-Strategie es erfordert, sowohl PUT - als auch CALL-Binäroptionen unter Verwendung derselben Asset - und Verfallszeit zu implementieren, scheint sie unter solchen Umständen praktisch überflüssig zu sein. Darüber hinaus finden Sie, dass die Bewältigung der Verwendung von ausstehenden Bestellungen ist nicht so eine leichte Aufgabe, da diese Aufgabe erfordert erhebliche Zeit...

Kann Wir Handel Forex In Indien

Internationale Präsenz: beliebige Bank bevorzugen 18.01.2017 Update für Cent-Accounts: neuer Server und erhöhte Auftragsvolumen 23.12.2016 Frohe Weihnachten und einen guten Rutsch ins neue Jahr 30.11.2016 Neuer Schritt in der Entwicklung unseres Unternehmens - Europas Lizenz 28.11.2016 Neues Partnerprogramm - Pro STP Markup 25.07.2016 Änderungen der ProSTP-Konten 17.06.2016 Änderungen der Margin-Anforderungen 15.06.2016 Forex4you Contest-Ergebnisse 01.04.2016 Über 20.000.000 Aufträge wurden im Share4you-Service kopiert 23.03.2016 Willkommen Neueste und höchste Leverage - 1: 2000 28.12.2015 Forex4you wünscht Ihnen frohe Weihnachten und ein glückliches neues Jahr Daily Forex Video für Partner Über Firma First Floor, Mandar House, Johnsons Ghut, PO (E-Global Trade Finance Group, Inc.) E-Global Trade Finance Group, Inc. ist zugelassen und reguliert Von der FSC nach dem Securities and Investment Business Act, 2010 Lizenz: SIBAL121027. Die Jahresabschlüsse der E-Global Trade Finance Group, I...

Don Trade Optionen

Optionen Grundlagen: Was sind Optionen Eine Option ist ein Vertrag, der dem Käufer das Recht gibt, aber nicht die Verpflichtung, einen zugrunde liegenden Vermögenswert zu einem bestimmten Preis vor oder zu einem bestimmten Zeitpunkt zu kaufen oder zu verkaufen. Eine Option, genau wie eine Aktie oder Anleihe, ist eine Sicherheit. Es ist auch ein verbindlicher Vertrag mit streng definierten Begriffen und Eigenschaften. Immer noch verwirrt Die Idee hinter einer Option ist in vielen alltäglichen Situationen vorhanden. Sprich, zum Beispiel, dass Sie ein Haus entdecken, das Sie lieben, zu kaufen. Leider haben Sie nicht das Geld, um es für weitere drei Monate zu kaufen. Sie sprechen mit dem Eigentümer und verhandeln einen Deal, der Ihnen eine Option, das Haus in drei Monaten zu einem Preis von 200.000 zu kaufen gibt. Der Besitzer stimmt, aber für diese Option, zahlen Sie einen Preis von 3.000. Nun, betrachten zwei theoretische Situationen, die entstehen könnten: 13 Seine entdeckt, dass das Ha...