Sunday, 10 September 2017

Hoe Om Te Bereken Bewegende Gemiddelde In Sas


Ek het 'n kiekie te help verduidelik my probleem: Im probeer om 'n soort van bewegende gemiddelde en beweeg standaardafwyking te bereken. Die ding is ek wil die koëffisiënte van variasie (STDEV / avg) te bereken vir die werklike waarde. Gewoonlik word dit gedoen deur die berekening van die STDEV en avg vir die afgelope 5 jaar. Maar soms sal daar waarnemings in my databasis waarvoor ek nie die inligting van die afgelope 5 jaar (miskien net 3, 2, ens) het. Dis hoekom ek wil 'n kode wat die avg sal bereken en STDEV selfs al is daar geen inligting vir die hele 5 jaar. Ook, as jy sien in die waarnemings, soms Ek het inligting oor meer as 5 jaar, wanneer dit die geval is wat ek nodig het 'n soort van bewegende gemiddelde wat toelaat dat my om die avg en STDEV bereken vir die afgelope 5 jaar. So as 'n maatskappy het inligting vir 7 jaar wat ek nodig het 'n soort van kode wat die avg en STDEV vir sal bereken, kan sê, 1997 (deur 1991-1996), 1998 (deur 1992-1997) en 1999 (1993-1998). Soos im nie baie vertroud is met SAS beveel dit moet lyk (baie baie rofweg) soos: Of so iets, ek het regtig geen idee, Im gonna probeer dit uitwerk, maar die moeite werd om dit te pos as ek vind dit gewoond myself. The monster kode op die blad Full kode illustreer hoe om die bewegende gemiddelde van 'n veranderlike te bereken deur 'n hele datastel, oor die afgelope n waarnemings in 'n datastel, of oor die afgelope n waarnemings binne 'n bY-groep. Hierdie voorbeeld lêers en kode voorbeelde word verskaf deur SAS Institute Inc. soos sonder enige waarborge van enige aard, hetsy uitdruklik of geïmpliseer, insluitend maar nie beperk tot die geïmpliseerde waarborge van verhandelbaarheid en geskiktheid vir 'n spesifieke doel. Ontvangers erken en aanvaar dat SAS Institute nie aanspreeklik sal wees vir enige skade hoegenaamd wat voortspruit uit die gebruik daarvan van hierdie materiaal. Daarbenewens sal SAS Institute geen ondersteuning vir die materiaal wat hierin vervat is voorsien. Hierdie voorbeeld lêers en kode voorbeelde word verskaf deur SAS Institute Inc. soos sonder enige waarborge van enige aard, hetsy uitdruklik of geïmpliseer, insluitend maar nie beperk tot die geïmpliseerde waarborge van verhandelbaarheid en geskiktheid vir 'n spesifieke doel. Ontvangers erken en aanvaar dat SAS Institute nie aanspreeklik sal wees vir enige skade hoegenaamd wat voortspruit uit die gebruik daarvan van hierdie materiaal. Daarbenewens sal SAS Institute geen ondersteuning vir die materiaal wat hierin vervat is voorsien. Bereken die bewegende gemiddelde van 'n veranderlike deur 'n hele datastel, oor die afgelope N waarnemings in 'n datastel, of oor die afgelope N waarnemings binne 'n munisipale group. Beginning in Release 6.08 van die SAS System, PROC brei in SAS / ETS sagteware kan gebruik word om 'n verskeidenheid van data transformasies te maak. Hierdie transformasies sluit in: lei, loop, geweeg en ongeweegde bewegende gemiddeldes, beweeg somme, en kumulatiewe somme, 'n paar te noem. Baie nuwe transformasies is bygevoeg in Release 6.12, insluitend aparte spesifikasies vir gesentreer en agtertoe bewegende gemiddeldes. Hierdie nuwe transformasies het dit nodig om die sintaksis vir 'n paar van die steun voor vrystelling 6.12 transformasies verander. Voorbeelde van hoe om die sintaksis vir gesentreer en agtertoe bewegende gemiddeldes met behulp Release 6.11 spesifiseer en vroeër en Release 6.12 en later word hieronder gegee. PROC brei kan bereken óf 'n gesentreerde bewegende gemiddelde of 'n agterlike bewegende gemiddelde. 'N 5-tydperk gesentreer bewegende gemiddelde word bereken deur die gemiddeld van 'n totaal van 5 agtereenvolgende waardes van die reeks (die huidige tydperk waarde bykomend tot die twee onmiddellik voorafgaande waardes en twee waardes wat onmiddellik volg op die huidige waarde). 'N 5-tydperk agteruit bewegende gemiddelde word bereken deur die gemiddeld van die huidige tydperk waarde met die waardes van die 4 onmiddellik voorafgaande tydperke. Die volgende opdrag illustreer hoe om die Transform (MOVAVE n) spesifikasie gebruik om 'n 5-tydperk bereken gesentreer bewegende gemiddelde behulp Release 6.11 of vroeër: Om te bereken 'n N tydperk agteruit bewegende gemiddelde behulp Release 6.11 of vroeër, maak gebruik van die Transform (MOVAVE N LAG k) spesifikasie, waar k (N-1) / 2 as n onewe of waar k (N-2) / 2 As n ewe. Byvoorbeeld, die volgende sintaks illustreer hoe om 'n 5-tydperk agteruit bewegende gemiddelde bereken met behulp van Release 6.11 of vroeër: Die volgende opdrag illustreer hoe om die Transform (CMOVAVE n) spesifikasie gebruik om te bereken 'n 5-tydperk gesentreerde bewegende gemiddelde behulp Release 6.12 of later: die volgende soortgelyke sintaksis illustreer hoe om die Transform (MOVAVE n) spesifikasie gebruik om 'n 5-tydperk agteruit bewegende gemiddelde bereken met behulp van Release 6.12 of later: vir meer inligting, sien Transformasie Bedryf in die brei hoofstuk van die SAS / ETS Gebruikers Handleiding . As jy nie toegang tot SAS / ETS het, kan jy 'n bewegende gemiddelde is in die data stap bereken soos in hierdie voorbeeld program. Bedryfstelsel en Release InformationCompute n bewegende gemiddelde in SAS Hierdie pos vriendelik is bygedra deur die DO Loop - gaan daar om kommentaar te lewer en om die volledige berig te lees. 'N Algemene vraag oor SAS gespreksforums is hoe om 'n bewegende gemiddelde in SAS bereken. Hierdie artikel toon hoe om te gebruik PROC brei en bevat skakels na artikels wat die data wat stap of makros gebruik om te bereken bewegende gemiddeldes in SAS. In 'n vorige post, Ek het verduidelik hoe om 'n bewegende gemiddelde definieer en met dien verstande 'n voorbeeld, wat hier getoon word. Die grafiek is 'n spreidiagram van die maandelikse sluitingsprys vir IBM voorraad oor 'n tydperk van 20 jaar. Die drie kurwes is bewegende gemiddeldes. Die 8220MA8221 kurwe is 'n vyf-punt (sleep) bewegende gemiddelde. Die 8220WMA8221 kurwe is 'n geweegde bewegende gemiddelde met gewigte 1 deur middel van 5. (Wanneer die berekening van die geweegde bewegende gemiddelde op tydstip t. Die waarde yt het gewig 5, die waarde y t-1 het gewig 4, die waarde y t-2 het gewig 3, en so meer.) Die 8220EWMA8221 kurwe is 'n eksponensieel geweeg bewegende gemiddelde met glad faktor alfa 0,3. Hierdie artikel toon hoe om die brei prosedure gebruik in SAS / ETS sagteware om 'n eenvoudige bewegende gemiddelde, 'n geweegde bewegende gemiddelde, en 'n eksponensieel geweeg bewegende gemiddelde in SAS bereken. Vir 'n oorsig van PROC uit te brei en sy talle funksies, Ek beveel die lees van die kort papier 8220Stupid Human truuks met PROC EXPAND8221 deur David Cassell (2010). Want nie elke SAS kliënt het 'n lisensie vir SAS / ETS sagteware, is daar skakels aan die einde van hierdie artikel wat wys hoe om 'n eenvoudige bewegende gemiddelde in SAS bereken deur gebruik te maak van die data wat stap. Skep 'n voorbeeld tydreekse Voordat jy 'n bewegende gemiddelde in SAS kan bereken, jy data nodig. Die volgende oproep om PROC SORT skep 'n voorbeeld tydreekse met 233 waarnemings. Daar is geen ontbrekende waardes. Die data is gesorteer volgens die tyd veranderlike, T. Die veranderlike Y bevat die maandelikse sluitingsprys van IBM voorraad gedurende 'n tydperk van 20 jaar. Bereken 'n bewegende gemiddelde in SAS deur gebruik te maak van PROC brei PROC brei bere baie soorte bewegende gemiddeldes en ander rollende statistieke, soos die rol standaardafwykings, korrelasies en kumulatiewe somme van kwadrate. In die proses, die ID verklaring identifiseer die tyd veranderlike, T. Die data gesorteer moet word deur die ID veranderlike. Die VERWERK verklaring spesifiseer die name van die toevoer en afvoer veranderlikes. Die TRANSFORMOUT opsie spesifiseer die metode en parameters wat gebruik word om die rollende statistieke te bereken. Die voorbeeld gebruik drie VERWERK state: Die eerste bepaal dat MA is 'n uitset veranderlike wat bereken as 'n (agteruit) bewegende gemiddelde wat vyf datawaardes (k 5) gebruik. Die tweede VERWERK verklaring bepaal dat WBG is 'n uitset veranderlike wat 'n geweegde bewegende gemiddelde. Die gewigte word outomaties gestandaardiseer deur die proses, sodat die formule is WBG (t) (5 yt 4 y t-1 3 y t-2 2 y t-3 1 y t-4) / 15. Die derde VERWERK verklaring bepaal dat EWMA is 'n uitset veranderlike wat 'n eksponensieel geweeg bewegende gemiddelde met parameter 0.3. Let op die METHODNONE opsie op die PROC brei verklaring. By verstek, die brei prosedure pas kubieke spline kurwes om die nonmissing waardes van veranderlikes. Die METHODNONE opsies verseker dat die rou data punte word gebruik om die bewegende gemiddeldes, eerder as geïnterpoleer waardes te bereken. Visualisering bewegende gemiddeldes 'n Belangrike gebruik van 'n bewegende gemiddelde is aan 'n kromme te trek op 'n spreidiagram van die rou data. Dit stel jou in staat om tendense kort termyn visualiseer in die data. Die volgende oproep om PROC SGPOT skep die grafiek aan die bokant van hierdie artikel: Om hierdie artikel so eenvoudig as moontlik te hou, het ek nie bespreek hoe om te hanteer ontbreek data wanneer die berekening van bewegende gemiddeldes. Sien die dokumentasie vir PROC brei vir verskeie kwessies wat verband hou met vermiste data. In die besonder, kan jy gebruik maak van die opsie metode om te spesifiseer hoe om ontbrekende waardes interpoleer. Jy kan ook gebruik om transformasie opsies om te bepaal hoe bewegende gemiddeldes word gedefinieer vir die eerste paar data punte. Skep 'n bewegende gemiddelde in SAS deur gebruik te maak van die data wat stap As jy nie SAS / ETS sagteware het, is die volgende verwysings wys hoe om die SAS DATA stap gebruik om eenvoudige bewegende gemiddeldes te bereken deur gebruik te maak van die lag funksie. Die SAS Knowledge Base bied die artikel 8220Compute die bewegende gemiddelde van 'n variable.8221 Premal Vora (2008) vergelyk die gegewens stap om PROC brei kode in die koerant 8220Easy Rolling Statistiek met PROC EXPAND.8221 Ron Cody sluit in 'n SAS makro in verskeie van sy boeke. Byvoorbeeld, Cody8217s Versameling van Gewilde SAS Programmering Take en Hoe om dit te hanteer bied 'n makro vernoem movingAve. Jy kan dit aflaai die makro as deel van die 8220Example Kode en Data8221 vir die boek. Die gegewens stap, wat ontwerp is om 'n waarneming te hanteer op 'n tyd, is nie die beste hulpmiddel vir tydreekse berekeninge, wat natuurlik vereis verskeie waarnemings (lags en lei). In 'n toekomstige blog post, sal ek wys hoe om SAS / IML funksies so eenvoudig bereken, geweeg, en eksponensieel geweeg bewegende gemiddeldes te skryf. Die matriks taal PROC IML is makliker om mee te werk vir berekeninge wat nodig toegang tot verskeie keer punte. VF / TheDoLoopdyIl2AUoC8zA / VF / TheDoLoopdqj6IDK7rITs / VF / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: gIN9vFwOqvQ / VF / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: VsGLiPBpWU / VF / TheDoLoopicbsotKEf1zY: e5B0sfO55lA: F7zBnMyn0Lo / VF / TheDoLoopdl6gmwiTKsz0 / PROC FREQ met yl opsie kan doen die uitbreiding vir jou, selfs as jy moenie lisensie ETS module. Hier is 'n soluation met behulp van slegs SAS / basis. Berekening van bewegende gemiddelde is 'n reguit vorentoe programmeringstaak. processed freq datatest noprint tafel itemquarter / yl outtest2 (hernoem (countquantity) droppercent) laat K2 / lengte van jou venster / stel test2 deur item verskeidenheid x tydelike as first. item dan i1 te doen (dowwe (x) -1) x 0 einde Xmod (ev, AMPK) hoeveelheid seq1 as seqgtampk dan doen as seqgtampk dan nou 'n ander vraag het opkom sommige van my data is doelbewus uitgesluit hele jaar. Ek gebruik die processed brei omskep opsie om die bewegende gemiddeldes te bereken soos vroeër aangedui, maar hoe kry ek die prosedure wat gevolg moet begin oor wanneer jaar is nie opeenvolgende Ek het gedink oor die skep van 'n tellerveranderlike maar ek kan nie 'n doen as stelling in processed uit te brei. Hier is 'n kort voorbeeld van wat ek bedoel. item jaar maand waarde 'n 2000 12 'n 2007 1 Hier is die probleem: item word slegs aangekoop word vir hierdie twee jaar, maar ek hoef bewegende gemiddelde om hier oor te begin. Enige voorstelle sal waardeer word. Siek te hou werk aan besyfering dit uit sowel. Dit mag dalk nie prakties wees as jy baie verskillende reeks data met verskillende jare, maar jy kan 'n waar stelling wat sê om te doen, sluit die uitbreiding van waar jaar 2000 of jaar 2007. Afhangende van wat bewegende gemiddelde metode jy gebruik van, as sy in 'n data stap, dan 'n as wat sê as year2007 en month1 begin dan die bewegende gemiddelde oor, of iets te dien effekte. Maar as verskillende reeks het verskillende jare, sal jy het om te begin hardloop hulle apart ( 'n pyn) of miskien kan jy 'n datastel wat jy saamsmelt in wat voorsiening maak dat inligting (een kolom die item sou dui bou, sal 'n ander die jaar het (s) wat betrokke met 'n bykomende rekord vir elke jaar is). Dan hoef processed brei / Moving Gem op elk, dan voeg die datastelle. Maar weereens, dit sou geen pret wees as jy 'n ander reeks met verskillende jare / wissel van jaar.

No comments:

Post a Comment