Saturday, October 22, 2016

Bewegende Gemiddelde Funksie Sas

Die 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 BY-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. Moving Gemiddelde Hierdie voorbeeld leer jy hoe om die bewegende gemiddelde van 'n tyd te bereken reeks in Excel. 'N bewegende avearge gebruik te stryk onreëlmatighede (pieke en dale) om maklik tendense herken. 1. In die eerste plek kan 'n blik op ons tyd reeks. 2. Klik op die blad Data, kliek Data-analise. Nota: cant vind die Data-analise knoppie Klik hier om die analise ToolPak add-in te laai. 3. Kies bewegende gemiddelde en klik op OK. 4. Klik op die insette Range boks en kies die reeks B2: M2. 5. Klik op die boks interval en tik 6. 6. Klik in die uitset Range boks en kies sel B3. 8. Teken 'n grafiek van hierdie waardes. Verduideliking: omdat ons die interval stel om 6, die bewegende gemiddelde is die gemiddeld van die vorige 5 datapunte en die huidige data punt. As gevolg hiervan, is pieke en dale stryk uit. Die grafiek toon 'n toenemende tendens. Excel kan nie bereken die bewegende gemiddelde vir die eerste 5 datapunte, want daar is nie genoeg vorige datapunte. 9. Herhaal stappe 2 tot 8 vir interval 2 en interval 4. Gevolgtrekking: Hoe groter die interval, hoe meer die pieke en dale is glad nie. Hoe kleiner die interval, hoe nader die bewegende gemiddeldes is om die werklike data punte. Hou jy van hierdie gratis webwerf Deel asseblief hierdie bladsy op GoogleSummary funksies produseer 'n statistiese opsomming van die hele tabel of beskouing in die genoteerde UIT klousule of vir elke groep wat in 'n GROEP DEUR klousule. As GROUP BY weggelaat, is al die rye in die tabel of beskouing as 'n enkele groep wees. Hierdie funksies verminder al die waardes in elke ry of kolom in 'n tabel om 'n opsomming of gesamentlike waarde. Om hierdie rede, is hierdie funksies dikwels genoem totaal funksies. Byvoorbeeld, die som (een waarde) van 'n kolom resultate van die toevoeging van al die waardes in die kolom. Sommige funksies het meer as een naam vir beide SAS en SQL konvensies te akkommodeer: AVG bedoel middel of gemiddeld van waardes COUNT, FREQ, N aantal nonmissing waardes CSS reggestel som van kwadrate CV koëffisiënt van variasie (persent) MAX grootste waarde MIN kleinste waarde NMISS aantal ontbrekende waardes PRT waarskynlikheid van 'n groter absolute waarde van Studente t rEEKS reeks waardes STD standaardafwyking stderr standaardfout van die gemiddelde som som van waardes SUMWGT som van die gewig wat veranderlike waardes (voetnoot 1) T Studente t waarde vir die toets van die hipotese dat die bevolking beteken nul USS reggestelde som van kwadrate vir 'n beskrywing en die formules wat gebruik word vir hierdie statistieke, sien SAS Elementêre Statistiek Prosedures die telling funksie tel rye. COUNT () gee terug Die totale aantal rye in 'n groep of in 'n tabel. As jy 'n naam kolom gebruik as 'n argument tel, die resultaat is die totale aantal rye in 'n groep of in 'n tabel wat 'n nonmissing waarde vir daardie kolom hê. As jy wil hê dat die unieke waardes in 'n kolom tel, spesifiseer COUNT (DISTINCT kolom). As die SELECT klousule van 'n tafel-uitdrukking bevat een of meer opsomming funksies en daardie tafel-uitdrukking besluit om geen rye, word dan die opsomming funksie resultate van ontbrekende waardes. Die volgende uitsonderings wat nulle terugkeer: die aantal argumente wat in 'n opsomming funksie beïnvloed hoe die berekening uitgevoer word. As jy 'n enkele argument spesifiseer, word die waardes in die kolom bereken. As jy verskeie argumente spesifiseer, word die argumente of kolomme gelys bereken vir elke ry. Byvoorbeeld, oorweeg berekeninge op die volgende tabel. As jy een argument gebruik in die funksie, is die berekening uitgevoer word op net wat kolom. As jy meer as een argument gebruik, is die berekening uitgevoer word op elke ry van die gespesifiseerde kolomme. In die volgende PROC SQL stap, die minimum en maksimum funksies terugkeer die minimum en maksimum van die kolomme dit gebruik word met. Die som funksie gee terug Die som van elke ry van die gespesifiseerde as argumente kolomme: Wanneer jy 'n opsomming funksie in 'n uitgesoekte klousule of 'n WAT klousule gebruik, kan jy die volgende boodskap in die SAS log sien: die proses van remerging behels twee passe deur die data. Op die eerste pas, PROC SQL bereken en die waarde van opsomming funksies terugkeer. Dit gebruik dan die resultaat om die rekenkundige uitdrukkings waarin die opsomming funksie neem bereken. groepe data volgens die GROUP BY klousule. Op die tweede slaag, PROC SQL gekry enige bykomende kolomme en rye wat dit nodig het om te wys in die uitset. Die volgende voorbeelde gebruik die PROCLIB. PAYROLL tafel (wat in Skep 'n tabel van 'n Querys gevolg) om aan te toon wanneer remerging van data is en is nie nodig nie. Die eerste navraag vereis remerging. Die eerste keer deur die data groepe die data deur Jobcode en besluit om die AVG funksie vir elke groep. Daar moet egter PROC SQL n tweede laat verbygaan en om die waardes van IDNommer en salaris te haal. Jy kan die vorige navraag verander om net die gemiddelde salaris terug vir elke jobcode. Die volgende navraag is dit nie nodig remerging omdat die eerste pas van die data nie die opsomming en die groepering. 'N Tweede pas is nie nodig nie. Wanneer jy die WAT klousule gebruik, kan PROC SQL moet data remerge om die WAT uitdrukking te los. Eerstens, oorweeg 'n navraag wat gebruik maak WAT maar dit beteken remerging nie nodig. Die navraag groepe die data deur waardes van Jobcode, en die resultaat bevat een ry vir elke waarde van Jobcode en opsomming inligting vir mense in elke Jobcode. Op die eerste pas, die opsomming funksies bied waardes vir die nommer. Gemiddelde ouderdom. en gemiddelde salaris kolomme. Die eerste pas bied alles wat PROC SQL moet die WAT klousule op te los, sodat daar geen remerging nodig. In die volgende navraag, PROC SQL remerges die data as gevolg van die WAT klousule gebruik die salaris kolom in die vergelyking en salaris is nie in die groep DEUR klousule. Hou in gedagte dat PROC SQL remerges data wanneer die waardes teruggekeer met 'n opsomming funksie word gebruik in 'n berekening. Byvoorbeeld, die volgende navraag gee die waardes van x en die persent van die totale vir elke ry. Op die eerste pas, PROC SQL bere die som van X, en op die tweede slaag PROC SQL bere die persentasie van die totale vir elke waarde van x: die waardes teruggekeer met 'n opsomming funksie is in vergelyking met waardes van 'n kolom wat nie gespesifiseer in die groep DEUR klousule. Byvoorbeeld, die volgende navraag gebruik die PROCLIB. PAYROLL tafel. PROC SQL remerges data omdat die kolom Salaris nie in die groep is wat deur klousule: 'n kolom van die insette tabel wat in die SELECT klousule en is nie gespesifiseer in die groep DEUR klousule. Hierdie reël verwys nie na kolomme gebruik as argumente om summiere funksies in die SELECT klousule. Byvoorbeeld, in die volgende navraag, die teenwoordigheid van IDNommer in die SELECT klousule veroorsaak PROC SQL om die data remerge omdat IDNommer nie betrokke in groepering of opsom gedurende die eerste pas. Ten einde vir PROC SQL om die waardes vir IDNommer haal, moet dit 'n tweede keer deur die data. Im n SAS beginner en Im nuuskierig maak 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 (). antwoord 3 Desember 13 aan 15: 29In hierdie post, ek het 'n truuk te doen bewegende gemiddelde berekening wys (kan uitgebrei word na ander operasies waarby windows funksies) wat super vinnig. Dikwels moet SAS ontleders uit te voer bewegende gemiddelde berekening en daar is verskeie opsies wat deur die volgorde van voorkeur: 1. PROC brei 2. DATA STAP 3. PROC SQL Maar baie plekke kan nie gelisensieer SAS / ETS te gebruik PROC uit te brei en te doen bewegende gemiddelde in Data stap vereis 'n paar kodering en is fout geneig. PROC SQL 'n natuurlike keuse vir junior programmeerders en in baie besigheid gevalle die enigste oplossing, maar SAS39s PROC SQL ontbreek windows funksies wat beskikbaar is in baie DBs te fasiliteer bewegende gemiddelde berekening is. Een tegniek mense gewoonlik gebruik is CROSS te sluit, wat baie duur en nie 'n werkbare oplossing vir selfs medium grootte datastel. In hierdie post, ek het 'n truuk te doen bewegende gemiddelde berekening wys (kan uitgebrei word na ander operasies waarby windows funksies) wat super vinnig. Oorweeg die eenvoudigste bewegende gemiddelde berekening waar die agterste K waarnemings word by die berekening ingesluit, naamlik MA (K), Hier het ons K5. Ons genereer eers 'n 20 OBS steekproefdata, waar veranderlike ID is om gebruik te word vir windows en die veranderlike X is om gebruik te word in MA berekening en dan pas ons die standaard CROSS vat om eers die gevolglike data, Nie-Gegroepeer ondersoek, net om te verstaan ​​hoe om die data struktuur hefboom. Van die gevolglike datastel, is dit moeilik om 'n idee te kry, let39s nou sorteer quotbidquot kolom in hierdie datastel: Van hierdie gesorteer data, is dit duidelik dat ons eintlik don39t het om oor te steek Neem deel aan die hele oorspronklike datastel, maar in plaas daarvan, kan ons 'n quotoperationquot datastel wat die verskil waarde bevat genereer, en laat die oorspronklike datastel CROSS vat met hierdie baie kleiner quotoperationquot datastel, en al die data wat ons nodig het om te gebruik vir MA berekening sal daar wees. let39s Doen nou dit: CROSS JOIN oorspronklike data met quotoperationquot data, sorteer (a. idops), wat eintlik quotbid39 in gesorteerde datastel Let daarop dat bogenoemde kode, is dit nodig om byl vermeerder het deur b. weight sodat die data kan inter-leaved, anders dieselfde X waarde van die oorspronklike tabel sal wees uitset en MA berekening sal misluk. Die eksplisiete gewig veranderlike eintlik voeg in meer buigsaamheid om die hele MA berekening. Terwyl die opstel van dit te wees 1 vir alle OBS gevolg in 'n eenvoudige MA berekening, toewys verskillende gewigte sal help om meer komplekse MA rekenaar op te los, soos te gee verdere waarnemings minder gewig vir 'n verrotte MA. As verskillende K parameter in MA (K) berekeninge vereis, hoef slegs die werking datastel opgedateer wat triviale taak. Nou is die werklike kode sjabloon vir MA (K) berekening sal wees: Met hierdie nuwe metode, dit is interessant om dit te vergelyk met die duur self CROSS JOIN asook om Proc uit te brei. Op my werkstasie (Intel i5 3.8Ghz, 32GB geheue, 1TB 72K HDD), self CROSS JOIN is onbetaalbaar lang loop tyd (indien data is groot), terwyl die nuwe metode gebruik net 2X soveel tyd as PROC uit te brei, sal die tyd verbruik is triviale vergelyk om self CROSS aan te sluit. Tyd verbruik hieronder getoon is in quotsecondquot. Hier is die kode lesers kan hardloop en vergelyk julle. Posted 10 Mei 2015 deur Liang Xie SAS Programmering vir data-ontginning


No comments:

Post a Comment