Tuesday 28 November 2017

Flytte Gjennomsnittet Med Sas


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 nullsvare 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 3. desember kl. 15: 29Beginning i utgave 6.08 av SAS-systemet, kan PROC EXPAND i SASETS-programvaren brukes til å lage en rekke datatransformasjoner. Disse transformasjonene inkluderer: fører, lags, vektet og uvevet glidende gjennomsnitt, flytende summer og kumulative summer, for å nevne noen få. Mange nye transformasjoner ble lagt i versjon 6.12, inkludert separate spesifikasjoner for sentrert og bakovergående gjennomsnitt. Disse nye transformasjonene gjorde det nødvendig å endre syntaksen for noen av transformasjonene som ble støttet før versjon 6.12. Eksempler på hvordan du angir syntaksen for sentrert og bakovergående gjennomsnitt, ved hjelp av versjon 6.11 og tidligere og versjon 6.12 og senere, er gitt nedenfor. PROC EXPAND kan beregne enten et sentrert glidende gjennomsnitt eller et bakovergående glidende gjennomsnitt. Et 5-års sentrert glidende gjennomsnitt beregnes ved å averdere totalt 5 påfølgende verdier i serien (den nåværende periodevarianten i tillegg til de to umiddelbart foregående verdiene og to verdier umiddelbart etter gjeldende verdi). Et 5-års tilbaketrekende glidende gjennomsnitt beregnes ved å gjennomsnittlig gjeldende periodeverdi med verdiene fra de 4 umiddelbart foregående perioder. Følgende syntaks illustrerer hvordan du bruker TRANSFORM (MOVAVE n) - spesifikasjonen til å beregne et 5-års sentrert glidende gjennomsnitt ved hjelp av Release 6.11 eller tidligere: Bruk TRANSFORM (MOVAVE) for å beregne et n-tilbakegående glidende gjennomsnitt ved hjelp av Release 6.11 eller tidligere. n LAG k) spesifikasjon, hvor k (n-1) 2 hvis n er merkelig eller hvor k (n-2) 2 hvis n er jevn. For eksempel illustrerer følgende syntaks hvordan du beregner et 5-årig bakovergående glidende gjennomsnitt ved hjelp av Slett 6.11 eller tidligere: Følgende syntaks illustrerer hvordan du bruker TRANSFORM (CMOVAVE n) - spesifikasjonen til å beregne et 5-års sentrert glidende gjennomsnitt ved hjelp av Slett 6.12 eller senere: Følgende lignende syntaks illustrerer hvordan du bruker TRANSFORM (MOVAVE n) - spesifikasjonen for å beregne et 5-årig bakovergående glidende gjennomsnitt ved hjelp av versjon 6.12 eller nyere: For mer informasjon, se Transformasjonsoperasjoner i EXPAND-kapitlet i SASETS brukerhåndbok. Hvis du ikke har tilgang til SASETS, kan du beregne et glidende gjennomsnitt i DATA-trinnet som illustrert i dette prøveprogrammet. Operativsystem og utgivelsesinformasjonSeksempelkoden på kategorien Fullkode illustrerer hvordan du beregner det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N observasjonene i et datasett eller over de siste N-observasjonene i en BY-gruppe. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Beregne det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N observasjonene i et datasett eller over de siste N observasjonene i en BY-grouppute, et glidende gjennomsnitt i SAS A vanlig spørsmål på SAS diskusjonsfora, er hvordan man skal beregne et glidende gjennomsnitt i SAS. Denne artikkelen viser hvordan du bruker PROC EXPAND og inneholder koblinger til artikler som bruker DATA-trinnet eller makroene til å beregne bevegelige gjennomsnitt i SAS. I et tidligere innlegg forklarte jeg hvordan man definerte et glidende gjennomsnitt og ga et eksempel som vises her. Grafen er en scatterplot av den månedlige sluttkursen for IBM-aksjen over en 20-års periode. De tre kurvene flytter gjennomsnitt. MA-kurven er et fempunkts (slepende) glidende gjennomsnitt. WMA-kurven er et vektet glidende gjennomsnitt med vekt 1 til 5. (Ved beregning av det vektede glidende gjennomsnittet på tidspunktet t. Verdien yt har vekt 5, verdien y t-1 har vekt 4, verdien y t-2 har vekt 3 og så videre.) EWMA-kurven er et eksponentielt vektet glidende gjennomsnitt med utjevningsfaktor alfa 0,3. Denne artikkelen viser hvordan du bruker EXPAND-prosedyren i SASETS-programvaren til å beregne et enkelt glidende gjennomsnitt, et vektet glidende gjennomsnitt og et eksponentielt vektet glidende gjennomsnitt i SAS. For en oversikt over PROC EXPAND og dens mange evner, anbefaler jeg at du leser det korte papiret Stupid Human Tricks med PROC EXPAND av David Cassell (2010). Fordi ikke alle SAS-kunder har lisens for SASETS-programvare, er det lenker i slutten av denne artikkelen som viser hvordan man beregner et enkelt bevegelige gjennomsnitt i SAS ved å bruke DATA-trinnet. Lag et eksempel tidsserier Før du kan beregne et glidende gjennomsnitt i SAS, trenger du data. Det følgende anropet til PROC SORT lager et eksempel på tidsserier med 233 observasjoner. Det er ingen manglende verdier. Dataene er sortert etter tidsvarianten, T. Variabelen Y inneholder den månedlige sluttkursen for IBM-aksjen i løpet av en 20-års periode. Beregn et glidende gjennomsnitt i SAS ved hjelp av PROC EXPAND PROC EXPAND beregner mange typer bevegelige gjennomsnitt og annen rullende statistikk, for eksempel rullende standardavvik, korrelasjoner og kumulative summer av kvadrater. I prosedyren identifiserer ID-setningen tidsvariabelen, T. Dataene skal sorteres etter ID-variabelen. CONVERT-setningen angir navnene på inngangs - og utgangsvariablene. Alternativet TRANSFORMOUT angir metoden og parametrene som brukes til å beregne rullende statistikk. Eksemplet bruker tre CONVERT-setninger: Den første angir at MA er en utgangsvariabel som beregnes som et (bakover) glidende gjennomsnitt som bruker fem dataverdier (k 5). Den andre CONVERT-setningen angir at WMA er en produksjonsvariabel som er et veid glidende gjennomsnitt. Vektene blir automatisk standardisert ved prosedyren, så formelen er WMA (t) (5 yt 4 y t-1 3 y t-2 2 y t-3 1 y t-4) 15. Den tredje CONVERT-setningen angir at EWMA er en utgangsvariabel som er et eksponentielt vektet glidende gjennomsnitt med parameter 0,3. Legg merke til METHODNONE-alternativet på PROC EXPAND-setningen. Som standard passer EXPAND-prosedyren med kubiske spline-kurver til de ikke-avviste verdiene av variabler. METODNONE-alternativene sikrer at de rå datapunktene brukes til å beregne de bevegelige gjennomsnittene, i stedet for interpolerte verdier. Visualisering av bevegelige gjennomsnitt En viktig bruk av et bevegelig gjennomsnitt er å legge over en kurve på et spredningsdiagram av rådataene. Dette gjør det mulig å visualisere kortsiktige trender i dataene. Følgende ring til PROC SGPOT lager grafen øverst i denne artikkelen: For å holde denne artikkelen så enkel som mulig, har jeg ikke diskutert hvordan jeg skal håndtere manglende data når jeg beregner glidende gjennomsnitt. Se dokumentasjonen for PROC EXPAND for ulike problemer relatert til manglende data. Spesielt kan du bruke METODE-alternativet for å angi hvordan du skal interpolere manglende verdier. Du kan også bruke transformasjonsalternativer for å kontrollere hvordan bevegelige gjennomsnittsverdier er definert for de første datapunktene. Opprett et glidende gjennomsnitt i SAS ved å bruke DATA-trinnet Hvis du ikke har SASETS-programvare, viser følgende referanser hvordan du bruker SAS DATA-trinnet til å beregne enkle bevegelige gjennomsnitt ved å bruke LAG-funksjonen. SAS Knowledge Base gir artikkelen Beregn glidende gjennomsnitt av en variabel. Premal Vora (2008) sammenligner DATA-trinnet til PROC EXPAND-koden i papiret Easy Rolling Statistics med PROC EXPAND. Ron Cody inkluderer en SAS makro i flere av hans bøker. For eksempel gir Codys Collection of Popular SAS-programmeringsoppgaver og hvordan de skal håndteres en makro som heter movingAve. Du kan laste ned makroen som en del av eksempelkoden og dataene for boken. DATA-trinnet, som er designet for å håndtere en observasjon av gangen, er ikke det beste verktøyet for tidsserier, som naturlig krever flere observasjoner (lags og ledninger). I et fremtidig blogginnlegg vil jeg vise hvordan du skriver SASIML-funksjoner som beregner enkle, veide og eksponentielt vektede glidende gjennomsnitt. Matrisespråket i PROC IML er lettere å jobbe med for beregninger som krever tilgang til flere tidspunkter. Om forfatter Rick Wicklin, PhD, er en fremtredende forsker i beregningsstatistikk hos SAS og er en hovedutvikler av PROC IML og SASIML Studio. Hans kompetanseområder omfatter beregningsstatistikk, simulering, statistisk grafikk og moderne metoder i statistisk dataanalyse. Rick er forfatter av bøkene Statistisk Programmering med SASIML Software og Simulating Data med SAS. 7 Kommentarer Du kan også opprette rullende gjennomsnitt ved å kombinere PROC SUMMARY med en MLFormat og også ved hjelp av arrayer i DATA-trinnet. Du kan lese mer om disse teknikkene i boken Carpenters Guide til innovative SAS teknikker. Jeg har et problem med å flytte gjennomsnitt som jeg ikke kunne finne ut noen løsning så langt. Jeg må beregne det bevegelige gjennomsnittet for de foregående 6 månedene i 6 måneder. Saken er at jeg vil inkludere de tidligere beregnede glidende gjennomsnittene, inkludert den bevegelige statistikken. Ive prøvde å gjøre det med LAG-funksjonen og med PROC EXPAND, men det fungerte ikke. X-kolonnen er min opprinnelige informasjon, Y1 er hva jeg oppnår (SAS anser M7 til M12 som mangler) og Y2 er det jeg vil 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 er best å stille SAS-programmeringsspørsmål på SAS Support Community fordi det har funksjoner som gjør å stille spørsmål og legge inn SAS-kode lettere. Du kan også få råd fra mange mennesker, ikke bare meg. Hei. Dette er bare en liten variasjon av en SQL-løsning som ble lagt opp på SAS-fellesskapet (ikke alle har tilgang til SASETS og PROC EXPAND). legg til et observasjonsnummer til den allerede sorterte datasettdataserien sett serien xn kjøre pros sql lage tabell flytting som velg, (velg mean (y) fra serie hvor x mellom øks-4 og øks) som movingavg fra serier som avslutte Verdien av MOVINGAVG første fire observasjoner bruker 1, 2, 3 og 4 verdier av Y for å beregne det bevegelige gjennomsnittet og fra da av er det alltid den nåværende observasjonen pluss den forrige 4. Den endret fra. postet av SAS Yoda, Ksharp

No comments:

Post a Comment