Monday 23 October 2017

Beregning En Moving Average I Sas


Jeg inkluderte et skjermbilde for å avklare problemet mitt: Jeg prøver å beregne en slags bevegelige gjennomsnitt og flytte standardavvik. Saken er at jeg vil beregne variasjonskoeffisientene (stdevavg) for den faktiske verdien. Vanligvis gjøres dette ved å beregne stdev og avg for de siste 5 årene. Men noen ganger vil det være observasjoner i databasen min, som jeg ikke har informasjon om de siste 5 årene (kanskje bare 3, 2 osv.). Det er derfor jeg vil ha en kode som vil beregne avg og stdev selv om det ikke er noen informasjon for hele 5 år. Også, som du ser i observasjonene, har jeg noen ganger informasjon over mer enn 5 år, da dette er tilfelle, jeg trenger en slags glidende gjennomsnitt som gjør at jeg kan beregne avg og stdev for de siste 5 årene. Så hvis et selskap har informasjon i 7 år trenger jeg en slags kode som vil beregne avg og stdev for, kan vi si 1997 (1991-1996), 1998 (1992-1997) og 1999 (1993-1998). Jeg er ikke veldig kjent med sas-kommandoer, det burde se (veldig veldig grovt) som: Eller noe som dette, jeg har ingen anelse, jeg skal prøve å finne ut det, men det er verdt å legge det ut hvis jeg ikke finner det selv. Jeg er en SAS nybegynner og jeg er nysgjerrig på om følgende oppgave kan gjøres mye enklere som det er i mitt hode. Jeg har følgende (forenklede) metadata i en tabell som heter userdatemoney: Bruker - Dato - Penger med ulike brukere og datoer for hver kalenderdag (for de siste 4 årene). Dataene er bestilt av User ASC og Date ASC, eksempler data ser slik ut: Jeg vil nå beregne et fem dagers glidende gjennomsnitt for pengene. Jeg startet med den ganske populære apprachen med lag () - funksjonen som denne: Som du ser, oppstår problemet med denne metoden hvis det er datatrinnet som går inn i en ny bruker. Aron ville få noen forsinkede verdier fra Anna, som selvfølgelig ikke skulle skje. Nå spørsmålet mitt: Jeg er ganske sikker på at du kan håndtere brukerbryteren ved å legge til noen ekstra felt som laggeduser og ved å tilbakestille N, Sum og Mean variables hvis du merker en slik bryter, men: Kan dette gjøres på en enklere måte Kanskje du bruker AV Klausul på noen måte Takk for dine ideer og hjelp Jeg tror at den enkleste måten er å bruke PROC EXPAND: Og som nevnt i Johns kommentar, er det viktig å huske om manglende verdier (og om å begynne og avslutte observasjoner også). Ive la til SETMISS-alternativet til koden, da du gjorde det klart at du vil nullstille verdier, ikke ignorere dem (standard MOVAVE-oppførsel). Og hvis du vil utelukke første 4 observasjoner for hver bruker (siden de ikke har nok forhistorie til å beregne glidende gjennomsnitt 5), kan du bruke alternativet TRIMLEFT 4 i TRANSFORMOUT (). besvart des 3 13 kl 15: 29Moving Average Dette eksemplet lærer deg hvordan du beregner det bevegelige gjennomsnittet av en tidsserie i Excel. Et glidende gjennomsnitt brukes til å utjevne uregelmessigheter (topper og daler) for enkelt å gjenkjenne trender. 1. Først, ta en titt på vår tidsserie. 2. På Data-fanen klikker du Dataanalyse. Merk: kan ikke finne dataanalyseknappen Klikk her for å laste inn add-in for Analysis ToolPak. 3. Velg Flytt gjennomsnitt og klikk OK. 4. Klikk i feltet Inngangsområde og velg området B2: M2. 5. Klikk i intervallboksen og skriv inn 6. 6. Klikk i feltet Utmatingsområde og velg celle B3. 8. Skriv en graf av disse verdiene. Forklaring: fordi vi angir intervallet til 6, er glidende gjennomsnitt gjennomsnittet for de forrige 5 datapunktene og det nåværende datapunktet. Som et resultat blir tinder og daler utjevnet. Grafen viser en økende trend. Excel kan ikke beregne det bevegelige gjennomsnittet for de første 5 datapunktene fordi det ikke er nok tidligere datapunkter. 9. Gjenta trinn 2 til 8 for intervall 2 og intervall 4. Konklusjon: Jo større intervallet jo flere tinder og daler utjevnes. Jo mindre intervallet, desto nærmere beveger gjennomsnittet seg til de faktiske datapunktene.

No comments:

Post a Comment