Blogy

Na začátku SAS vytvořil procedury a výstupy. Výstup byl beztvarý a prázdný. Pak SAS řekl: „Ať je tu ODS.“ A byl tu ODS Zákazníci viděli, že ODS je dobrý, a SAS oddělil výpočet od zobrazení a správy výstupu.

Předchozí odstavec příliš zjednodušuje systém SAS Output Delivery System (ODS), ale pravdou je, že ODS je mocnou funkcí systému SAS. Pomocí ODS můžete odesílat tabulky a grafiku SAS do různých výstupních destinací, včetně HTML, PDF, RTF a PowerPoint. Můžete řídit styl a atributy výstupu, a vytvořit tak zprávu na míru. O ODS byly napsány stovky článků a knih. Velmi základním úvodem je kniha Olingera (2000) „ODS for Dummies.“

Pro statistického programátora je nejužitečnějším cílem cíl OUTPUT. Cíl OUTPUT odesílá tabulku nebo graf do datové sady SAS. Následně můžete programově přistupovat ke každému prvku výstupu.

Důsledky předchozího tvrzení jsou monumentální. Nemohu přeceňovat význam cíle OUTPUT, a proto ho zopakuji:

Cíl ODS OUTPUT umožňuje uložit jakoukoli hodnotu, která je vytvořena jakoukoli procedurou SAS. Tuto hodnotu pak můžete přečíst pomocí programu SAS.

Destinace ODS OUTPUT odpovídá na častou otázku, kterou kladou začínající programátoři na diskusních fórech SAS: „Jak mohu dostat statistiku do datového souboru nebo do proměnné makra?“. Postup je následující:

  1. Pomocí příkazu ODS TRACE ON (nebo v dokumentaci SAS) zjistíte název tabulky ODS, která obsahuje požadovanou statistiku.
  2. Pomocí příkazu ODS OUTPUT zadáte název tabulky a název datové sady. Syntaxe je ODS OUTPUT TableName=DataSetName. Poté spusťte proceduru pro vygenerování tabulky.
  3. Přečtěte datovou sadu, abyste získali hodnotu statistiky.

Jste v programování #SAS nováčkem? Jak získat libovolnou statistiku do datové sady. Click To Tweet

Zjistěte název tabulky ODS

Předpokládejme, že hodláte použít PROC REG k provedení lineární regrese a chcete zachytit hodnotu R-kvadrát v datovém souboru SAS. V dokumentaci k této proceduře jsou uvedeny všechny tabulky ODS, které může procedura vytvořit, nebo můžete použít příkaz ODS TRACE ON pro zobrazení názvů tabulek, které vytváří PROC REG. Jedná se o 428 vozidel v datové sadě Sashelp.Cars, která je distribuována se systémem SAS:

ods trace on; /* zapisovat názvy tabulek ODS do protokolu */proc reg data=Sashelp.Cars plots=none; model Horsepower = EngineSize Weight;quit;ods trace off; /* zastavit zápis do logu */

odsoutput1

Výstup přidán:-------------Name: FitStatisticsZnačka: FitStatisticsLabel: Fit StatisticsŠablona: Fit StatisticsŠablona: Fit StatisticsŠablona: Fit StatisticsŠablona: Fit Statistics: REG.FitStatisticsPath: MODEL1.Fit.Horsepower.FitStatistics-------------

Při pohledu na výstup je vidět, že třetí tabulka obsahuje hodnotu R-kvadrátu. Při pohledu do protokolu SAS vidíte, že název třetí tabulky je „FitStatistics.“

Uložení tabulky do datové sady SAS

Teď, když víte, že název tabulky ODS je „FitStatistics“, použijte cíl ODS OUTPUT pro zápis této tabulky do datové sady SAS takto:

ods output FitStatistics=Output; /* název datové sady je "Output" */proc reg data=Sashelp.Cars plots=none; /* stejné volání procedury */ model Horsepower = EngineSize Weight;quit; proc print data=Output noobs;run;

odsoutput2

