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