Tuesday 7 November 2017

Wie Man Einen Gleitenden Durchschnitt In Sas Berechnet


Ich schloss einen Screenshot ein, um zu helfen, mein Problem zu klären: Im, der versucht, irgendeine Art gleitender Durchschnitt und bewegliche 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). Da ich nicht sehr vertraut mit Sas-Befehle, sollte es (sehr sehr grob) wie: Oder so etwas, ich habe wirklich keine Ahnung, Im gonna versuchen und herauszufinden, aber es lohnt sich, wenn ich es nicht finden Code auf der Registerkarte Voller Code veranschaulicht, wie der gleitende Durchschnitt einer Variablen über einen gesamten Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-Gruppe berechnet wird. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Diese Beispieldateien und Codebeispiele werden von SAS Institute Inc. bereitgestellt, und zwar ohne Gewährleistung jeglicher Art, entweder ausdrücklich oder implizit, einschließlich aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck. Die Empfänger erkennen an und stimmen zu, dass SAS Institute nicht für irgendwelche Schäden haftbar ist, die sich aus ihrer Verwendung dieses Materials ergeben. Darüber hinaus bietet das SAS Institute keine Unterstützung für die hierin enthaltenen Materialien. Berechnen Sie den gleitenden Durchschnitt einer Variablen über einen ganzen Datensatz, über die letzten N Beobachtungen in einem Datensatz oder über die letzten N Beobachtungen innerhalb einer BY-group. Im ein SAS Anfänger und Im neugierig, wenn die folgende Aufgabe viel getan werden kann Einfacher, wie es derzeit 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 Dec 3 13 bei 15:29

No comments:

Post a Comment