Skip to main content

Moving Average Sas By Proc Expandieren

In diesem Beitrag zeige ich einen Trick, um die gleitende Durchschnittsberechnung durchzuführen (kann auf andere Operationen erweitert werden, die Fensterfunktionen erfordern), die super schnell ist. Häufig müssen SAS-Analysten eine gleitende Durchschnittsberechnung durchführen, und es gibt mehrere Optionen nach der Reihenfolge der Präferenz: 1. PROC EXPAND 2. DATENSCHRITT 3. PROC SQL Aber viele Websites dürfen SASETS nicht zur Nutzung von PROC EXPAND und zum Durchführen von gleitendem Durchschnitt in DATEN verwenden STEP erfordert eine Codierung und ist fehleranfällig. PROC SQL ist eine natürliche Wahl für Junior-Programmierer und in vielen Business-Fällen die einzige Lösung, aber SAS39s PROC SQL fehlt Fenster-Funktionen, die in vielen DBs verfügbar sind, um gleitende durchschnittliche Berechnung zu erleichtern. Eine Technik, die Menschen in der Regel verwenden, ist CROSS JOIN, das ist sehr teuer und keine praktikable Lösung für auch mittelgroße Datensätze. In diesem Beitrag zeige ich einen Trick, um die gleitende Durchschnittsberechnung durchzuführen (kann auf andere Operationen erweitert werden, die Fensterfunktionen erfordern), die super schnell ist. Man betrachte die einfachste gleitende Durchschnittsberechnung, wo die nachfolgenden K-Beobachtungen in die Berechnung einbezogen werden, nämlich MA (K), hier setzen wir K5. Zuerst erzeugen wir 20 Obsample-Daten, wobei die Variablen-ID für das Fenstering verwendet werden soll und die Variable X für die MA-Berechnung verwendet wird. Anschließend wenden wir den Standard CROSS JOIN an, um zuerst die resultierenden Daten, nicht gruppiert, zu untersuchen Um zu verstehen, wie die Datenstruktur genutzt werden kann. Aus dem resultierenden Datensatz ist es schwer, einen Anhaltspunkt zu finden, jetzt let39s sortieren durch quotbidquot Spalte in diesem Datensatz: Von diesen sortierten Daten ist es klar, dass wir tatsächlich don39t haben, CROSS JOIN den gesamten ursprünglichen Datensatz, Können wir einen Quotequotdatensatz erzeugen, der den Differenzwert enthält und den ursprünglichen Datensatz CROSS JOIN mit diesem viel kleineren Quottendatensatz setzen und alle Daten, die wir für die MA-Berechnung verwenden müssen, dort sein werden. Nun let39s tun es: CROSS JOIN ursprünglichen Daten mit quot Operationquot-Daten, sortieren nach (a. idops), die eigentlich quotbid39 in sortierten Datensatz Beachten Sie, dass in obigen Code ist es notwendig, ax multiplizieren mit b. weight, so dass die Daten Kann zwischengeschleift werden, da sonst der gleiche X-Wert aus der ursprünglichen Tabelle ausgegeben wird und die MA-Berechnung fehlgeschlagen ist. Die explizite Gewichtsvariable fügt der gesamten MA-Berechnung tatsächlich mehr Flexibilität hinzu. Beim Festlegen von 1 für alle obs-Ergebnisse in einer einfachen MA-Berechnung, zuweisen, verschiedene Gewichte wird dazu beitragen, komplexere MA-Computing, wie z. B. geben weitere Beobachtungen weniger Gewicht für ein zerlegtes MA. Wenn unterschiedliche K Parameter in MA (K) Berechnungen erforderlich sind, muss nur der Betriebsdatensatz aktualisiert werden, was trivialer Job ist. Nun ist die eigentliche Code-Vorlage für MA (K) Berechnung: Mit dieser neuen Methode ist es interessant, sie mit dem teuren Self CROSS JOIN sowie PROC EXPAND zu vergleichen. Auf meiner Workstation (Intel i5 3.8Ghz, 32GB Speicher, 1TB 72K HDD) ist selbst CROSS JOIN prohibitiv lang in der Laufzeit (wenn die Daten groß sind), während die neue Methode nur 2X so viel Zeit wie PROC EXPAND verwendet, sind beide Zeitaufwendungen Trivial Vergleich mit Self CROSS JOIN. Der unten gezeigte Zeitverbrauch ist in Sekunden angegeben. Unten können die Code-Leser laufen und vergleichen Sie sich. Geschrieben 10. Mai 2015 von Liang Xie SAS Programmierung für Data MiningIm ein SAS Anfänger und Im neugierig, wenn die folgende Aufgabe kann viel einfacher, wie es derzeit in meinem Kopf durchgeführt werden. 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 Weise getan werden 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 zeigt, wie die Transformierte zu verwenden (MOVAVE n) Spezifikation eine 5-Periode zu berechnen zentrierten gleitenden Durchschnitt mit Veröffentlichung 6.11 oder früher: eine n Zeit rückwärts Durchschnitt Veröffentlichung 6.11 oder früher unter Verwendung von in Bewegung zu berechnen, die Verwendung des TRANSFORM (MOVAVE machen 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ücklauf-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


Comments

Popular posts from this blog

Instaforex Einzahlung Malaysia

Lokale Einzahlung Auszahlung Local depositwithdrawal adalah sistem bayaran melalui bank-bank tempatan. Lebih mudah, selamat und cepat berbanding kaedah lain. Urusan dikendalikan oleh Einführung Broker (rakyat tempatan) yang dilantik oleh InstaForex. Klik sini untuk senarai Nachricht senden Zuzwinkern IB di seluruh Malaysia. Syarat yang perlu dipatuhi Jika und ein menggunakan IB untuk Ablagerung maka Entzug juga hendaklah melalui IB yang sama. Ini adalah untuk melancarkan urusan. Perkara yang perlu disediakan sebelum Membran sebarang urusan. Pastikan anda sediakan kein telefon, butiran akaun InstaForex anda dan email. Sila tanya IB und ein terlebih dahulu apakah Detail yang diperlukan untuk depositwithdraw. Detail tersebut biasanya seperti akaun bank, nr. Telefon, masa bekerja mereka, berapa minimum depositwithdrawal, bewerten yang digunakan dan sebagainya. Sedikit gambaran bagaimana urusan tersebut dilaksanakan: Proses lokale Einzahlung Anda Transfer RM ke akaun Bank IB. Anda Hängematt

15 Sekunden Binär Optionen

Eine enorme Zunahme der Firmen, die binäre Optionen anbieten, die online handeln, kann in diesen Tagen bezeugt werden. Ihre Dienstleistungen variieren je nach ihrer Erfahrung auf dem Handelsmarkt und auch auf ihrem Team von Fachleuten. Wenn Sie auf der Suche nach einem ultimativen binären Optionen Trading-Erfahrung bietet ein komplettes Paket an Händler online und sofort, dann müssen Sie nicht irgendwelche suchen, wo weiter als die Dienstleistungen des Online-Broker Boss Capital angeboten. Sie bieten ein komplettes Paket für Händler, die Optionen wie Aktien, Indizes und Forex suchen. Sie würden selten über jede binäre Optionen Online-Handelsplattform, die einfacher zu bedienen im Vergleich zu Boss Capital zu kommen. Eine Vielzahl von Leistungen werden angeboten, die Händler, die Handel mit Boss Capital. Eine Fülle von Bank-Optionen wird den Händlern angeboten, ihre Handelskonten zu tanken. Der gesamte Prozess ist problemlos und kostengünstig. Eine schnelle Zahlung an die Händler, wenn

Chartbook Forex Frieden

Careem wächst exponentiell in Saudi mehr Arbeitsplätze im Offing Dubai, Abu Dhabi Wohnungsmarkt Boden: NBAD Kuwait Oil Company kündigt den Ausnahmezustand nach Ölleck Interview-Egypts Palm Hills Augen Afrika Expansion, keine Pläne für GCC Dubai, Abu Dhabi Wohn-Markt Boden: NBAD Interview-Egypts Palm Hills Augen Afrika Expansion, keine Pläne für GCC Oman knackt auf illegale Gebäude Änderungen durch Eigentümer Besetzen Steuern auf Expats wird negativ auf Kuwaits Immobiliensektor auswirken Neues System zur Verhinderung einer schnellen Verbreitung von Hochhaus Infernos in UAE Oman Risse Unten auf illegale Gebäudeveränderungen von Immobilieneigentümer GCC Gesundheitswesen Baumarkt wächst mit stetiger Rate Tehran, Muscat, um Auto-Fabrik zu starten Kuwait Oil Company kündigt den Zustand der Not nach Ölleck Minister loben starker Start in die OPEC, nicht OPEC Öl-Output-Senkungen Ölkanten Nach dem Produzent Treffen, aber hohe US-Ausgabe wiegt Interview: Masdars grüne Traum endlich in Realität S