ODS - Urz
Transcription
ODS - Urz
Warum ODS ? Das Output-Delivery System (ODS) SAS Version 8.2 ODS .. AUF ! SAS Prozedur ! Heribert Ramroth DZFA - Heidelberg ODS .. ZU ! 1 Warum ODS ? 2 Ausgabemöglichkeiten (=Ziele) für SAS-OUTPUT: Schneller Überblick über Resultate? NEIN! Traditionelles Output-Fenster • Aufbereitung von Resultaten! • Präsentation bei Kooperationspartnern (insbesondere Nicht-SAS-Usern) • Erzeugung von HTML- / RTF-Dateien (DOC) • Erzeugung von Output-Dateien • ODS LISTING • ODS HTML • ODS RTF • ODS OUTPUT • ODS PRINTER • ODS PDF • weitere in Vorbereitung (XML, LaTex,..) 3 ODS LISTING 4 ODS LISTING: keine Unbekannte Ausgabe bisher (SAS-Version 6.12): • OUTPUT-Fenster, • speichern als lst-Datei ab SAS-Version 8: • OUTPUT-Fenster: ODS LISTING (voreingestellt!) • speichern als lst-Datei Ausgabe außerdem im RESULTS-Fenster (unabhängig vom Ausgabeziel!) 5 6 1 ODS Allgemein Jedes Ausgabeziel muss i.a. geöffnet und geschlossen werden: ODS Ausgabeziel ; SAS-Prozedur(en); ODS Ausgabeziel CLOSE; 7 ODS HTML Beispiel: ODS LISTING; proc contents data=LBW; run; ODS LISTING CLOSE; 8 ODS HTML Anlegen einer html-Datei ODS HTML BODY="Pfad\Dateiname.html"; SAS-Prozedur; ODS HTML CLOSE; ODS HTML BODY="D:\htmltest.html"; proc contents data=LBW; run; ODS HTML CLOSE; oder FILENAME name="Pfad\Dateiname.html"; ODS HTML BODY=name; SAS-Prozedur; ODS HTML CLOSE; 9 10 11 12 2 ODS RTF ODS HTML - Ergebnis • Anlegen einer „ .html-Datei“ entsprechend BODY="Pfad\Dateiname.html"; ODS RTF FILE="Pfad\Dateiname.rtf"; title "Demonstration"; SAS-Prozedur; ODS RTF CLOSE; • Zugriff über oder FILENAME name "Pfad\Dateiname.rtf"; ODS RTF FILE=name; – Results-Fenster – Results-Viewer Fenster – Internet Browser ... usw.; 13 14 ODS RTF - Ergebnis ODS RTF - Beispiel ODS RTF FILE="D:\rtftest.rtf"; proc contents data=LBW; title "Demonstration"; run; ODS RTF CLOSE; 15 16 ODS RTF - Ergebnis • Anlegen einer „ .rtf-Datei“ entsprechend FILE="Pfad\Dateiname.rtf"; • Zugriff über – Results-Fenster – Results-Viewer Fenster – Microsoft Word 17 18 3 ODS RTF- Optionen: ODS RTF - Beispiel 2 • BODYTITLE – Titel nicht in Kopfzeile sondern im Textteil • STARTPAGE=NO – verhindert Seitenumbrüche bei RTF und PRINTER Allgemein: • ODS NOPTITLE; („ The Contents Procedure “ etc.) rückgängig durch: ODS PTITLE; • sinnvolle Einstellungen : Papierformat A4 (Print Setup bzw. Page Setup) ODS NOPTITLE; ODS RTF FILE="D:\rtftest.rtf" BODYTITLE STARTPAGE=NO; proc contents data=LBW; title "Demonstration"; run; ODS RTF CLOSE; 19 20 Exploring ODS Output - Beispiele Exploring ODS Output ODS TRACE ON; title "Demonstration"; proc contents data=LBW; • Informationen bzgl. des Outputs • Outputobjekte haben Namen ODS TRACE ON; SAS-Prozedur oder Data-Step; Informationen im log-Fenster proc phreg data =LBW; Time*Low(0)= LWT Smoke HT UI ODS TRACE ON / LISTING; Infos eingeordnet im listing-output ODS TRACE OFF; /ties=discrete; run; ODS TRACE OFF; 21 22 23 24 Output Added: ------------Name: Attributes Label: Attributes Template: Base.Contents .Attributes Path: Contents .DataSet.Attributes ------------Output Added: ------------Name: EngineHost Label: Engine/Host Information Template: Base.Contents .EngineHost Path: Contents .DataSet.EngineHost ------------Output Added: ------------Name: VariablesAlpha Label: Variables Template: Base.Contents .Variables Path: Contents .DataSet.VariablesAlpha 4 Selektion von ODS Output Selektion von ODS Output SELECT / EXCLUDE: ODS SELECT ParameterEstimates; proc phreg data=LBW; model Time*Low(0)= LWT / ties=discrete; strata Age; proc phreg data=LBW; model Time*Low(0)= Smoke/ties=discrete; strata Age; run; %macro ph(xvar); ODS SELECT ParameterEstimates; proc phreg data=LBW; model Time*Low(0)=&xvar./ ties=discrete; run; %mend ph; %ph(LWT); %ph(Smoke); 25 26 Selektion z.B. nur in RTF oder HTML - 1.) Selektion für alle Variablen gleich - Selektion von ODS Output Alternativ: ODS SELECT ParameterEstimates(PERSIST); gilt bis Ende der SAS-Sitzung, bzw. wird aufgehoben mit ODS SELECT ALL; analog: ODS EXCLUDE; ODS EXCLUDE NONE; ODS RTF FILE="D:\RTF_Select1.rtf" BODYTITLE; ODS RTF SELECT Quantiles; title1 "LISTING vollständig"; title2 "RTF SELECT"; proc univariate data=LBW; var Age LWT; run; ODS RTF CLOSE; ODS RTF SELECT ALL; 27 28 Selektion z.B. nur in RTF oder HTML - 2.) Selektion nicht für alle Variablen gleich - Selektion z.B. nur in RTF oder HTML - 3.) Selektion auf verschiedene Arten ODS RTF FILE="D:\RTF_Select3.rtf" BODYTITLE; ODS RTF FILE="D:\RTF_Select2.rtf" BODYTITLE; ODS RTF SELECT Quantiles#1 ExtremeObs#2; title1 "LISTING vollständig"; title2 "RTF SELECT"; proc univariate data=LBW; var Age LWT; run; ODS RTF CLOSE; ODS RTF SELECT ALL; 29 ODS RTF SELECT univariate.age.quantiles "LWT"."Extreme Observations"; title1 "LISTING vollständig"; title2 "RTF SELECT"; proc univariate data=LBW; var Age LWT; run; ODS RTF CLOSE; 30 ODS RTF SELECT ALL; 5 Selektion -Wenn man die Übersicht verloren hat! - Weiterverarbeitung: ODS Output - Datasets • ODS RTF SHOW; früher: - Zugriff nicht auf Output aller SAS-Prozeduren möglich (Option: OUT=) - Inhalt des Output-Fensters und des ausgegebenen Datasets nicht unbedingt gleich Welche RTF-Einschränkungen sind aktuell eingestellt • ODS SHOW; jetzt: Welche Einschränkungen sind insgesamt aktuell eingestellt - Zugriff auf (fast) gesamten Output möglich - Aufteilung des Outputs in Objekte (s.o.) 31 ODS Output - Datasets: 3 Möglichkeiten ODS Output - Datasets ODS TRACE -> liefert • Namen der Outputobjekte • LABEL der Outputobjekte im RESULTSFenster Generierung von Datasets aufgrund dieser Outputobjekte ODS OUTPUT ...; SAS-Prozedur oder Data-Step; ODS OUTPUT CLOSE; 33 ParmEst 32 ODS OUTPUT ParameterEstimates=ParmEst; oder ODS OUTPUT "Parameter Estimates"=ParmEst; proc phreg data=LBW; model model Time*Low(0)= LWT /ties=discrete RISKLIMITS; run; (möglich, aber ungünstig: ODS OUTPUT ParameterEstimates;) 34 ODS Output (Datasets-Optionen) Data1 Dataset Optionen mit OUTPUT Data Sets: ODS OUTPUT "Parameter Estimates"=ParmEst (KEEP= HazardRatio HRLowerCL HRUpperCL RENAME= (HazardRatio=OddsRatio) DROP= ProbChisq); LABEL 35 36 6 Anwendungs-Beispiel für die Weiterverarbeitung von ODS OUTPUT Datasets Erstellen einer Ergebnistabelle mit den Ergebnissen aus 4 Modellen im RTF-Format: unter Verwendung von: • • • • 1.Möglichkeit: • Berechnung von bivariaten Modellen für verschiedene Variablen ODS SELECT ODS OUTPUT eigener und interner Macro-Variablen ODS RTF • optische Aufbereitung der Konfidenzintervalle • Speicherung der Einzelergebnisse in eigener Datei • Zusammenfassung aller Einzelergebnisse in einer Ausgabetabelle • Ausgabe der Ergebnisstabelle im RTF-Format 37 38 Einzelergebnis / Konfidenzint. / Einzelausgabe „Aufbereiten“ des Konfidenzintervalls %macro ph(xvar, datout ); ODS SELECT ParameterEstimates; ODS OUTPUT ParameterEstimates=ParmEst; proc phreg data =LBW; Time*Low(0)=&xvar ./ties=discrete rl; %PParmKI ; *(Macro siehe unten); data &datout.; set Parmest; run; %mend ph; %macro PParmKI; data ParmEst; set ParmEst (keep= Variable HazardRatio HRLowerCL HRUpperCL ProbChisq Label); format HazardRatio HRLowerCL HRUpperCL 5.2; ki=trim(trim("("||left(round(HRLowerCL,.01))) ||",")||" "||left(round(HRUpperCL,.01)||")"); %ph(LWT, LWT); (weitere Variablen: Smoke, UI, HT,etc.)39 Ergebnisse aus 4 Modellen in einer Datei %ph(LWT, LWT); %ph(Smoke, Smoke); %ph(UI, UI); %ph(HI, HI); LABEL HazardRatio="Odds Ratio" ki = "95% KI"; %mend PParmKI; 40 Beispiel: Bivariate Analysen Ergebnis-Ausgabe im RTF-Format Prob Odds Variable Chisq Ratio data all; set LWT Smoke UI HI; ODS RTF FILE="D:\all.rtf" BODYTITLE; proc print data=all noobs label; run; ODS RTF CLOSE; 41 LWT Smo HT UI 0.0367 0.0379 0.0944 0.0272 0.99 1.99 2.86 2.59 95% Low Conf. Limit 0.97 1.04 0.84 1.11 95% Upp. Conf. Limit 1.00 3.82 9.76 6.04 95% KI (0.97, 1) (1.04, 3.82) (0.84, 9.76) (1.11, 6.04) 42 7 Beispiel (Optionen: Match_All, Persist) 2. Möglichkeit: Erstellen einer Ergebnistabelle mit den Ergebnissen aus 4 Modellen im RTF-Format: • keine Speicherung der Einzelergebnisse in eigenen Dateien, sondern • Erstellen der Ergebnistabelle mit den ODS-OUTPUT Optionen MATCH_ALL (unter Verwendung interner Macro-Variablen) und PERSIST options symbolgen; ODS OUTPUT "Parameter Estimates" (Match_All=OddsDS Persist=Proc)=ParmEst; ODS SELECT ParameterEstimates PERSIST; %macro ph(xvar); proc phreg data=LBW; Time*Low(0)=&xvar./ ties=discrete; data AllOdds; set &OddsDs; run; %mend ph; %ph(LWT); %ph(Smoke); .... ODS OUTPUT CLOSE; proc print data=AllOdds; run; 43 Beispiel (Optionen / Log-Fenster) %ph(LWT); SYMBOLGEN: Macro variable XVAR resolves to LWT NOTE: The data set WORK.PARMEST has 1 observations and 9 variables. SYMBOLGEN: Macro variable ODDSDS resolves to PARMEST NOTE: There were 1 observations read from the data set WORK.PARMEST. NOTE: The data set WORK.ALLODDS has 1 observations and 9 variables. %ph(Smoke); SYMBOLGEN: Macro variable XVAR resolves to Smoke NOTE: The data set WORK.PARMEST1 has 1 observations and 9 variables. SYMBOLGEN: Macro variable ODDSDS resolves to PARMEST PARMEST1 NOTE: There were 1 observations read from the data set WORK.PARMEST. NOTE: There were 1 observations read from the data set WORK.PARMEST1. NOTE: The data set WORK.ALLODDS has 2 observations and 9 variables. ..... 44 ODS Ausblick 1: Modifying ODS Output Style Definitions Modifying Output Fonts Modifying Output Structure Modifying Output Colors and Graphics Special Cases: PROCEDURES: REPORT, TABULATE and PRINT 45 ODS Ausblick 2: Ausgabe von Graphiken in RTFDateien 46 ODS Ausblick 3: Erstellung von PostScript-Dateien ODS RTF FILE="D:\JPEG_Test.rtf"; GOPTIONS DEVICE=JPEG; *oder SASEMF oder PNG; proc gchart data=LBW; hbar age ; run; ODS RTF CLOSE; 47 ODS PRINTER FILE="D:\PS_Test.ps"; proc gchart data=LBW; hbar age ; run; ODS PRINTER CLOSE; 48 8