Im 'n SAS beginner en Im nuuskierige as die volgende taak baie meer eenvoudig kan gedoen word, want dit is op die oomblik in my kop. Ek het die volgende in (vereenvoudig) meta data in 'n tabel genaamd userdatemoney: Gebruiker - Datum - Geld met verskeie gebruikers en datums vir elke kalender dag (vir die laaste 4 jaar). Die data word in opdrag van gebruiker ASC en Datum ASC, steekproefdata lyk soos volg: Ek wil nou 'n vyf dae bewegende gemiddelde vir die geld bereken. Ek het begin met die mooi gewilde apprach met die funksie lag () soos volg: as jy sien, die probleem met hierdie metode plaasvind indien daar as die data stap na 'n nuwe gebruiker loop. Aron sou sommige uitgestel waardes van Anna wat natuurlik nie gebeur nie. Nou is my vraag: Ek is redelik seker dat jy kan hanteer die gebruiker skakelaar by te voeg 'n paar ekstra velde soos laggeduser en deur die Herstel van die N, Sum en Gemiddelde veranderlikes as jy so 'n omskakeling sien, maar: Kan dit gebeur in 'n makliker manier Miskien met behulp van die klousule enigsins Dankie vir jou idees en hulp Ek dink die maklikste manier is om PROC gebruik brei: en soos genoem in die Johns kommentaar, dit is belangrik om te onthou oor ontbrekende waardes (en oor begin en eindig waarnemings so goed). Ive bygevoeg SETMISS opsie om die kode, soos jy dit duidelik gemaak dat jy wil ontbrekende waardes zerofy, hulle (verstek MOVAVE gedrag) nie ignoreer nie. En as jy wil eerste 4 Waarnemings sluit vir elke gebruiker (omdat hulle dit nie genoeg vooraf geskiedenis te bereken bewegende gemiddelde 5), kan jy opsie TRIMLEFT 4 gebruik binne TRANSFORMOUT (). beantwoord Desember 3 13 aan 15: 29Die voorbeeld 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 datum deur - groep. Hierdie voorbeeld lêers en kode voorbeelde word verskaf deur SAS Institute Inc. soos sonder waarborge van enige aard, 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 skadevergoeding hoegenaamd voortspruitend uit hul gebruik 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 waarborge van enige aard, 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 skadevergoeding hoegenaamd voortspruitend uit hul gebruik 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. Autoregressive beweeg-gemiddelde fout prosesse (ARMA foute) en ander modelle wat die volgende behels lags van die dwaling terme kan geskat word deur die gebruik van FIT state en gesimuleerde of voorspel deur gebruik te maak van LOS state. ARMA modelle vir die fout proses word dikwels gebruik vir modelle met autocorrelated residue. Die AR makro kan gebruik word om modelle met outoregressiewe fout prosesse spesifiseer. Die MA makro kan gebruik word om modelle spesifiseer met bewegende gemiddelde fout prosesse. Outoregressiewe Foute 'n model met die eerste-orde outoregressiewe foute, AR (1), het die vorm terwyl 'n AR (2) fout proses het die vorm en dies meer vir hoër-orde prosesse. Let daarop dat die e onafhanklik en identies verdeelde en het 'n verwagte waarde van 0. 'n Voorbeeld van 'n model met 'n AR (2) komponent is en dies meer vir hoër-orde prosesse. Byvoorbeeld, kan jy 'n eenvoudige lineêre regressiemodel met MA (2) skryf bewegende gemiddelde foute as waar Ma1 en Ma2 is die bewegende gemiddelde parameters. Let daarop dat RESID. Y outomaties word gedefinieer deur PROC model as die ZLAG funksie moet gebruik word vir MA modelle om die rekursie van die lags afgestomp. Dit verseker dat die vertraagde foute begin by nul in die lag priming fase en nie voort ontbrekende waardes wanneer-lag priming tydperk veranderlikes ontbreek, en dit verseker dat die toekomstige foute is nul eerder as vermis tydens simulasie of vooruitskatting. Vir meer besonderhede oor die lag funksies, sien die artikel Lag logika. Hierdie model geskryf met behulp van die MA makro is soos volg: Algemene vorm vir ARMA Models Die algemene ARMA (p, q) proses het die volgende vorm 'n ARMA (p, q) model kan gespesifiseer word soos volg: waar AR Ek en MA j verteenwoordig die outoregressiewe en bewegende gemiddelde parameters vir die verskillende lags. Jy kan enige name wat jy wil vir hierdie veranderlikes gebruik, en daar is baie soortgelyk maniere wat die spesifikasie kan geskryf word. Vektor ARMA prosesse kan ook beraam met PROC model. Konvergensie Probleme met ARMA Models ARMA modelle kan moeilik om te skat wees: Byvoorbeeld, kan 'n twee-veranderlike AR (1) proses vir die foute van die twee endogene veranderlikes Y1 en Y2 soos volg gespesifiseer word. As die parameter ramings is nie binne die toepaslike omvang, 'n bewegende gemiddelde modelle oorblywende terme groei eksponensieel. Die berekende residue vir latere waarnemings kan baie groot wees of kan oorloop. Dit kan gebeur óf omdat onbehoorlike beginspan waardes is gebruik of omdat die iterasies wegbeweeg van redelike waardes. Sorg moet gedra word in die keuse van beginspan waardes vir ARMA parameters. Begin waardes van 0.001 vir ARMA parameters gewoonlik werk as die model pas die data goed en die probleem is goed gekondisioneer. Let daarop dat 'n MA-model dikwels benader kan word deur 'n hoë-orde AR model, en omgekeerd. Dit kan lei tot 'n hoë collinearity in gemengde ARMA modelle, wat op sy beurt ernstige swak kondisionering in die berekeninge en onstabiliteit van die parameter ramings kan veroorsaak. As jy konvergensie probleme te hê, terwyl die skatte van 'n model met ARMA foute prosesse, probeer om te skat in stappe. In die eerste plek gebruik 'n geskikte verklaring aan net die strukturele parameters met die ARMA parameters gehou na nul (of om vooraf redelike raming indien beskikbaar) te skat. Volgende, gebruik 'n ander FIT verklaring slegs die ARMA parameters beraam, met behulp van die strukturele parameterwaardes van die eerste termyn. Sedert die waardes van die strukturele parameters is waarskynlik naby aan hul finale skattings te wees, kan die ARMA parameterberaming nou bymekaar. Ten slotte, gebruik 'n ander FIT verklaring aan gelyktydige skattings van al die parameters te produseer. Sedert die aanvanklike waardes van die parameters is nou waarskynlik baie naby aan hul finale gesamentlike skattings te wees, moet die skattings vinnig bymekaar as die model geskik is vir die data is. AR beginvoorwaardes Die aanvanklike lags van die fout terme van AR (p) modelle gemodelleer kan word in verskillende maniere. Die outoregressiewe fout begin metodes deur SAS / ETS prosedures is die volgende: voorwaardelike kleinste kwadrate (ARIMA en model prosedures) onvoorwaardelike kleinste kwadrate (AUTOREG, ARIMA, en model prosedures) die maksimum waarskynlikheid (AUTOREG, ARIMA, en model prosedures) Yule-Walker (AUTOREG prosedure net) Hildreth-Lu, wat (enigste model prosedure) die eerste p Waarnemings verwyder Sien Hoofstuk 8, die AUTOREG prosedure, vir 'n verduideliking en bespreking van die meriete van verskeie AR (p) begin metodes. Die CLS, ULS, ML, en HT initializations uitgevoer kan word deur PROC model. Vir AR (1) foute, kan hierdie initializations geproduseer, soos uiteengesit in Tabel 18.2. Hierdie metodes is ekwivalent in groot monsters. Table 18.2 Initializations Uitgevoer deur PROC Model: AR (1) FOUTE Die aanvanklike lags van die fout terme van MA (Q) modelle kan ook geskoei op verskillende maniere. Die volgende bewegende gemiddelde fout start-up paradigmas word ondersteun deur die ARIMA en model prosedures: onvoorwaardelike kleinstekwadrate voorwaardelike kleinstekwadrate die voorwaardelike kleinste kwadrate metode van beraming bewegende gemiddelde fout terme is nie optimaal omdat dit die aanloop probleem ignoreer. Dit verminder die doeltreffendheid van die skat, hoewel hulle onbevooroordeelde bly. Die aanvanklike uitgestel residue, die uitbreiding van voor die aanvang van die data, is veronderstel om 0, hul onvoorwaardelike verwagte waarde. Dit stel 'n verskil tussen hierdie residue en die algemene kleinstekwadrate residue vir die bewegende gemiddelde kovariansie, wat, in teenstelling met die outoregressiewe model, voortduur deur die datastel. Gewoonlik hierdie verskil konvergeer vinnig tot 0, maar vir byna noninvertible bewegende gemiddelde prosesse die konvergensie is baie stadig. Om hierdie probleem te verminder, moet jy baie data het, en die bewegende gemiddelde parameterberaming moet goed binne die omkeerbare reeks. Hierdie probleem reggestel kan word ten koste van die skryf van 'n meer komplekse program. Onvoorwaardelike kleinste kwadrate beramings vir die MA (1) proses kan geproduseer word deur die spesifiseer van die model soos volg: Moving-gemiddelde foute kan moeilik om te skat wees. Jy moet oorweeg om 'n AR (p) benadering tot die bewegende gemiddelde proses. 'N bewegende gemiddelde proses kan gewoonlik goed benader word deur 'n outoregressiewe proses as die data is nie stryk of differenced. Die AR Makro Die SAS makro AR genereer programmering state vir PROC model vir outoregressiemodelle. Die AR makro is deel van SAS / ETS sagteware, en geen spesiale opsies moet ingestel word om die makro gebruik. Die outoregressiewe proses toegepas kan word om die strukturele vergelyking foute of om die endogene reeks hulself. Die AR makro kan gebruik word vir die volgende tipes motor regressie: onbeperkte vector-motor regressie beperk vector-motor regressie Eenveranderlike motor regressie Om die foutterm van 'n vergelyking model as 'n outoregressiewe proses, gebruik die volgende stelling na die vergelyking: Byvoorbeeld, veronderstel dat Y is 'n lineêre funksie van x1, x2, en 'n AR (2) fout. Die oproepe na AR moet kom na al die vergelykings wat die proses van toepassing op: Jy sal hierdie model soos volg skryf. Die voorafgaande makro aanroeping, AR (y, 2), produseer die state getoon in die lys uitset in Figuur 18.58. Figuur 18.58 LYS Opsie Uitset vir 'n AR (2) Model Die pred voorafgegaan veranderlikes is tydelik program veranderlikes gebruik sodat die lags van die residue is die korrekte residue en nie dié geherdefinieer deur hierdie vergelyking. Let daarop dat hierdie is gelykstaande aan die state uitdruklik in die artikel Algemene Form vir ARMA Models geskryf. Jy kan ook die outoregressiewe parameters aan nul beperk by uitgesoekte lags. Byvoorbeeld, as jy outoregressiewe parameters wou by lags 1, 12, en 13, kan jy die volgende stellings gebruik: Hierdie state genereer die uitset in Figuur 18,59. Figuur 18,59 LYS Opsie Uitset vir 'n AR Model met lags op 1, 12, en 13 Die model Prosedure aanbieding van Saamgestel programkode Verklaring Geperste PRED. yab x1 c x2 RESID. y PRED. y - ACTUAL. y ERROR. y pred. y - y OLDPRED. y PRED. y yl1 ZLAG1 (y - PREDy) yl12 ZLAG12 (y - PREDy) yl13 ZLAG13 (y - PREDy) RESID. y PRED. y - ACTUAL. y ERROR. y PRED. y - y Daar is variasies op die voorwaardelike kleinste kwadrate metode, afhangende van of waarnemings op die begin van die reeks word gebruik om op te warm die AR proses. By verstek, die AR voorwaardelike kleinste kwadrate metode gebruik al die waarnemings en aanvaar nulle vir die aanvanklike lags van outoregressiewe terme. Deur die gebruik van die opsie man, kan jy versoek dat AR gebruik die onvoorwaardelike kleinste kwadrate (ULS) of metode maksimum-waarskynlikheid (ML) plaas. Byvoorbeeld, is Besprekings van hierdie metodes wat in die artikel AR beginvoorwaardes. Deur die gebruik van die MCLS N opsie, kan jy versoek dat die eerste N Waarnemings word om skattings van die aanvanklike outoregressiewe lags bereken. In hierdie geval, die ontleding begin met waarneming N 1. Byvoorbeeld: Jy kan die AR makro gebruik om 'n outoregressiewe model toe te pas om die endogene veranderlike, in plaas van om die foutterm, deur gebruik te maak van die opsie TYPEV. Byvoorbeeld, as jy wil die vyf afgelope lags van Y toe te voeg tot die vergelyking in die vorige voorbeeld, jy kan AR gebruik om die parameters te genereer en loop deur die gebruik van die volgende stellings: Die voorafgaande stellings te genereer die uitset in Figuur 18.60. Figuur 18.60 LYS Opsie Uitset vir 'n AR model van Y Hierdie model voorspel Y as 'n lineêre kombinasie van X1, X2, 'n onderskep, en die waardes van Y in die mees onlangse vyf periodes. Onbeperkte vector-motor regressie Om die fout terme van 'n stel vergelykings as 'n vektor outoregressiewe proses te modelleer, gebruik die volgende vorm van die AR makro na die vergelykings: Die processname waarde is 'n naam wat jy verskaf vir AR om te gebruik in die maak van name vir die outoregressiewe grense. Jy kan die AR makro gebruik om verskillende AR prosesse vir verskillende stelle vergelykings model deur gebruik te maak van verskillende proses name vir elke stel. Die naam proses verseker dat die veranderlike name wat uniek is. Gebruik 'n kort processname waarde vir die proses as parameter ramings geskryf moet word om 'n uitset datastel. Die AR makro probeer parameter name minder as of gelyk aan agt karakters bou, maar dit is beperk deur die lengte van processname. wat gebruik word as 'n voorvoegsel vir die AR parameter name. Die variablelist waarde is die lys van endogene veranderlikes vir die vergelykings. Byvoorbeeld, veronderstel dat foute vir vergelykings Y1, Y2, en Y3 gegenereer deur 'n tweede-orde vektor outoregressiewe proses. wat die volgende vir Y1 en soortgelyke kode vir Y2 en Y3 genereer: Slegs die voorwaardelike kleinste kwadrate (MCLS of MCLS n) metode kan gebruik word vir vektor prosesse Jy kan die volgende stellings gebruik. Jy kan ook dieselfde vorm met beperkings wat die koëffisiëntmatriks 0 by uitgesoekte lags gebruik. Byvoorbeeld, die volgende stellings pas 'n derde-orde vektor proses om die vergelyking foute met al die koëffisiënte op lag 2 beperk tot 0 en met die koëffisiënte op lags 1 en 3 onbeperkte: Jy kan die drie reekse Y1Y3 as 'n vektor outoregressiewe proses te modelleer in die veranderlikes in plaas van in die foute deur die gebruik van die opsie TYPEV. As jy wil Y1Y3 model as 'n funksie van die verlede waardes van Y1Y3 en 'n paar eksogene veranderlikes of konstantes, kan jy AR gebruik om die state vir die lag terme te genereer. Skryf 'n vergelyking vir elke veranderlike vir die nonautoregressive deel van die model, en dan bel AR met die opsie TYPEV. Byvoorbeeld, kan die nonautoregressive deel van die model 'n funksie van eksogene veranderlikes wees, of dit kan onderskep parameters wees. As daar geen eksterne komponente om die vector-motor regressie model, insluitende geen afsnitte, dan wys nul tot elk van die veranderlikes. Daar moet 'n opdrag aan elkeen van die veranderlikes voor AR genoem. Hierdie voorbeeld modelle die vektor Y (Y1 Y2 Y3) as 'n lineêre funksie net van sy waarde in die vorige twee periodes en 'n wit geraas fout vektor. Die model het 18 (3 3 3 3) parameters. Sintaksis van die AR Makro Daar is twee gevalle van die sintaksis van die AR makro. Wanneer beperkings op 'n vektor AR proses nie nodig, die sintaksis van die AR makro het die algemene vorm spesifiseer 'n voorvoegsel vir AR om te gebruik in die bou van name van veranderlikes wat nodig is om die AR proses te definieer. As die endolist nie gespesifiseer word nie, die endogene lys standaard te noem. wat moet die naam van die vergelyking waarna die AR fout proses toegepas moet word nie. Die naam mag nie meer as 32 karakters. is aan die orde van die AR proses. spesifiseer die lys van vergelykings waarna die AR proses toegepas moet word. Indien meer as een naam word gegee, is 'n onbeperkte vektor proses geskep met die strukturele residue van al die vergelykings ingesluit as voorspellers in elk van die vergelykings. As nie gespesifiseer, verstek na endolist naam. spesifiseer die lys van sloerings waarteen die AR terme is om by te voeg. Die koëffisiënte van die terme op lags nie gelys is ingestel op 0. Al die genoteerde lags moet minder as of gelyk aan nlag wees. en daar was geen duplikate moet wees. As nie gespesifiseer, die laglist standaard vir alle lags 1 deur nlag. spesifiseer die skatting metode om te implementeer. Geldige waardes van M is CLS (voorwaardelike kleinste kwadrate beramings), ULS (onvoorwaardelike kleinste kwadrate beramings), en ML (maksimum waarskynlikheid ramings). MCLS is die standaard. Slegs MCLS toegelaat wanneer meer as een vergelyking gespesifiseer. Die ULS en ML metodes word nie ondersteun nie vir vektor AR modelle deur AR. bepaal dat die AR proses toegepas moet word om die endogene veranderlikes hulself in plaas van om die strukturele residue van die vergelykings. Beperkte vector-motor regressie Jy kan beheer wat parameters ingesluit in die proses, die beperking van tot 0 diegene parameters wat jy nie in te sluit. In die eerste plek gebruik AR met die opsie eerbiedig die veranderlike lys verklaar en die dimensie van die proses te definieer. Dan gebruik addisionele AR oproepe na terme vir geselekteerde vergelykings met geselekteerde veranderlikes by sekere lags genereer. Byvoorbeeld, die fout vergelykings geproduseer is soos volg: Hierdie model stel dat die foute vir Y1 afhang van die foute van beide Y1 en Y2 (maar nie Y3) by beide lags 1 en 2, en dat die foute vir Y2 en Y3 afhang die vorige foute vir al drie veranderlikes, maar slegs op lag 1. AR Makro Sintaksis vir Beperkte vector AR 'n alternatiewe gebruik van AR toegelaat word om beperkings op 'n vektor AR proses te lê deur AR 'n paar keer 'n beroep op verskillende AR terme spesifiseer en loop vir verskillende vergelykings. Die eerste oproep het die algemene vorm spesifiseer 'n voorvoegsel vir AR om te gebruik in die bou van name van veranderlikes wat nodig is om die vektor AR proses te definieer. spesifiseer die einde van die AR proses. spesifiseer die lys van vergelykings waarna die AR proses toegepas moet word. bepaal dat AR is nie om die AR proses te genereer, maar is om te wag vir verdere inligting wat in later AR oproepe vir die gelyknamige waarde. Die daaropvolgende oproepe het die algemene vorm is dieselfde as in die eerste oproep. spesifiseer die lys van vergelykings waarna die spesifikasies in hierdie AR oproep is wat toegepas moet word. Slegs name wat in die endolist waarde van die eerste oproep vir die naam waarde kan verskyn in die lys van vergelykings in eqlist. spesifiseer die lys van vergelykings wie uitgestel strukturele residue is om ingesluit te word as voorspellers in die vergelykings in eqlist. Slegs name in die endolist van die eerste oproep vir die naam waarde kan verskyn in varlist. As nie gespesifiseer, verstek na varlist endolist. spesifiseer die lys van sloerings waarteen die AR terme is om by te voeg. Die koëffisiënte van die terme op lags nie gelys is ingestel op 0. Al die genoteerde lags moet minder as of gelyk aan die waarde van nlag wees. en daar was geen duplikate moet wees. As nie gespesifiseer, verstek laglist al lags 1 deur nlag. Die MA Makro Die SAS makro MA genereer programmering state vir PROC model vir die verskuiwing-gemiddelde modelle. Die MA makro is deel van SAS / ETS sagteware, en geen spesiale opsies is nodig om die makro gebruik. Die bewegende gemiddelde fout proses toegepas kan word om die strukturele vergelyking foute. Die sintaksis van die MA makro is dieselfde as die AR makro behalwe daar is geen argument plekke. Wanneer jy die MA en AR makros gekombineer, moet die MA makro die AR makro volg. Die volgende SAS / IML state te produseer 'n ARMA (1, (1 3)) fout proses en stoor dit in die datastel MADAT2. Die volgende PROC MODEL state word gebruik om die parameters van hierdie model skat met behulp van maksimum waarskynlikheid fout struktuur: die skat van die parameters wat deur hierdie lopie word in Figuur 18.61. Figuur 18.61 Beramings van 'n ARMA (1, (1 3)) Proses Daar is twee gevalle van die sintaksis vir die MA makro. Wanneer beperkings op 'n vektor MA proses nie nodig, die sintaksis van die MA makro het die algemene vorm spesifiseer 'n voorvoegsel vir MA om te gebruik in die bou van name van veranderlikes wat nodig is om die MA proses te definieer en is die standaard endolist. is aan die orde van die MA-proses. spesifiseer die vergelykings waarna die MA proses toegepas moet word. Indien meer as een naam word gegee, is CLS skatting gebruik vir die vektor proses. spesifiseer die lags waarteen die MA terme is om by te voeg. Al die genoteerde lags moet minder as of gelyk aan nlag wees. en daar was geen duplikate moet wees. As nie gespesifiseer, die laglist standaard vir alle lags 1 deur nlag. spesifiseer die skatting metode om te implementeer. Geldige waardes van M is CLS (voorwaardelike kleinste kwadrate beramings), ULS (onvoorwaardelike kleinste kwadrate beramings), en ML (maksimum waarskynlikheid ramings). MCLS is die standaard. Slegs MCLS toegelaat wanneer meer as een vergelyking wat in die endolist. MA Makro Sintaksis vir Beperkte Vector bewegende gemiddeldes 'n Alternatiewe gebruik van MA toegelaat word om beperkings op 'n vektor MA proses te lê deur 'n paar keer 'n beroep MA verskillende MA terme spesifiseer en loop vir verskillende vergelykings. Die eerste oproep het die algemene vorm spesifiseer 'n voorvoegsel vir MA om te gebruik in die bou van name van veranderlikes wat nodig is om die vektor MA proses te definieer. spesifiseer die einde van die MA-proses. spesifiseer die lys van vergelykings waarna die MA proses toegepas moet word. bepaal dat MA is nie tot die MA proses te genereer, maar is om te wag vir verdere inligting wat in later MA oproepe vir die gelyknamige waarde. Die daaropvolgende oproepe het die algemene vorm is dieselfde as in die eerste oproep. spesifiseer die lys van vergelykings waarna die spesifikasies in hierdie MA oproep is wat toegepas moet word. spesifiseer die lys van vergelykings wie uitgestel strukturele residue is om ingesluit te word as voorspellers in die vergelykings in eqlist. spesifiseer die lys van sloerings waarteen die MA terme is om added. Averages / Eenvoudige bewegende gemiddelde Gemiddeldes wees / Eenvoudige bewegende gemiddelde U word aangemoedig om hierdie taak te los volgens die taakbeskrywing, die gebruik van enige taal wat jy kan weet. Berekening van die eenvoudige bewegende gemiddelde van 'n reeks van getalle. Skep 'n Stateful funksie / klas / instansie wat 'n tydperk neem en gee 'n roetine dat 'n aantal neem as argument en gee 'n eenvoudige bewegende gemiddelde van sy argumente tot dusver. 'N Eenvoudige bewegende gemiddelde is 'n metode vir die berekening van 'n gemiddelde van 'n stroom van getalle met slegs gemiddeld die afgelope 160 P 160 nommers van die stroom, 160 waar 160 P 160 is bekend as die tydperk. Dit kan toegepas word deur die roeping van 'n parafering roetine met 160 P 160 as argument, 160 I (P), 160 wat dan 'n roetine dat wanneer geroep met individuele, opeenvolgende lede van 'n stroom van getalle, bere die gemiddelde van sou terugkeer (up om), die laaste 160 P 160 van hulle, kan noem dit 160 SMA (). Die woord 160 Stateful 160 in die taak beskrywing verwys na die behoefte aan 160 SMA () 160 om sekere inligting tussen oproepe onthou om dit: 160 Die tydperk, 160 P 160 N bestel houer van ten minste die laaste 160 P 160 nommers uit elk van sy individuele oproepe. Stateful 160 beteken ook dat opeenvolgende oproepe na 160 I (), 160 die initializer, 160 moet afsonderlike roetines wat doen 160 nie 160 aandele gered staat sodat hulle kan gebruik word op twee onafhanklike strome van data terugkeer. Pseudo-kode vir die implementering van 160 SMA 160 is: Hierdie weergawe maak gebruik van 'n aanhoudende tou om die mees onlangse p waardes hou. Elke funksie teruggekeer van init-bewegende-gemiddelde het sy toestand in 'n atoom met 'n tou waarde. Dit implementering gebruik 'n omsendbrief lys om die getalle binne die venster op te slaan aan die begin van elke iterasie wyser verwys na die lys sel wat hou die waarde net beweeg by die venster uit en vervang moet word met die net toegevoegde waarde. Met behulp van 'n afsluiting wysig Tans hierdie SMA cant nogc wees omdat dit 'n sluiting op die wal ken. Sommige ontsnapping analise kan die hoop toekenning te verwyder. Met behulp van 'n struct wysig Hierdie weergawe vermy die hoop toekenning van die sluiting behoud van die data in die stapel raamwerk van die hooffunksie. Dieselfde uitset: Om te verhoed dat die drywende punt benaderings hou opstapel en die groei, kan die kode 'n periodieke som uit te voer op die hele ronde tou skikking. Dit implementering produseer twee (funksie) voorwerpe deel staat. Dit is idiomatiese in E te skei insette van uitset (lees van skryf), eerder as om dit te kombineer in een voorwerp. Die struktuur is dieselfde as die implementering van Standard DeviationE. Die onderstaande elikser program genereer 'n anonieme funksie met 'n ingeboude tydperk p, wat gebruik word as die tydperk van die eenvoudige bewegende gemiddelde. Die aanloop funksie lees numeriese insette en gee dit aan die nuutgeskepte anonieme funksie, en dan inspekteer die resultaat te STDOUT. Die uitset word hieronder getoon, met die gemiddelde, gevolg deur die gegroepeer insette, wat die basis vorm van elke bewegende gemiddelde. Erlang het sluitings, maar onveranderlike veranderlikes. 'N Oplossing is dan om prosesse en 'n eenvoudige boodskap verby gebaseer API te gebruik. Matrix tale roetines om die sweef avarages vir 'n gegewe volgorde van items bereken. Dit is minder doeltreffend te loop as in die volgende opdragte. Voortdurend gevra vir 'n inset ek. wat by die einde van 'n lys T1. T1 kan gevind word deur te druk 2ND / 1, en gemiddelde kan gevind word in Lys / OPS druk op die program te beëindig. Funksie wat 'n lys met die gemiddeld data van die verskaf argument program wat 'n eenvoudige waarde terug by elke aanroeping terug: lys is die lys word gemiddeld: p is die tydperk: 5 opbrengste die gemiddeld lys: Voorbeeld 2: Die gebruik van die program movinav2 (i , 5) - Inisialiseer bewegende gemiddelde berekening, en definieer tydperk van 5 movinav2 (3, x): x - nuwe data in die lys (waarde 3), en gevolg sal word gestoor op veranderlike x, en vertoon movinav2 (4 x) : x - nuwe data (waarde 4), en die nuwe gevolg sal gestoor word op veranderlike x, en vertoon (43) / 2. Beskrywing van die funksie movinavg: veranderlike r - is die gevolg (die gemiddeld lys) wat veranderlike sal teruggestuur word ek - is die indeks veranderlike, en dit dui op die einde van die sub-lys die lys word gemiddeld. veranderlike Z - 'n helper veranderlike Die funksie gebruik wisselende ek om vas te stel watter waardes van die lys sal in die volgende gemiddelde berekening in ag geneem word. By elke iterasie, veranderlike i dui op die laaste waarde in die lys wat gebruik sal word in die gemiddelde berekening. So ons moet net om uit te vind wat die eerste waarde in die lys sal wees. Gewoonlik goed moet p elemente oorweeg, sodat die eerste element sal die een geïndekseer deur (i-P1) te wees. Maar op die eerste iterasies wat berekening gewoonlik negatief sal wees, sodat die volgende vergelyking negatiewe indekse sal vermy: max (i-p1,1) of, reël die vergelyking, Max (i-P, 0) 1. of, reël die vergelyking, (i - (Max (IP, 0) 1) 1), en dan - maar die nommer van elemente op die eerste iterasies sal ook kleiner wees, sal die korrekte waarde (begin indeks 1 einde indeks) wees , (i-Max (IP, 0)). Veranderlike Z hou die algemene waarde (maksimum (IP), 0) sodat die beginindex sal wees (Z1) en die numberofelements sal wees (iz) die middel (lys, Z1, iz) sal die lys van waarde wat sal gemiddeld som terugkeer ( .) sal hulle vat som (.) / (iz) ri sal hulle gemiddeld en stoor die resultaat in die toepaslike plek in die lys gevolg behulp van 'n sluiting en die skep van 'n functionI is ietwat nuwe by die gebruik van en die skryf van SAS-kode, en Im probeer skep 'n bewegende gemiddelde berekening. Ive gevind voorbeelde en op grond van wat ek lees en probeer, kan nie lyk asof ek kry my data om die gewenste resultate te lewer. Hier is 'n voorbeeld van my data. Jaar Maand Verkope Running Sum 2011 Jan 100 100 2011 Februarie 250 350 2011 Maart 200 550 2012 Jan 175 175 2012 Februarie 300 475 2012 Maart 225 700 2013 Jan 150 150 2013 Februarie 275 425 2013 Maart 250 675 Ek het jaar, maand, verkope, en 'n lopende totaal van die maandelikse verkope vir elke jaar. Ek wil graag in staat wees om die Running Som van verkope vergelyk deur die huidige maand en dit vergelyk met die gemiddelde van die afgelope jaar deur dieselfde maand. Ive het probeer met behulp van PROC uit te brei, en wat blyk te werk nie, maar net vir my dataset het Jaar en verkope. Dankie vir jou hulp. Dit word opreg waardeer. 2011 Jan 100 100. 2011 Februarie 250 350. 2011 Maart 200 550. 2012 Jan 175 175 100 2012 Februarie 300 475 350 2012 Maart 225 700 550 2013 Jan 150 150 138 ((175100) / 2) 2013 Februarie 275 425 413 ((475350) / 2) 2013 Maart 250 675 625 ((700550) / 2 ) die Gemiddelde kolom word bereken dat die Running Sum deur elke maand en verdeel dit syfer deur die aantal vorige tydperke. Sien die berekeninge in hakies. Im eintlik probeer om 'n vier jaar gemiddeld te bereken, maar ek weet ek het nie genoeg data sluit in my voorbeeld om die volle vier jaar te bereken. Ek kan PROC gebruik uit te brei na 'n bewegende gemiddelde te bereken, maar ek kry net die kode om te werk toe ek die Jaar en verkope (teen kumulatiewe totaal) kolomme in my dataset. Verkope was vir die volle jaar, nie uitgebreek per maand. Vir 2011, verkope was 550. Vir 2012, verkope was 700. Dus, hoe kan ek bereken die bewegende gemiddelde met meer as twee kolomme op my tafel Ek hoop dat hierdie verduideliking help beantwoord jou vrae. Weereens dankie. 'N Oplossing (onder andere) die gebruik van gewone DATA STAP. Ek het ook jare 2014 en 2015 om te sien of ek die vraag verstaan. data thave insette jaar maand verkope kaarte 2011 Jan 100 2011 Februarie 250 2011 Maart 200 2012 Jan 175 2012 Februarie 300 2012 Maart 225 2013 Jan 150 2013 Februarie 275 2013 Maart 250 2014 Jan 125 2014 Februarie 200 2014 Maart 175 2015 Jan 105 2015 Februarie 210 2015 Maart 275 data twant (keepyear maand verkoop Rsum Ravg) stel thave lengte Rsum Ravg 8. behou Rsum Ravg Ssum Si Kraai verskeidenheid zMth (3) jaar as first. year dan Crow0 Si1 Rsum0 eindig Crow1 RsumSales as (Si GT 1) dan Ravg ronde (zMth (Kraai) / (Si-1), 0,01) anders Ravg. zMth (Kraai) Rsum processed druk datatwant run 1 2011 Jan 100 100. 2 2011 Februarie 250 350. 3 2011 Maart 200 550. 4 2012 Jan 175 175 100,00 5 2012 Februarie 300 475 350,00 6 2012 Maart 225 700 550,00 7 2013 Jan 150 150 137,50 8 2013 Februarie 275 425 412,50 9 2013 Maart 250 675 625,00 10 2014 Jan 125 125 141,67 (100175150) / 3 11 2014 Februarie 200 325 416,67 (350475425) / 3 12 2014 Maart 175 500 641,67 (550700675) / 3 13 2015 Jan 105 105 137,50 (100.175.150.125) / 4 14 2015 Februarie 210 315 393,75 (350475425325) / 4 15 2015 Maart 275 590 606,25 (550700675500) / 4
Comments
Post a Comment