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...

Wie Zu Interpretieren 200 Tage Gleitenden Durchschnitt

Wie man ein Moving Average lesen Technische Trader sind mit vielen Entscheidungen konfrontiert, wenn es darum geht, welche Indikatoren in ihrem Trading zu verwenden. Mehr als oft nicht Forex Trader, an einem Punkt in ihrer Karriere, wenden Sie sich an Moving Averages (MVArsquos) für die Suche nach Markttrends und Impuls. Überraschend nach dem Lernen, MVArsquos zu analysieren, finden Händler oft, dass sie in der Lage sind, schnell verschiedene Arten von Preisaktionen zu identifizieren, die sie zuvor nicht ohne technische Indikatoren auf ihren Charts erkennen konnten. Mit Moving Averages kann helfen, einen Händler einen Vorteil bei der Planung einer Handelsstrategie. So Letrsquos bekommen damit begonnen, zu lernen, wie man gleitende Durchschnitte lesen. (Erstellt von Walker England) Wie man die beweglichen Durchschnitte liest Das obige Bild stellt einige der häufiger verwendeten gleitenden Durchschnitte dar, darunter eine 30 (grüne), 50 (schwarze) und 200 (rote) Periode MVA. Diese Indika...

Eve Trading Strategien

Ich sprach mit einem Corp-Mate letzte Nacht und sie erwähnte, dass sie verwendet, um Fringe Mining-Systeme weg von Handel Hubs und stellen Kaufaufträge für Trit zu viel billiger als die aktuellen Preise (dh 1.000.000 trit 4.0 ISK ea während Jita Ist ungefähr 5,07). Sie sagte, daß sie einen kräftigen Profit bildete, weil Bergleute entweder nicht wußten, wo sie ihre Mineralien nehmen oder sie nicht transportieren konnten. Meine Frage ist, kann ich sagen, wo diese Systeme durch das Betrachten der starmap und die damit verbundenen Statistiken sein könnte Sollte ich eine externe Website Ich habe einen Bergmann selbst, aber ich normalerweise folgte meinem Corp zu mir, so Im nicht wirklich sicher, wo diese Systeme Soll ich suchen. Gefragt Jul 2 13 um 16: 48Warning: Ive aufgegeben EVE, weil Ive sehr störende Dinge gefunden und nicht empfehlen, dass Sie spielen. Diese Seite ist alt und wahrscheinlich veraltet Einführung Willkommen bei EVE Online Möchtegern-Milliardär EVE online ist ein free2pla...