Flytte Gjennomsnittet Sas By Proc Utvide


Jeg er SAS nybegynner og jeg er nysgjerrig på om følgende oppgave kan gjøres mye enklere som den er i mitt hode. Jeg har følgende forenklede metadata i et bord som heter userdatemoney. User - Date - Money. with ulike brukere og datoer for hver kalenderdag de siste 4 årene. Dataene er bestilt av User ASC og Date ASC. Eksempeldata ser ut som dette. Jeg vil nå beregne et fem dagers glidende gjennomsnitt for pengene jeg startet med den ganske populære apprachen med lagfunksjonen Som dette ser du. Problemet med denne metoden oppstår hvis der hvis datastrømmen går inn i en ny bruker, vil Aron få noen forsinkede verdier fra Anna, som selvfølgelig ikke skal skje. Nå er jeg ganske sikker på at du kan håndtere brukerbryter 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 bruker BY-klausulen på noen måte Takk for dine ideer og hjelp. Jeg tror den enkleste måten er å bruke PROC EXP AND. And som nevnt i John s kommentar, er det viktig å huske om manglende verdier og om begynnelse og avslutning av observasjoner også. Jeg har lagt til SETMISS-alternativet til koden, da du gjorde det klart at du vil savne verdier, ikke ignorere dem standard MOVAVE oppførsel Og hvis du vil ekskludere de første 4 observasjonene for hver bruker siden de ikke har nok forhistorie til å beregne glidende gjennomsnitt 5, kan du bruke alternativet TRIMLEFT 4 inne TRANSFORMOUT. answered desember 3 13 ved 15 29.Beginning i Slett 6 08 av SAS-systemet, PROC EXPAND i SAS ETS-programvaren kan brukes til å lage en rekke datatransformasjoner. Disse transformasjonene inkluderer leder, lags, vektet og uvevet glidende gjennomsnitt, flytende summer og kumulative summer, for å nevne noen få mange nye transformasjoner ble lagt til i utgivelse 6 12, inkludert separate spesifikasjoner for sentrerte og bakovergående gjennomsnitt. Disse nye transformasjonene gjorde det nødvendig å endre syntaksen for noen av de transformasjoner som ble støttet før Slett 6 12 Eksempler på hvordan du angir syntaksen for sentrert og bakover glidende gjennomsnitt ved hjelp av Slett 6 11 og tidligere og Slett 6 12 og senere er gitt nedenfor. PROC EXPAND kan beregne enten et sentrert glidende gjennomsnitt eller et bakovergående glidende gjennomsnitt A 5-periode sentrert glidende gjennomsnitt beregnes ved å anslå totalt 5 sammenhengende verdier i serien den nåværende periodeværdigheten i tillegg til de to umiddelbart foregående verdier og to verdier umiddelbart etter gjeldende verdi A 5-periode bakover glidende gjennomsnitt beregnes ved å gjennomsnittlig gjeldende periode verdier med verdiene fra de fire umiddelbart foregående periodene. Følgende syntaks illustrerer hvordan du bruker TRANSFORM MOVAVE n-spesifikasjonen for å beregne et 5-årig sentrert glidende gjennomsnitt ved å bruke Slett 6 11 eller tidligere. For å beregne et n-periode bakover glidende gjennomsnitt ved hjelp av utgave 6 11 eller tidligere, bruk TRANSFORM MOVAVE n LAG k spesifikasjonen, hvor k n-1 2 hvis n er merkelig eller hvor k n-2 2 hvis n er jevn. For eksempel, fol synkende synkronisering illustrerer 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 for å 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 å bruke Slett 6 12 eller nyere. For mer informasjon, se Transformasjonsoperasjoner i EXPAND-kapitlet i SAS ETS User's Guide. Hvis du ikke gjør det har tilgang til SAS ETS, kan du beregne et bevegelige gjennomsnitt i DATA-trinnet som illustrert i dette utvalgsprogrammet. Operativsystem og Release Informationpute et glidende gjennomsnitt i SAS. Et vanlig spørsmål på SAS diskusjonsfora er hvordan å beregne et glidende gjennomsnitt i SAS Denne artikkelen viser hvordan du bruker PROC EXPAND og inneholder lenker til artikler som bruker DATA-trinnet eller makroene til å beregne bevegelige gjennomsnitt i SAS. I et tidligere innlegg forklarte jeg hvordan man definerte en movin g gjennomsnittlig og ga et eksempel som vises her. Grafikken er et spredningsdiagram av den månedlige sluttkursen for IBM-aksjen over en 20-års periode. De tre kurvene er bevegelige gjennomsnitt. MA-kurven er et fempunkts slående glidende gjennomsnitt. WMA kurve er et vektet glidende gjennomsnitt med vekt 1 til 5 Ved beregning av det veide glidende gjennomsnittet på tidspunktet t har verdien ytet 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 0 3. Denne artikkelen viser hvordan du bruker EXPAND-prosedyren i SAS ETS-programvaren til å beregne et enkelt glidende gjennomsnitt, et veid glidende gjennomsnitt og et eksponentielt vektet glidende gjennomsnitt i SAS For en oversikt over PROC EXPAND og dets mange evner, anbefaler jeg at du leser kortfattet Stupid Human Tricks med PROC EXPAND av David Cassell 2010. Fordi ikke alle SAS-kunder har lisens for SAS ETS-programvare, er det lenker i slutten av denne artikkelen som s hvordan å beregne et enkelt glidende gjennomsnitt i SAS ved å bruke DATA-trinnet. Opprett et eksempel på tidsserier. Før du kan beregne et glidende gjennomsnitt i SAS, trenger du data. Det følgende anropet til PROC SORT lager et eksempel tidsserier med 233 observasjoner der er ingen manglende verdier Dataene er sortert etter tidsvariablen, T Variablen Y inneholder den månedlige sluttkursen for IBM-aksjen i løpet av en 20-årig periodepute, et flytende gjennomsnitt i SAS ved hjelp av PROC EXPAND. PROC EXPAND beregner mange typer bevegelige gjennomsnitt og andre rullende statistikker, 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å inngangen og Utgangsvariabler TRANSFORMOUT-alternativet angir metoden og parametrene som brukes til å beregne rullende statistikk. Eksemplet bruker tre CONVERT-setninger. Den første angir at MA er en utgang variabel som beregnes som et bakovergående glidende gjennomsnitt som bruker fem dataværdier k 5. Den andre CONVERT-setningen angir at WMA er en utgangsvariabel som er et vektet glidende gjennomsnitt. Vektene standardiseres automatisk ved fremgangsmåten, slik at 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. Noter METODEN NONE alternativ på PROC EXPAND-setningen Som standard passer EXPAND-prosedyren til kubiske spline-kurver til de ikke-avgjørende verdiene av variablene. METODE NONE-alternativene sikrer at de rå datapunktene brukes til å beregne de bevegelige gjennomsnittene, i stedet for interpolerte verdier. viktig bruk av et bevegelige gjennomsnitt er å overlappe en kurve på en scatterplot av rådataene. Dette gjør at du kan visualisere korttidsutviklinger i dataene Følgende ring til PROC SGPOT lager grafen øverst i denne artikkelen. Hold denne artikkelen så enkel som mulig. Jeg har ikke diskutert hvordan du håndterer manglende data når du 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 SAS ETS-programvare, viser følgende referanser hvordan du bruker SAS DATA-trinn for å beregne enkle bevegelige gjennomsnitt ved å bruke LAG-funksjonen. SAS Knowledge Base gir artikkelen Beregn det bevegelige gjennomsnittet av en variabel. Premiær 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 Cody s samling av populære SAS-programmeringsoppgaver og hvordan de skal håndtere dem en makro som heter movingAve Du kan ned Last inn 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 beregninger, som naturlig krever flere observasjoner lags og ledninger. I en fremtidig blogginnlegg vil jeg vise hvordan du skriver SAS IML-funksjoner som beregner enkle, veide og eksponentielt vektede glidende gjennomsnitt. Matrisens språk i PROC IML er lettere å jobbe med for beregninger som krever tilgang til flere tidspunkter. Om forfatteren. Rick Wicklin, PhD, er en fremtredende forsker i beregningsstatistikk hos SAS og er en hovedutvikler av PROC IML og SAS IML Studio. Hans kompetanseområder inkluderer beregningsstatistikk, simulering, statistisk grafikk og moderne metoder i statistisk dataanalyse. Rick er forfatter av bøkene Statistical Programmering med SAS IML-programvare og simuleringsdata med SAS. Du kan også lage rullende gjennomsnitt ved å kombinere PROC SUMMARY med en MLFormat og også med h elp av arrayer i DATA-trinnet Du kan lese mer om disse teknikkene i boken Carpenter s Guide til Innovative SAS Techniques. Jeg har et problem med bevegelige gjennomsnitt som jeg ikke kunne finne ut noen løsning hittil, jeg må beregne det bevegelige gjennomsnittet av 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 jeg har prøvd å gjøre med LAG-funksjonen og med PROC EXPAND, men det virket 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 stiller spørsmål og legge inn SAS-kode enklere Du kan al så få råd fra mange mennesker, ikke bare meg. Dette er bare en liten variasjon av en SQL-løsning som ble lagt ut på SAS-fellesskapet. Ikke alle har tilgang til SAS ETS og PROC EXPAND. legg til et observasjonsnummer til den allerede sorterte datasettet dataserie sett-serien xn run. proc sql lage tabellen flytting som velg, velg mean y fra serie hvor x mellom en x-4 og øks som flytting fra serier som en avslutning. 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. Det er endret from. posted av SAS Yoda, Ksharp.

Comments