Jag är en nybörjare i SAS och jag är nyfiken om följande uppgift kan göras mycket enklare som det är för närvarande i mitt huvud. Jag har följande (förenklad) metadata i en tabell som heter userdatemoney: Användare - Datum - Pengar med olika användare och datum för varje kalenderdag (under de senaste 4 åren). Uppgifterna är beställda av användaren ASC och Date ASC, provdata ser ut så här: Jag vill nu beräkna ett fem dagars glidande medelvärde för pengarna. Jag började med den ganska populära apprachen med funktionen lag () som följande: Som du ser uppstår problemet med den här metoden om det finns datasteg i en ny användare. Aron skulle få några fördröjda värden från Anna som förstås inte ska hända. Nu är min fråga: Jag är ganska säker på att du kan hantera användaromkopplaren genom att lägga till några extra fält som laggeduser och genom att nollställa N, Sum och Mean variables om du märker en sådan växel men: Kan detta göras på ett enklare sätt. Genom klausul på något sätt Tack för dina idéer och hjälp Jag tycker att det enklaste sättet är att använda PROC EXPAND: Och som nämnts i Johns kommentar är det viktigt att komma ihåg om saknas värden (och om att börja och avsluta observationer också). Ive har lagt till SETMISS-alternativet till koden, eftersom du klargjorde att du vill zerofy sakna värden, inte ignorera dem (standard MOVAVE-beteende). Och om du vill utesluta de första 4 observationerna för varje användare (eftersom de inte har tillräckligt med förhistorik för att beräkna glidande medelvärde 5) kan du använda alternativet TRIMLEFT 4 inom TRANSFORMOUT (). svarade dec 3 13 på 15: 29Beginning i Release 6.08 av SAS-systemet, kan PROC EXPAND i SASETS-programvara användas för att göra en mängd olika datatransformationer. Dessa omvandlingar inkluderar: leder, lags, viktat och obestämt glidmedel, rörliga summor och kumulativa summor, för att nämna några. Många nya transformationer tillsattes i Release 6.12, inklusive separata specifikationer för centrerade och bakåtgående glidmedel. Dessa nya transformationer gjorde det nödvändigt att modifiera syntaxen för några av de transformationer som stöddes före Release 6.12. Exempel på hur du anger syntaxen för centrerade och bakåtgående glidmedel med hjälp av Släpp 6.11 och tidigare och Släpp 6.12 och senare ges nedan. PROC EXPAND kan beräkna antingen ett centrerat glidande medelvärde eller ett bakåtgående glidande medelvärde. Ett 5-årigt centrerat glidande medelvärde beräknas genom att iverna totalt 5 på varandra följande värden i serien (det aktuella periodvärdet utöver de två omedelbart föregående värdena och två värden som omedelbart följer nuvärdet). Ett 5-årigt bakåtgående glidande medelvärde beräknas genom att medelvärdet av det aktuella perioden värderas med värdena från de 4 omedelbart föregående perioderna. Följande syntax illustrerar hur man använder TRANSFORM (MOVAVE n) - specifikationen för att beräkna ett 5-centrerat glidande medelvärde med användning av Släpp 6.11 eller tidigare: För att beräkna ett n-period bakåtgående glidmedel med användning av Släpp 6.11 eller tidigare, använd TRANSFORM (MOVAVE n LAG k) specifikation, där k (n-1) 2 om n är udda eller där k (n-2) 2 om n är jämn. Följande syntax illustrerar till exempel hur man beräknar ett 5-årigt bakåtgående glidande medel med användning av Release 6.11 eller tidigare: Följande syntax illustrerar hur man använder TRANSFORM (CMOVAVE n) - specifikationen för att beräkna ett 5-årigt centrerat glidande medelvärde med användning av Release 6.12 eller senare: Följande liknande syntax illustrerar hur man använder TRANSFORM (MOVAVE n) - specifikationen för att beräkna ett 5-årigt bakåtriktat medelvärde med användning av Release 6.12 eller senare: Mer information finns i Transformation Operations i EXPAND-kapitlet i SASETS Användarhandbok. Om du inte har tillgång till SASETS kan du beräkna ett glidande medelvärde i DATA-steget som illustreras i detta provprogram. Operativsystem och släppinformation Provkoden på fliken Fullständig kod illustrerar hur man beräknar det rörliga genomsnittet av en variabel genom en hel datamängd, över de sista N-observationerna i en dataset eller över de sista N-observationerna inom en BY-grupp. Dessa samplingsfiler och kodexempel tillhandahålls av SAS Institute Inc., vilket är utan garanti av något slag, varken uttryckligt eller underförstått, inklusive men inte begränsat till de underförstådda garantierna för säljbarhet och lämplighet för ett visst ändamål. Mottagarna bekräftar och godkänner att SAS Institute inte är ansvarigt för eventuella skador som uppstår på grund av deras användning av detta material. Dessutom kommer SAS Institute att inte ge något stöd för materialet i häri. Dessa samplingsfiler och kodexempel tillhandahålls av SAS Institute Inc., vilket är utan garanti av något slag, varken uttryckligt eller underförstått, inklusive men inte begränsat till de underförstådda garantierna för säljbarhet och lämplighet för ett visst ändamål. Mottagarna bekräftar och godkänner att SAS Institute inte är ansvarigt för eventuella skador som uppstår på grund av deras användning av detta material. Dessutom kommer SAS Institute att inte ge något stöd för materialet i häri. Beräkna det rörliga genomsnittet av en variabel genom en hel dataset, över de sista N-observationerna i en dataset eller över de sista N-observationerna inom en BY-grouppute är ett glidande medelvärde i SAS A-frågan på SAS diskussionsforum hur man beräknar ett glidande medelvärde i SAS. Denna artikel visar hur du använder PROC EXPAND och innehåller länkar till artiklar som använder DATA-steget eller makron för att beräkna glidande medelvärden i SAS. I ett tidigare inlägg förklarade jag hur man definierade ett glidande medelvärde och gav ett exempel som visas här. Diagrammet är en scatterplot av den månatliga slutkursen för IBM-aktier över en 20-årsperiod. De tre kurvorna rör glidmedel. MA-kurvan är ett fempunkts (bakåt) glidande medelvärde. WMA-kurvan är ett viktat glidande medelvärde med vikterna 1 till 5. (Vid beräkning av det vägda glidande medlet vid tid t. Värdet yt har vikt 5 har värdet y t-1 vikt 4, värdet y t-2 har vikt 3, och så vidare.) EWMA-kurvan är ett exponentiellt vägt rörligt medelvärde med utjämningsfaktor alfa 0,3. Denna artikel visar hur man använder EXPAND-proceduren i SASETS-programvaran för att beräkna ett enkelt glidande medelvärde, ett vägat glidande medelvärde och ett exponentiellt vägt glidande medelvärde i SAS. För en översikt över PROC EXPAND och dess många möjligheter, rekommenderar jag att du läser korta papper Stupid Human Tricks med PROC EXPAND av David Cassell (2010). Eftersom inte alla SAS-kunder har licens för SASETS-programvara finns det länkar i slutet av den här artikeln som visar hur man beräknar ett enkelt glidande medelvärde i SAS genom att använda DATA-steget. Skapa ett exempel tidsserie Innan du kan beräkna ett glidande medelvärde i SAS behöver du data. Följande samtal till PROC SORT skapar ett exempel på tidsserier med 233 observationer. Det finns inga saknade värden. Uppgifterna sorteras efter tidsvariabeln, T. Variabeln Y innehåller den månatliga slutkursen för IBM-aktien under en 20-årsperiod. Beräkna ett glidande medelvärde i SAS genom att använda PROC EXPAND PROC EXPAND beräknar många typer av glidande medelvärden och annan rullande statistik, såsom rullande standardavvikelser, korrelationer och kumulativa summor av kvadrater. I proceduren identifierar ID-beräkningen tidsvariabeln, T. Data ska sorteras efter ID-variabeln. I CONVERT-satsen anges namnen på ingångs - och utgångsvariablerna. Alternativet TRANSFORMOUT anger metoden och parametrarna som används för att beräkna rullande statistiken. Exemplet använder tre CONVERT-satser: Det första specificerar att MA är en outputvariabel som beräknas som ett (bakåt) glidande medelvärde som använder fem datavärden (k 5). Det andra CONVERT-satsen anger att WMA är en utgående variabel som är ett viktat glidande medelvärde. Vikterna standardiseras automatiskt genom proceduren, så formeln är WMA (t) (5 yt 4 y t-1 3 y t-2 2 y t-3 1 y t-4) 15. Den tredje CONVERT-satsen anger att EWMA är en utgående variabel som är ett exponentiellt vägat glidande medelvärde med parameter 0,3. Lägg märke till METHODNONE-alternativet i PROC EXPAND-satsen. Som standard passar EXPAND-proceduren kubiska spline-kurvor till de icke-avgivna värdena för variabler. METODNONE-alternativen säkerställer att de råa datapunkterna används för att beräkna de glidande medelvärdena, snarare än interpolerade värden. Visualisering av glidande medelvärden En viktig användning av ett glidande medelvärde är att överlappa en kurva på en scatterplot av rådata. Detta gör att du kan visualisera kortsiktiga trender i data. Följande samtal till PROC SGPOT skapar grafen högst upp i den här artikeln: För att hålla denna artikel så enkel som möjligt har jag inte diskuterat hur man hanterar saknade data vid beräkning av glidande medelvärden. Se dokumentationen för PROC EXPAND för olika problem relaterade till saknade data. I synnerhet kan du använda METHOD-alternativet för att ange hur man interpolerar saknade värden. Du kan också använda omvandlingsalternativ för att styra hur glidande medelvärden definieras för de första datapunkterna. Skapa ett glidande medelvärde i SAS genom att använda DATA-steget Om du inte har SASETS-programvara, visar följande referenser hur du använder SAS DATA-steget för att beräkna enkla glidande medelvärden genom att använda LAG-funktionen. SAS Knowledge Base tillhandahåller artikeln Beräkna det rörliga genomsnittet av en variabel. Premal Vora (2008) jämför DATA-steget till PROC EXPAND-koden i papperet Easy Rolling Statistics med PROC EXPAND. Ron Cody innehåller ett SAS-makro i flera av hans böcker. Till exempel, Codys Collection of Popular SAS Programmeringsuppgifter och hur man hanterar dem ger ett makro som heter movingAve. Du kan ladda ner makroet som en del av exempelkoden och data för boken. DATA-steget, som är utformat för att hantera en observation i taget, är inte det bästa verktyget för tidsserieberäkningar, vilket naturligtvis kräver flera observationer (lags och leads). I ett framtida blogginlägg kommer jag att visa hur man skriver SASIML-funktioner som beräknar enkla, viktade och exponentiellt viktade glidande medelvärden. Matrisspråket i PROC IML är lättare att arbeta med för beräkningar som kräver åtkomst av flera tidpunkter. Om författare Rick Wicklin, doktor, är en framstående forskare i beräkningsstatistik hos SAS och är en huvudutvecklare av PROC IML och SASIML Studio. Hans kompetensområden innefattar beräkningsstatistik, simulering, statistisk grafik och moderna metoder i statistisk dataanalys. Rick är författare till böckerna Statistisk Programmering med SASIML Software and Simulating Data med SAS. 7 Kommentarer Du kan också skapa rullande medelvärden genom att kombinera PROC SUMMARY med en MLFormat och även med hjälp av arrayer i DATA-steget. Du kan läsa mer om dessa tekniker i boken Carpenters Guide till innovativa SAS-tekniker. Jag har problem med att flytta medelvärden att jag inte kunde räkna ut någon lösning hittills. Jag behöver beräkna det rörliga genomsnittet för de senaste 6 månaderna i 6 månader. Saken är att jag vill inkludera tidigare beräknade glidande medelvärden inklusive den rörliga statistiken. Ive försökte göra det med LAG-funktionen och med PROC EXPAND, men det fungerade inte. X-kolumnen är min ursprungliga information, Y1 är vad jag uppnår (SAS anser M7 till M12 som saknas) och Y2 är vad jag vill MX Y1 Y2 M1 100,0 100,0 100,0 M2 200,0 200,0 200,0 M3 300,0 300,0 300,0 M4 400,0 400,0 400,0 M5 500,0 500,0 500,0 M6 600,0 600,0 600,0 M7 350,0 350,0 M8 400,0 391,7 M9 450,0 423,6 M10 500,0 444,2 M11 550,0 451,6 M12 600,0 443,5 Det är bäst att ställa SAS-programfrågor på SAS Support Community eftersom det har funktioner som gör att ställa frågor och skriva in SAS-kod enklare. Du kan också få råd från många människor, inte bara jag. Hej. Detta är bara en liten variation av en SQL-lösning som publicerades på SAS-gemenskapen (inte alla har tillgång till SASETS och PROC EXPAND). lägg till ett observeringsnummer till den redan sorterade datasatsen dataserieuppsättningsserie xn kör proc sql skapa tabellen flyttar som välj, (välj medelvärde (y) från serie där x mellan ax-4 och ax) som movingavg från serie som avsluta Värdet av MOVINGAVG första fyra observationer använder 1, 2, 3 och 4 värden av Y för att beräkna det glidande medelvärdet och från och med dess alltid den aktuella observationen plus den föregående 4. Dess modifierad från. postat av SAS Yoda, Ksharp
No comments:
Post a Comment