Monday, October 10, 2016

Bewegende Gemiddelde Gebruik Van Proc Brei

Im 'n SAS beginner en Im nuuskierig indien die volgende taak baie meer eenvoudig kan gedoen word, want dit is op die oomblik in my kop. Ek het die volgende (tradisioneel) meta data in 'n tabel met die naam userdatemoney: Gebruiker - Datum - Geld met verskeie gebruikers en datums vir elke kalender dag (vir die laaste 4 jaar). Die data word beveel deur 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 deur die toevoeging van 'n paar ekstra velde soos laggeduser en deur die Herstel van die N, Sum en Gemiddelde veranderlikes as jy so 'n skakelaar sien, maar: Kan dit gedoen word in 'n makliker manier Miskien met behulp van die klousule op enige manier Dankie vir jou idees en hulp Ek dink die maklikste manier is om PROC gebruik brei: en soos genoem in 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 pre-geskiedenis te bereken bewegende gemiddelde 5), kan jy opsie TRIMLEFT 4 gebruik binne TRANSFORMOUT (). antwoord 3 Desember 13 aan 15: 29Beginning 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 InformationThe bedrywighede wat gebruik kan word in die TRANSFORMIN en TRANSFORMOUT opsies word in Tabel 14.1. Bedrywighede word toegepas op elke waarde van die reeks. Elke waarde van die reeks word vervang deur die uitslag van die operasie. In Tabel 14.1. of x die waarde van die reeks op 'n bepaalde tydperk t voor die transformasie toegepas word, verteenwoordig die waarde van die resultaat-reeks, en N verteenwoordig die totale aantal waarnemings. Die notasie N dui daarop dat die argument N is opsioneel die verstek is 1. Die venster notasie word gebruik as die argument vir die bewegende statistieke operateurs, en dit dui daarop dat jy óf 'n heelgetal aantal periodes N of 'n lys van N gewigte in kan spesifiseer tussen hakies. Die notasie volgorde gebruik word as die argument vir die volgorde operateurs, en dit dui daarop dat jy 'n ry getalle moet spesifiseer. Die notasie s dui die lengte van seisoenaliteit, en dit is 'n vereiste argument. Table 14.1 Transformasie Bedryf Moving Tyd Venster Operateurs Sommige operateurs bereken statistieke vir 'n stel waardes binne 'n bewegende tyd venster Dit is genoem beweeg tyd venster operateurs. Daar is gesentreer en agtertoe weergawes van hierdie operateurs. Die gesentreerde bewegende tyd venster operateurs is CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS, en CMOVVAR. Hierdie operateurs bereken statistieke van die waardes vir waarnemings. Die agtertoe beweeg tyd venster operateurs is MOVAVE, MOVCSS, MOVGMEAN, MOVMAX, MOVMED, MOVMIN, MOVPROD, MOVRANGE, MOVRANK, MOVSTD, MOVSUM, MOVTVALUE, MOVUSS, en MOVVAR. Hierdie operateurs bereken statistieke van die waardes. Al die bewegende tyd venster operateurs aanvaar 'n argument waarin die aantal periodes in die tyd venster te sluit. Byvoorbeeld, die volgende stelling bere 'n vyf-tydperk agteruit bewegende gemiddelde van X. In hierdie voorbeeld, die gevolglike transformasie is die volgende stelling bere 'n vyf-tydperk gesentreer bewegende gemiddelde van X. In hierdie voorbeeld, die gevolglike transformasie As die venster met 'n gesentreerde bewegende tyd venster operateur is nie 'n onewe getal, een meer uitgestel waarde as lood waarde is ingesluit in die tyd venster. Byvoorbeeld, die gevolg van die CMOVAVE 4 operateur is Jy kan 'n vorentoe beweeg tyd venster operasie bereken deur die kombinasie van 'n agterlike bewegende tyd venster operateur met die omgekeerde operateur. Byvoorbeeld, die volgende stelling bere 'n vyf-tydperk vorentoe bewegende gemiddelde van X. In hierdie voorbeeld, die gevolglike transformasie Sommige van die bewegende tyd venster operateurs jou in staat stel om 'n lys van gewig waardes spesifiseer om geweegde statistieke te bereken. Dit is CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVPROD, CMOVSTD, CMOVTVALUE, CMOVUSS, CMOVVAR, MOVAVE, MOVCSS, MOVGMEAN, MOVPROD, MOVSTD, MOVTVALUE, MOVUSS, en MOVVAR. Om 'n geweegde bewegende tyd venster operateur spesifiseer, betree die gewig waardes in hakies na die naam operateur. Die breedte venster is gelyk aan die aantal gewigte wat jy spesifiseer nie spesifiseer. Byvoorbeeld, die volgende stelling bere n geweegde Vyf-tydperk gesentreer bewegende gemiddelde van X. In hierdie voorbeeld, die gevolglike transformasie is die gewig waardes moet groter as nul wees. As die gewigte nie vat om 1, word die gespesifiseerde gewigte gedeel deur hul som om die gewigte wat gebruik word om die statistiek te bereken produseer. 'N Volledige tyd venster is nie beskikbaar aan die begin van die reeks. Vir die gesentreerde operateurs is ook 'n volledige venster nie beskikbaar aan die einde van die reeks. Die berekening van die bewegende tyd venster operateurs is aangepas vir hierdie randvoorwaardes soos volg. Vir agtertoe beweeg venster operateurs, is die breedte van die tyd venster verkort aan die begin van die reeks. Byvoorbeeld, die resultate van die MOVSUM 3 operateur ontbreek Waardes Jy kan die lengte van die resultaat reeks afgestomp deur die gebruik van die trim, TRIMLEFT, en TRIMRIGHT operateurs om waardes te stel om vermiste aan die begin of einde van die reeks. Jy kan hierdie funksies gebruik om die resultate van die beweging van tyd venster operateurs snoei sodat die resultaat reeks bevat slegs waardes bereken vanaf 'n volle breedte tyd venster. Byvoorbeeld, die volgende stellings bereken 'n gesentreerde Vyf-tydperk bewegende gemiddelde van X. en hulle het tot ontbrekende waardes aan die einde van die reeks wat gemiddeldes van minder as vyf waardes. Gewoonlik, die bewegende tyd venster en kumulatiewe statistieke operateurs ignoreer ontbrekende waardes en bereken hul resultate vir die nonmissing waardes. Wanneer voorafgegaan deur die NOMISS operateur, hierdie funksies lewer 'n vermiste gevolg indien enige waarde binne die venster ontbreek. Die NOMISS operateur geen berekeninge nie, maar dien om die werking van die bewegende tyd venster operateur wat daarop volg verander. Die NOMISS operateur het geen effek tensy dit word gevolg deur 'n bewegende tyd venster operateur. Byvoorbeeld, die volgende stelling bere 'n vyf-tydperk bewegende gemiddelde van die veranderlike X, maar lewer 'n vermiste waarde wanneer enige van die vyf waardes word vermis. Die volgende stelling bere die kumulatiewe bedrag van die veranderlike X, maar lewer 'n vermiste waarde vir alle tye na die eerste ontbreek X waarde. Soortgelyk aan die NOMISS operateur, het die MISSONLY operateur nie enige berekeninge (tensy gevolg deur die opsie beteken), maar dit dien om die werking van die bewegende tyd venster operateur wat daarop volg verander. Wanneer voorafgegaan deur die MISSONLY operateur, hierdie bewegende tyd venster operateurs vervang enige ontbrekende waardes met die bewegende statistiek en laat nonmissing waardes onveranderd. Byvoorbeeld, die volgende stelling vervang enige ontbrekende waardes van die veranderlike X met 'n eksponensieel geweeg bewegende gemiddelde van die afgelope waardes van X en blare nonmissing waardes onveranderd. Die ontbrekende waardes interpol met behulp van die gespesifiseerde eksponensieel geweeg bewegende gemiddelde. (Dit is ook bekend as eenvoudige eksponensiële gladstryking.) Die volgende stelling vervang enige ontbrekende waardes van die veranderlike X met die algehele gemiddelde van X. Jy kan die SETMISS operateur gebruik om ontbrekende waardes te vervang met 'n gespesifiseerde aantal. Byvoorbeeld, die volgende stelling vervang enige ontbrekende waardes van die veranderlike X met die aantal 8,77. Klassieke Ontbinding Operateurs As 'n seisoenale tyd reeks met waarnemings per seisoen, klassieke ontbinding metodes breek die tyd reeks in vier komponente: tendens, siklus, seisoenale en onreëlmatige komponente. Die tendens en siklus komponente word dikwels gekombineer met die tendens-siklus komponent te vorm. Daar is twee basiese vorme van klassieke ontbinding: multiplikatiewe en toevoeging, wat hieronder wys. Voorbeelde van gebruik Die vermenigvuldiging seisoenale indekse is 0.9, 1.2. 0.8 en 1.1 vir die vier kwartale. Laat SEASADJ 'n kwartaallikse tydreekse veranderlike wat seisoenaal het aangepas in 'n vermenigvuldigende mode. Om die seisoen herstel SEASADJ gebruik die volgende transformasie: Die toevoeging seisoenale indekse is 4.4, -1,1, -2,1 en -1,2 vir die vier kwartale. Laat SEASADJ 'n kwartaallikse tydreekse veranderlike wat seisoenaal het aangepas in toevoeging mode. Om die herstel van die seisoen te SEASADJ gebruik die volgende transformasie: Stel Operateurs Vir die stel operateurs, die eerste parameter, verteenwoordig die waarde vervang word en die tweede parameter, verteenwoordig die vervangingswaarde. Die vervanging kan gelokaliseer aan die begin, middel, of die einde van die reeks. Voorbeelde van gebruik Veronderstel dat 'n winkel het onlangs geopen en dat die verkope geskiedenis word gestoor in 'n databasis wat ontbrekende waardes nie erken. Selfs al is die vraag voor die winkels oop te kan bestaan, hierdie databasis ken die waarde van nul. Modellering van die verkope geskiedenis kan problematies wees, want die verkope geskiedenis is meestal nul. Om te vergoed vir hierdie tekort, moet die voorste nul waardes ingestel word om vermiste met die res van nul waardes onveranderd (wat geen vraag). Net so, dink 'n winkel is onlangs gesluit. Die vraag kan steeds teenwoordig wees en dus 'n aangeteken waarde van nul nie akkuraat weerspieël die werklike vraag. Skaal OperatorI ek probeer om kwartaallikse bewegende gemiddeldes binne 'bereken deur 'n groep is daar egter verskillende nommers van waarnemings binne elke groep. Ek het 'n paar voorbeelde gesien, maar hulle aanvaar dieselfde aantal waarnemings moet deurgaans gemiddeld. Hier is 'n voorbeeld: Items a en d gekoop in elke kwartaal, maar item B is net gekoop in die tweede en derde kwartale, terwyl item c net gekoop in kwartaal 4. Dus, sou die deur 'n groep wees deur item kwartaal item kwartaal hoeveelheid Die voorbeeld hierbo is 'n soort van 'n afgewaterde weergawe. Ek gebruik tydreeksdata en selfs al is 'n item gekoop elke kwartaal in 'n jaar, kan dit nie gekoop word elke kwartaal in nog 'n jaar, of dit kan nie gekoop word glad nie vir 'n bepaalde jaar. Is daar 'n maklike manier om bewegende gemiddeldes vir hierdie tipe data te bereken sonder interpolasie Indien moontlik, kan jy ook 'n voorbeeld met interpolasie Enige hulp sal waardeer word sluit. Ek het probeer om die data te brei om ontbrekende waardes sluit sodat die bewegende gemiddeldes kan bereken word as paigemiller het voorgestel. Ek is besig met SAS / ETS by the way. Ek gebruik maandelikse data en die datum veranderlike geformateer as monyy. Hier is die kode wat ek gebruik om die data te brei: processed soort datafisher3 deur die klas item datum run processed brei datafisher3 outfshrexp frommonth methodnone deur die klas item hoef datum in die groep sluit nie hier of dit sal nie werk Vraag: Ek het gedink dit opgelos my vermiste waardes probleem egter wanneer daar van ontbrekende waardes aan die begin / einde van die reeks (bv. waardes vir 'n veranderlike begin by Maart plaas van Januarie en kan eindig op Oktober plaas van Desember), hierdie waardes bly ontbreek (nie vertoon in die uitgebrei datastel), selfs al is die res van die reeks is uitgebrei. Is daar 'n manier, of 'n opsie in processed uit te brei, te kry SAS om aan te dui dat hierdie waardes sowel ontbreek Ook hier is die basiese kode wat ek gebruik om bewegende gemiddeldes te bereken. Alhoewel ek moet die ontbrekende waardes probleem op te los, die kode werk baie mooi. Jy kan verskeie VARs omskep in 'n keer en 'n verskeidenheid omskep state om verskillende bewegende gemiddeldes te skep in 'n keer vir diegene VARs. processed soort dataold deur die klas item datum run processed brei dataold outnew omskep var1movingaverage / methodnone transformout (movave 3) Ek is 'n bietjie nuut by die gebruik van en die skryf van SAS-kode, en Im probeer om 'n bewegende gemiddelde berekening te skep. Ive gevind voorbeelde en op grond van wat ek gelees het en probeer het, 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 gemiddelde 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. So, Hoe bereken ek die bewegende gemiddelde met meer as twee kolomme in 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 verkope 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


No comments:

Post a Comment