Blogit

Alussa SAS loi proseduurit ja tuotokset. Tuotos oli muodoton ja tyhjä. Sitten SAS sanoi: ”Olkoon ODS”, ja tuli ODS.” Asiakkaat näkivät, että ODS oli hyvä, ja SAS erotti laskennan ja tuotoksen näyttämisen ja hallinnan toisistaan.

Edellinen kappale yksinkertaistaa liikaa SAS:n Output Delivery System (ODS) -järjestelmää, mutta totuus on, että ODS on SAS:n tehokas ominaisuus. ODS:n avulla voit lähettää SAS-taulukoita ja -grafiikkaa erilaisiin tulostuskohteisiin, kuten HTML, PDF, RTF ja PowerPoint. Voit hallita tulosteen tyyliä ja attribuutteja ja luoda näin räätälöidyn raportin. ODS:stä on kirjoitettu satoja artikkeleita ja kirjoja. Hyvin perustavanlaatuinen johdanto on Olingerin (2000) ”ODS for Dummies.”

Tilasto-ohjelmoijalle hyödyllisin kohde on OUTPUT-kohde. OUTPUT-kohde lähettää taulukon tai kuvaajan SAS-tietueeseen. Näin ollen voit käyttää ohjelmallisesti jokaista tulosteen elementtiä.

Edellisen väitteen seuraukset ovat monumentaaliset. En voi liikaa korostaa OUTPUT-kohteen merkitystä, joten sanon sen vielä kerran:

ODS OUTPUT-kohteen avulla voit tallentaa minkä tahansa arvon, jonka mikä tahansa SAS-proseduuri tuottaa. Voit sitten lukea tämän arvon SAS-ohjelmalla.

ODS OUTPUT -kohde vastaa yleiseen kysymykseen, jota uudet ohjelmoijat kysyvät SAS-keskustelufoorumeilla: ”Miten saan tilaston tietokantaan tai makromuuttujaan?”. Vaiheet ovat seuraavat:

  1. Käytä ODS TRACE ON (tai SAS:n dokumentaatiota) löytääksesi sen ODS-taulukon nimen, joka sisältää haluamasi tilaston.
  2. Käytä ODS OUTPUT -lauseketta määrittääksesi taulukon nimen ja datasarjan nimen. Syntaksi on ODS OUTPUT TableName=DataSetName. Suorita sitten menettely taulukon luomiseksi.
  3. Lue tietokokonaisuus saadaksesi tilaston arvon.

Uusi #SAS-ohjelmointi? Miten saada mikä tahansa tilasto tietokokonaisuuteen. Click To Tweet

Löydä ODS-taulukon nimi

Esimerkiksi oletetaan, että aiot käyttää PROC REG -ohjelmaa lineaarisen regression suorittamiseen ja haluat kaapata R-neliöarvon SAS-tietoaineistoon. Proseduurin dokumentaatiossa luetellaan kaikki ODS-taulukot, jotka proseduuri voi luoda, tai voit käyttää ODS TRACE ON -lauseketta näyttääksesi taulukoiden nimet, jotka PROC REG tuottaa. Aineistona ovat SAS:n mukana jaettavan Sashelp.Cars -aineiston 428 ajoneuvoa:

ods trace on; /* kirjoita ODS-taulukon nimet lokiin */proc reg data=Sashelp.Cars plots=none; model Horsepower = EngineSize Weight;quit;ods trace off; /* lopeta kirjoittaminen lokiin */

odsoutput1

Output Added:-------------Name: FitStatisticsLabel: Fit StatisticsTemplate: Stat.REG.FitStatisticsPath: Reg.MODEL1.Fit.Horsepower.FitStatistics-------------

Tulostetta tarkastelemalla näkee, että kolmas taulukko sisältää R-neliöarvon. Katsomalla SAS-lokia näet, että kolmannen taulukon nimi on ”FitStatistics.”

Tallenna taulukko SAS-tietueeseen

Nyt kun tiedät, että ODS-taulukon nimi on ”FitStatistics”, voit kirjoittaa taulukon SAS-tietueeseen ODS:n OUTPUT-kohteen avulla seuraavasti:

ods output FitStatistics=Output; /*tietueen nimi on 'Output' */proc reg data=Sashelp.Cars plots=none; /* sama proseduurikutsu */ model Horsepower = EngineSize Weight;quit; proc print data=Output noobs;run;

odsoutput2

PROC PRINT:n tulosteesta nähdään tulostettavan aineiston rakenne. Huomaa, että tietojoukko näyttää usein erilaiselta kuin alkuperäinen näytetty taulukko. Tietoaineisto sisältää tulostamattomia sarakkeita (kuten Model ja Dependent), jotka eivät näy näytetyssä taulukossa. Tietoaineistossa on myös sarakkeita, jotka sisältävät tilastojen raakanumeroarvot ja (muotoillut) merkkiarvot. Sarakkeet cValue1 ja nValue1 edustavat samoja tietoja, paitsi että cValue1 on merkkisarake, kun taas nValue1 on numerosarake. Sama koskee sarakkeita cValue2 ja nValue2. Merkkiarvot saattavat sisältää muotoiltuja tai pyöristettyjä arvoja.