Výstup z PROC PRINT ukazuje strukturu výstupního souboru dat. Všimněte si, že datová sada často vypadá jinak než původní zobrazená tabulka. Datová sada obsahuje netisknutelné sloupce (jako Model a Dependent), které se v zobrazené tabulce nevyskytují. Datová sada také obsahuje sloupce, které obsahují surové číselné hodnoty a (formátované) znakové hodnoty statistik. Sloupce cValue1 a nValue1 představují stejné informace s tím rozdílem, že cValue1 je znakový sloupec, zatímco nValue1 je číselný sloupec. Totéž platí pro sloupce cValue2 a nValue2. Znakové hodnoty mohou obsahovat formátované nebo zaokrouhlené hodnoty.

Přečtěte hodnotu statistiky do makroproměnné

Z předchozího výstupu PROC PRINT vidíte, že číselná hodnota statistiky R-kvadrát je v prvním řádku a je ve sloupci nValue2. Tuto hodnotu tedy můžete načíst a zpracovat pomocí standardní klauzule WHERE. Například následující příkazy používají podprogram SYMPUTX k vytvoření makroproměnné, která obsahuje hodnotu statistiky R-kvadrát:

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

RSq = 0.6201360929

Záznam SAS ukazuje, že hodnota R-kvadrátu je nyní obsažena v makroproměnné Rsq.

Uložení statistiky do makroproměnné je pouze jedním ze způsobů využití datového souboru. Statistiku můžete také načíst do PROC IML nebo PROC SQL pro další výpočty nebo zobrazit hodnotu statistiky v grafu.

Zpracování po skupinách: Předchozí části ukazují, jak uložit jednu tabulku do datové sady SAS: více vzorků a více statistik

. Stejně snadno lze vytvořit datovou sadu, která obsahuje více statistik, jednu pro každou úroveň v analýze BY-group.

Předpokládejme, že chcete provést několik regresí, jednu pro každou hodnotu proměnné Origin, která má hodnoty „Asia“, „Europe“ a „USA“. Následující volání příkazu PROC SORT seřadí data podle proměnné Origin. seřazená data jsou uložena v datové sadě CARS.

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

Příkazem BY v příkazu PROC REG pak můžete zadat Origin a provést tři regresní analýzy. Když spustíte analýzu BY-skupiny, možná nebudete chtít vidět všechny výsledky zobrazené na obrazovce počítače, zejména pokud je vaším cílem uložit výsledky do výstupní datové sady. K potlačení výstupu SAS můžete použít příkaz ODS EXCLUDE.

ods exclude all; /* potlačit tabulky na obrazovce */ods output FitStatistics=Output2; /* 'Output2' obsahuje výsledky pro každou skupinu BY */proc reg data=Cars plots=none; by Origin; model Horsepower = EngineSize Weight;quit;ods exclude none; /* již nepotlačuje tabulky */ proc print data=Output2 noobs; where Label2="R-kvadrát"; var Origin Label2 nValue2;run;

odsoutput3

Výstup z PROC PRINT ukazuje statistiku R-kvadrátu pro každý model. Všimněte si, že proměnné BY-skupiny (v tomto případě Origin) jsou přidány do výstupních datových sad, když spustíte analýzu BY-skupiny. Statistiky nyní můžete použít v programech nebo grafech.

Alternativy k použití ODS OUTPUT

Některé procedury poskytují alternativní možnost vytvoření výstupní datové sady, která obsahuje statistiky. Vždy se podívejte do dokumentace SAS, zda procedura poskytuje možnost, která zapisuje běžné statistiky do výstupní datové sady. Například dokumentace k příkazu PROC REG uvádí, že můžete použít volbu OUTEST= s volbou RSQUARE pro získání výstupní datové sady, která obsahuje odhady parametrů a další statistiky modelu, jako je například hodnota R-kvadrátu. pro tento příklad tedy nemusíte použít příkaz ODS OUTPUT pro nasměrování tabulky FitStatistics do datové sady. Místo toho můžete statistiku získat následujícím způsobem:

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

odsoutput4

Shrnutí

Příkaz ODS OUTPUT umožňuje vytvořit datovou sadu, která obsahuje libovolnou statistiku vytvořenou procedurou SAS. Pomocí příkazu ODS OUTPUT můžete zachytit statistiku a později ji použít ve svém programu.

Štítky Začínáme

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.