Saturday, 11 November 2017

Sas Proc Ekspandere Moving Average Eksemplet


Begynn i Release 6.08 av SAS-systemet, kan PROC EXPAND i SASETS programvare brukes til å lage en rekke data transformasjoner. 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 utgivelsen 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-årig bakovergående 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 Release InformationIm 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: 29.Driftene som kan brukes i alternativene TRANSFORMIN og TRANSFORMOUT er vist i tabell 14.1. Operasjoner brukes til hver verdi av serien. Hver verdi av serien erstattes av resultatet av operasjonen. I tabell 14.1. eller x representerer verdien av serien i en bestemt tidsperiode t før transformasjonen blir brukt, representerer verdien av resultatserien, og N representerer det totale antall observasjoner. Notasjonen n indikerer at argumentet n er valgfritt, standard er 1. Noteringsvinduet brukes som argumentet for de flyttende statistikkoperatørene, og det indikerer at du kan angi enten et heltall antall perioder n eller en liste med n vekt i parentes. Notasjons sekvensen brukes som argument for sekvensoperatørene, og det indikerer at du må angi en sekvens av tall. Notasjonen s angir lengden på sesongmessigheten, og det er et nødvendig argument. Tabell 14.1 Transformasjonsoperasjoner Moving Time Window Operators Noen operatører beregner statistikk for et sett med verdier i et flyttetidsvindu. Disse kalles flyttetidsvindu operatører. Det er sentrert og bakoverversjoner av disse operatørene. De sentrert flytte tiden vindu operatører er CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS og CMOVVAR. Disse operatørene beregner statistikk over verdiene for observasjoner. Operatørene bakover flyttingstidsvinduet er MOVAVE, MOVCSS, MOVGMEAN, MOVMAX, MOVMED, MOVMIN, MOVPROD, MOVRANGE, MOVRANK, MOVS, MOVSUM, MOVTVALUE, MOVUSS, og MOVVAR. Disse operatørene beregner statistikk over verdiene. Alle operatørene med flyttingstid tar imot et argument som angir antall perioder som skal inkluderes i tidsvinduet. For eksempel beregner følgende setning en fem-periode bakover glidende gjennomsnitt av X. I dette eksemplet er den resulterende transformasjonen Følgende setning beregner et fem-årig sentrert glidende gjennomsnitt på X. I dette eksemplet er den resulterende transformasjonen Hvis vinduet med en sentrert flyttetidsvindu operatør ikke er et oddetall, er en mer forsinket verdi enn blyverdien inkludert i tidsvinduet. For eksempel er resultatet av CMOVAVE 4-operatøren. Du kan beregne en fremoverflyttetidsvindu-operasjon ved å kombinere en bakoverflyttende tidsvinduoperatør med REVERSE-operatøren. For eksempel beregner følgende setning en fem-periode fremover glidende gjennomsnitt av X. I dette eksemplet er den resulterende transformasjonen noen av de flyttbare tidvinduet operatørene du kan angi en liste over vektverdier for å beregne vektet statistikk. Disse er CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVPROD, CMOVSTD, CMOVTVALUE, CMOVUSS, CMOVVAR, MOVAVE, MOVCSS, MOVGMEAN, MOVPROD, MOVSTD, MOVTVALUE, MOVUSS, og MOVVAR. For å angi en veide operatør for flyttet flyttetid, skriv inn vektverdiene i parentes etter operatørens navn. Vinduets bredde er lik antall vekter du angir, ikke angi. For eksempel beregner den følgende setningen et vektet fem-års sentrert glidende gjennomsnitt på X. I dette eksemplet er den resulterende transformasjonen Vektverdiene må være større enn null. Hvis vektene ikke summerer til 1, er de angitte vektene delt med summen deres for å produsere vektene som brukes til å beregne statistikken. Et komplett tidsvindu er ikke tilgjengelig i begynnelsen av serien. For de sentriske operatørene er et komplett vindu også ikke tilgjengelig på slutten av serien. Beregningen av operatørene for flyttingstidsvinduet justeres for disse grenseforholdene som følger. For operatører med bakoverflyttende vinduer blir bredden på tidvinduet forkortet i begynnelsen av serien. For eksempel er resultatene av MOVSUM 3-operatøren manglende verdier Du kan avkorte lengden på resultatseriene ved å bruke TRIM, TRIMLEFT og TRIMRIGHT-operatørene til å angi verdier som mangler i begynnelsen eller slutten av serien. Du kan bruke disse funksjonene til å trimme resultatene av flyttetidsvinduets operatører, slik at resultatserien inneholder bare verdier beregnet fra et fullt brede tidvindu. For eksempel beregner følgende setninger et sentrert fem-års glidende gjennomsnitt på X. og de satt til manglende verdier i enden av serien som er gjennomsnitt på færre enn fem verdier. Normalt ignorerer flyttingstidsvinduet og de kumulative statistiske operatørene manglende verdier og beregner resultatene for de ikke-godkjente verdiene. Når NOMISS-operatøren går foran, gir disse funksjonene et manglende resultat hvis noen verdi i tidsvinduet mangler. NOMISS-operatøren utfører ikke noen beregninger, men tjener til å endre operasjonen til operatøren for flyttetidvinduet som følger den. NOMISS-operatøren har ingen effekt, med mindre det følges av en operatør for flyttetidsvindu. For eksempel beregner følgende setning et fem-års glidende gjennomsnitt av variabelen X, men produserer en manglende verdi når noen av de fem verdiene mangler. Følgende setning beregner den kumulative summen av variabelen X, men produserer en manglende verdi for alle perioder etter den første manglende X-verdien. I likhet med NOMISS-operatøren utfører ikke MISSONLY-operatøren noen beregninger (med mindre etterfulgt av MEAN-alternativet), men det tjener til å endre operasjonen til operatøren for flyttetidsvindu som følger den. Når MISSONLY-operatøren går foran, erstatter disse flyttetidsvinduet operatørene eventuelle manglende verdier med den bevegelige statistikken, og lar uansett verdier uendret. F. eks. Erstatter følgende setning noen manglende verdier av variabelen X med et eksponentielt vektet glidende gjennomsnitt av de siste verdiene til X og forlater ikke-avgitte verdier uendret. De manglende verdiene er interpolert ved å bruke det spesifiserte eksponentielt vektede glidende gjennomsnittet. (Dette kalles også enkel eksponensiell utjevning.) Følgende setning erstatter eventuelle manglende verdier av variabelen X med det totale gjennomsnittet av X. Du kan bruke SETMISS-operatøren til å erstatte manglende verdier med et spesifisert nummer. For eksempel erstatter følgende setning noen manglende verdier av variabelen X med nummer 8.77. Klassiske dekomponeringsoperatører Hvis det er en sesongmessig tidsserie med observasjoner per sesong, bryter klassiske nedbrytningsmetoder ned tidsseriene i fire komponenter: trend, syklus, sesongmessige og uregelmessige komponenter. Trend - og sykluskomponentene blir ofte kombinert for å danne trendcykluskomponenten. Det er to grunnleggende former for klassisk dekomponering: multiplikativ og additiv, som er vist nedenfor. Eksempler på bruk De multiplikative sesongindeksene er 0,9, 1,2. 0,8 og 1,1 for de fire kvartaler. La SEASADJ være en kvartalsvis variabel som har blitt sesongjustert på en multiplikativ måte. For å gjenopprette sesongmessigheten til SEASADJ, bruk følgende transformasjon: Tilsetningsstoffets sesongindekser er 4,4, -1,1, -2,1 og -1,2 for de fire kvartaler. La SEASADJ være en kvartalsvis variabel som er sesongjustert på additiv måte. For å gjenopprette sesongmessigheten til SEASADJ, bruk følgende transformasjon: Angi operatører For de angitte operatørene representerer den første parameteren, verdien som skal erstattes, og den andre parameteren representerer erstatningsverdien. Erstatteren kan bli lokalisert til begynnelsen, midten eller slutten av serien. Eksempler på bruk Anta at en butikk åpnet nylig, og at salgshistorikken er lagret i en database som ikke gjenkjenner manglende verdier. Selv om etterspørselen kan ha eksistert før butikkene åpnes, tilordner denne databasen verdien av null. Modellering av salgshistorikken kan være problematisk fordi salgshistorikken er for det meste null. For å kompensere for denne mangelen, bør nullverdiene verdisette med de gjenværende nullverdiene uendret (representerer ingen etterspørsel). På samme måte antar en butikk er stengt nylig. Etterspørselen kan fortsatt være tilstede, og dermed en registrert verdi på null reflekterer ikke den faktiske etterspørselen nøyaktig. Skaloperatør

No comments:

Post a Comment