Lue tilaston arvo makromuuttujaan

Edellisestä PROC PRINT -tulosteesta näet, että R-neliö -tilaston numeerinen arvo on ensimmäisellä rivillä ja nValue2-sarakkeessa. Voit siis lukea ja käsitellä tätä arvoa käyttämällä tavallista WHERE-lauseketta. Esimerkiksi seuraavissa lausekkeissa käytetään aliohjelmaa SYMPUTX luomaan makromuuttuja, joka sisältää R-neliötilaston arvon:

data _null_;set Output;if Label2="R-neliö" then call symputx("RSq", nValue2);run; %put RSq = &RSq;

RSq = 0.6201360929

SAS:n loki osoittaa, että R-neliöarvo sisältyy nyt makromuuttujaan Rsq.

Tilastojen tallentaminen makromuuttujaan on vain yksi tapa käyttää aineistoa. Voit myös lukea tilaston PROC IML:ään tai PROC SQL:ään jatkolaskentaa varten tai näyttää tilaston arvon kuvaajassa.

BY-ryhmän käsittely: Useita otoksia ja useita tilastoja

Edellisissä kappaleissa näytetään, miten yksi taulukko tallennetaan SAS-tietueeksi. Yhtä helppoa on luoda tietokokonaisuus, joka sisältää useita tilastoja, yhden jokaiselle tasolle BY-ryhmäanalyysissä.

Esitetään, että haluat suorittaa useita regressioita, yhden jokaiselle Origin-muuttujan arvolle, jolla on arvot ”Aasia”, ”Eurooppa” ja ”Yhdysvallat”. Seuraava kutsu PROC SORT -ohjelmalle lajittelee tiedot Origin-muuttujan mukaan.Lajitellut tiedot tallennetaan CARS-tietoaineistoon.

proc sort data=Sashelp.Cars out=Cars; by Origin;run;

Tämän jälkeen voit määrittää Originin PROC REG:n BY-lausekkeessa kolmen regressioanalyysin suorittamiseksi. Kun suoritat BY-ryhmäanalyysin, et ehkä halua nähdä kaikkia tuloksia näkyvissä tietokoneen näytöllä, etenkään jos tavoitteenasi on tallentaa tulokset tulostietueeseen. Voit käyttää ODS EXCLUDE -lausetta SAS:n tulostuksen estämiseen.

ods exclude all; /* suppress taulukot näytölle */ods output FitStatistics=Output2; /* 'Output2' sisältää tulokset jokaiselle BY-ryhmälle */proc reg data=Cars plots=none; by Origin; model Hevosvoima = EngineSize Paino;quit;ods exclude none; /* ei enää tukahduta taulukoita */ proc print data=Output2 noobs; where Label2="R-neliö"; var Origin Label2 nValue2;run;

odsoutput3

PROC PRINT:n tulosteessa näkyvät kunkin mallin R-neliötilastot. Huomaa, että BY-ryhmämuuttujat (tässä tapauksessa Origin) lisätään tulostietoaineistoihin, kun suoritat BY-ryhmäanalyysin. Voit nyt käyttää tilastoja ohjelmissa tai kuvaajissa.

Vaihtoehtoja ODS OUTPUTin käytölle

Jotkut proseduurit tarjoavat vaihtoehtoisen vaihtoehdon tilastoja sisältävän tulostietoaineiston luomiseen. Tarkista aina SAS:n dokumentaatiosta, tarjoaako proseduuri vaihtoehdon, joka kirjoittaa yleisiä tilastoja tulostietoaineistoon. Esimerkiksi PROC REG -lausekkeen dokumentaatiossa sanotaan, että voit käyttää OUTEST=-vaihtoehtoa yhdessä RSQUARE-vaihtoehdon kanssa saadaksesi tulostietoaineiston, joka sisältää parametriestimaatit ja muita mallin tilastoja, kuten R-neliöarvon.Näin ollen tässä esimerkissä sinun ei tarvitse käyttää ODS OUTPUT -lauseketta ohjata FitStatistics-taulukkoa tietueeseen. Sen sijaan voit saada tilaston seuraavasti:

proc reg data=Cars NOPRINT outest=Outputput3 RSQUARE; /* statistics in 'Output3' */ by Origin; model Horsepower = EngineSize Weight;quit; proc print data=Output3 noobs; format _RSQ_ 8.6; var Origin _RSQ_;run;

odsoutput4

Yhteenveto

Yhteenvetona voidaan todeta, että ODS OUTPUT -lausekkeella voidaan luoda tietokokonaisuus, joka sisältää minkä tahansa SAS-proseduurin tuottaman tilaston. ODS OUTPUT -lausekkeen avulla voit kaapata tilaston ja käyttää sitä myöhemmin ohjelmassasi.

Tunnisteet Aloittaminen

Vastaa

Sähköpostiosoitettasi ei julkaista.