Sunday 22 October 2017

Laskettaessa A Liikkuva Keskiarvo In Sas


Sisällys kuvakaappaus, jolla selvitän ongelmani: Im yrittää laskea jonkinlaista liikkuvaa keskiarvoa ja siirtää keskihajontaa. Asia on haluan laskea vaihtelukertoimet (stdevavg) todelliselle arvolle. Tavallisesti tämä tehdään laskemalla stdev ja avg viimeisten 5 vuoden aikana. Kuitenkin joskus tietokannassani on havaintoja, joista minulla ei ole viimeisten 5 vuoden tietoja (ehkä vain 3, 2 jne.). Siksi miksi haluan koodin, joka laskee avg: n ja stdevin, vaikka ei ole tietoa koko 5 vuodeksi. Myös, kuten huomaatte havainnoissa, joskus minulla on tietoa yli viiden vuoden ajan, kun näin on, tarvitsen jonkinlaisen liukuvan keskiarvon, joka sallii minun laskea avg: n ja stdevin viimeisen viiden vuoden aikana. Joten jos yrityksellä on tietoa 7 vuotta, tarvitsen jonkinlaisen koodin, joka laskee vuosien 1997-1996, 1998, 1992-1997 ja 1999 (1993-1998) keskiarvot. Koska en ole kovin perehtynyt sas-komentoihin, sen pitäisi näyttää (erittäin karkealta), kuten: Tai jotain tällaista, minulla ei todellakaan ole aavistustakaan, yritän selvittää, mutta sen arvoinen lähettäminen, jos löydän sen itse. Julkaisu 6.08 SAS-järjestelmästä, PROC EXPAND SASETS-ohjelmistossa voidaan käyttää erilaisia ​​datamuunnoksia. Näihin muutoksiin kuuluvat: johtaa, viivästykset, painotetut ja painottamattomat liikkuvat keskiarvot, siirrettävät summat ja kumulatiiviset summat muutamia. Julkaisu 6.12 lisättiin monia uusia muunnoksia, mukaan lukien erilliset spesifikaatiot keskitetyille ja taaksepäin liikkuville keskiarvoille. Nämä uudet muutokset tekivät tarpeen muokata syntaksia joillekin muutoksille, jotka on tuettu ennen julkaisua 6.12. Esimerkkejä siitä, kuinka määritellä syntaksi keskitetyille ja taaksepäin liikkuville keskiarvoille käyttäen Release 6.11 ja aiemmin sekä Release 6.12 ja uudemmat ovat alla. PROC EXPAND voi laskea joko keskitetyn liukuvan keskiarvon tai taaksepäin liikkuvan keskiarvon. 5-jaksoista keskitetty liukuva keskiarvo lasketaan keskiar - voittamalla sarjasta yhteensä 5 peräkkäistä arvoa (nykyisen ajanjakson arvo kahden välittömästi edeltävän arvon lisäksi ja kaksi arvoa, jotka välittömästi seuraavat nykyistä arvoa). 5-jaksoinen taaksepäin liikkuva keskiarvo lasketaan keskiarvolla nykyisestä kauden arvosta neljän välittömästi edeltävän jakson arvoilla. Seuraavassa syntaksissa kuvataan TRANSFORM (MOVAVE n) - määrityksen käyttämistä laskemalla 5-jaksoinen keskitetty liukuva keskiarvo julkaisusta 6.11 tai aiemmin: Laskettaessa n-tahtia taaksepäin liikkuvaa keskiarvoa käyttäen versiota 6.11 tai aiemmin, käytä TRANSFORM (MOVAVE n LAG k) erittely, jossa k (n-1) 2, jos n on pariton tai jossa k (n-2) 2, jos n on tasainen. Esimerkiksi seuraava syntaksi havainnollistaa kuinka laskea 5-jaksoinen taaksepäin liikkuva keskiarvo käyttämällä versiota 6.11 tai aiemmin: Seuraavassa syntaksissa kuvataan, miten TRANSFORM (CMOVAVE n) - spesifikaatiota käytetään laskemalla 5-jaksoinen keskitetty liukuva keskiarvo käyttämällä Release 6.12 tai myöhemmin: Seuraava samanlainen syntaksi kuvaa TRANSFORM (MOVAVE n) - ominaisuuden käyttämistä laskemalla viiden jaksoisen taaksepäin liikkuvaa keskiarvoa julkaisusta 6.12 tai uudemmaksi: Lisätietoja on kohdassa Transformation Operations (SASETS-käyttöohjeet) EXPAND-luvusta. Jos sinulla ei ole SASETS-käyttöoikeutta, voit laskea liukuvan keskiarvon DATA-vaiheessa, kuten tässä esimerkkiohjelmassa on kuvattu. Käyttöjärjestelmä ja julkaisutiedot Täysi-koodi-välilehden näytekoodi kuvaa kuinka muuttujan liukuva keskiarvo lasketaan koko tietojoukon, viimeisten N-havaintojen perusteella datajoukossa tai viimeisten N-havaintojen perusteella BY-ryhmässä. Näitä esimerkkitiedostoja ja koodiesimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko nimenomaista tai epäsuoraa, mukaan lukien, mutta ei rajoittuen, epäsuorat takuut myytävyydestä ja sopivuudesta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän aineiston käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Näitä esimerkkitiedostoja ja koodiesimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko nimenomaista tai epäsuoraa, mukaan lukien, mutta ei rajoittuen, epäsuorat takuut myytävyydestä ja sopivuudesta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän aineiston käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Lasketaan muuttujan liikkuva keskiarvo koko datajoukon, viimeisten N-havaintojen perusteella tietojoukossa tai viimeisten N-havaintojen sisällä BY-ryhmä. Tässä viestissä näytän tempun tehdä liukuva keskiarvo laskelma (voi laajennetaan muihin toimintoihin, jotka edellyttävät ikkunointitoimintoja), joka on erittäin nopea. Usein SAS-analyytikoiden on suoritettava liukuva keskiarvonlaskenta ja etusijajärjestyksessä on useita vaihtoehtoja: 1. PROC EXPAND 2. TIEDONKÄYTTÖ 3. PROC SQL Mutta monet sivustot eivät saa SASETS: n lisensoimaan PROC EXPANDin käyttämistä ja liikkuvan keskiarvon käyttämistä DATA STEP vaatii jonkinlaista koodausta ja on virheellinen. PROC SQL on luonnollinen valinta nuorille ohjelmoijille ja monissa liiketoiminta-tilanteissa ainoa ratkaisu, mutta SAS: n PROC-SQL: ssä ei ole ikkunointifunktioita, jotka ovat käytettävissä useissa DB: issä helpottaakseen liukuvan keskiarvon laskemista. Yksi tekniikka, jota ihmiset yleensä käyttävät, on CROSS JOIN, mikä on erittäin kallista eikä kestävän ratkaisun keskikokoisille tietojoukkoille. Tässä viestissä näytän tempun siirrettävästä keskimääräisestä laskennasta (voidaan laajentaa muihin toimintoihin, jotka edellyttävät ikkunointitoimintoja), joka on erittäin nopea. Tarkastellaan yksinkertaisinta liukuva keskiarvo laskennassa, jossa jäljessä olevat K-havainnot sisältyvät laskentaan, nimittäin MA (K), tässä asetetaan K5. Ensin generoidaan 20 obs näytesitiota, jossa muuttujan ID on tarkoitus käyttää ikkunointiin ja muuttujaa X käytetään MA-laskelmissa, ja sitten käytämme standardin CROSS JOIN ensin tarkastelemaan tulokseksi saatuja tietoja, ei-ryhmittyneet, juuri ymmärtää, miten hyödyntää tietorakennetta. Tuloksena olevasta datasarjasta on vaikea löytää vihjeitä, nyt lajitellaan rivillä quotedquot-sarakkeessa tässä tietojoukossa: Tästä lajitellusta tiedosta on selvää, että meidän ei todellakaan tarvitse ristiin yhdistää koko alkuperäistä tietojoukkoa, voimme tuottaa rivikohtaisen datasarjan, joka sisältää erotusarvon, ja anna alkuperäinen datasarja CROSS JOIN tätä paljon pienemmäksi annetulla kvanttitietojoukolla ja kaikki MA: n laskentaan tarvittavat tiedot ovat siellä. Nyt tee se: CROSS JOIN alkuperäisiä tietoja, joissa on quoteoperationquot data, sort by (a. idops), joka on todella quotbid39 lajitellussa datajoukossa Huomaa, että edellä olevassa koodissa on välttämätöntä, että ax kerrotaan b. weightilla niin, että tiedot voidaan leikata toisistaan, muutoin sama X-arvo alkuperäisestä taulukosta tulee ulos ja MA-laskenta epäonnistuu. Selkeä painomuuttuja lisää enemmän joustavuutta koko MA-laskentaan. Kun asetat sen 1: lle kaikille obs-arvoille, se johtaa yksinkertaiseen MA-laskentaan, antaa eri painotus auttaa ratkaisemaan monimutkaisemman MA-laskennan, kuten lisäämällä havaintoja vähemmän painoa hajotetulle MA: lle. Jos MA (K) - laskelmissa tarvitaan erilaisia ​​K-parametreja, vain toimintatietuejoukkoa on päivitettävä, mikä on triviaalia työtä. Nyt todellinen koodimalli MA (K) - laskennalle on: Tämän uuden menetelmän avulla on mielenkiintoista verrata sitä kalliisiin itsenäisiin CROSS JOIN - kohteisiin sekä PROC EXPAND - ohjelmaan. Itse CROSS JOIN on työasemallani (Intel i5 3,8 GHz, 32 Gt muistia, 1 kt 72 kt kiintolevyllä) itsestään pitkä käyttöikä (jos tiedot ovat suuria), kun taas uusi menetelmä käyttää vain 2 kertaa niin paljon aikaa kuin PROC EXPAND, molemmat ajankäytöt ovat triviaali verrattuna itse CROSS JOIN. Seuraavassa esitetyt aikakulutukset ovat summittaisia. Alla on koodinlukijat voivat käyttää ja verrata itseänne. Julkaistu 10. toukokuuta 2015 Liang Xie SAS - ohjelmistolla Data Mining - ohjelmalle

No comments:

Post a Comment