Skip to main content

Beräkna 3 månaders glidande medelvärde in sas


Flyttande medelvärde I det här exemplet lär du dig hur du beräknar glidande medelvärdet för en tidsserie i Excel. Ett glidande medel används för att jämna ut oegentligheter (toppar och dalar) för att enkelt kunna känna igen trender. 1. Låt oss först titta på våra tidsserier. 2. Klicka på Dataanalys på fliken Data. Obs! Kan inte hitta knappen Data Analysis Klicka här för att ladda verktyget Analysis ToolPak. 3. Välj Flytta genomsnitt och klicka på OK. 4. Klicka i rutan Inmatningsområde och välj intervallet B2: M2. 5. Klicka i rutan Intervall och skriv 6. 6. Klicka i rutan Utmatningsområde och välj cell B3. 8. Skriv ett diagram över dessa värden. Förklaring: Eftersom vi ställer intervallet till 6 är det rörliga genomsnittet genomsnittet för de föregående 5 datapunkterna och den aktuella datapunkten. Som ett resultat utjämnas toppar och dalar. Diagrammet visar en ökande trend. Excel kan inte beräkna det rörliga genomsnittet för de första 5 datapunkterna, eftersom det inte finns tillräckligt med tidigare datapunkter. 9. Upprepa steg 2 till 8 för intervall 2 och intervall 4. Slutsats: Ju större intervall desto mer toppar och dalar släpper ut. Ju mindre intervallet desto närmare de rörliga medelvärdena ligger till de faktiska datapunkterna. Jag inkluderade en skärmdump för att klargöra mitt problem: Jag försöker beräkna ett slags glidande medelvärde och flyttande standardavvikelse. Saken är att jag vill beräkna variationskoefficienterna (stdevavg) för det verkliga värdet. Normalt görs detta genom att beräkna stdev och avg för de senaste 5 åren. Men ibland kommer det att finnas observationer i min databas för vilken jag inte har information under de senaste 5 åren (kanske bara 3, 2 etc). Det är därför jag vill ha en kod som kommer att beräkna avg och stdev även om det inte finns någon information för hela 5 år. Också, som du ser i observationerna, har jag ibland information över mer än 5 år, då det är fallet behöver jag ett slags glidande medelvärde som gör det möjligt för mig att beräkna avg och stdev för de senaste 5 åren. Så om ett företag har information i 7 år behöver jag någon typ av kod som beräknar avg och stdev för, säger vi 1997 (1991-1996), 1998 (1992-1997) och 1999 (1993-1998). Jag är inte särskilt bekant med sas-kommandon, det borde (mycket väldigt grovt) se ut som: Eller så har jag ingen aning, jag ska försöka hitta det men det är värt att skicka det om jag inte hittar det själv. SAS nybörjare 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ärdet 5) kan du använda alternativet TRIMLEFT 4 inom TRANSFORMOUT (). besvarade dec 3 13 vid 15:29

Comments