R. Becker
Oftmals wünscht man sich eine sehr spezielle oder moderne Darstellungs- oder Analyseform für seine Daten und muß sich dann fragen, wieso diese Art der Auswertung in den vorhandenen Programmpaketen nicht enthalten ist. Falls der Wunsch danach nur groß genug ist, kann man versuchen, ein entsprechendes SAS-Programm zu schreiben (z.B. mit ANNOTATE). SAS besitzt dazu fast immer die ausreichenden Programmiermöglichkeiten. Da das Rad nicht immer neu erfunden werden muß, werden solche von Benutzern geschriebenen Programme auf einem zentralen Server gesammelt und als SAS-Makros zur Verfügung gestellt. In folgendem Artikel werden einige dieser Makros, insbesondere zu SAS/GRAPH, vorgestellt.
SAS-Makros können von sehr einfachen Programmen bis hin zu komplexen und umfangreichen SAS-Programmen alles enthalten, was SAS zu bieten hat. Makros mit einer Länge von mehreren hundert Zeilen sind dabei keine Seltenheit. SAS bietet jedem Benutzer die Möglichkeit eigene Makros zu erstellen und zu verwalten. Zusätzlich können Makros allen Benutzern zugänglich gemacht werden. Auf unserem Zentralrechner stehen die für alle Benutzer nutzbaren Makros im Unterverzeichnis "SAS_AUTOS" im SAS-Programm-Verzeichnis. SAS-Makros besitzen, wie alle anderen SAS- Programme auch, die Endung '.SAS'.
Im allgemeinen hat der Aufruf in SAS folgende Form:
%makroname(parameter)Der Aufruf des Makros wird also nicht mit einem Semikolon abgeschlossen. Welche Parameter in welcher Form angegeben werden können, entnimmt man am besten dem Makro selbst. Dazu findet man am Anfang eines Makros üblicherweise eine genaue Beschreibung. Grundsätzlich ist es sinnvoll, ein Makro vor der ersten Nutzung durchzuschauen. Dazu kann man das Makro mit dem Kommando:
INCLUDE ':systems:sas:sas_autos:makroname.sas'ins SAS-Programmeditor-Fenster laden.
Beispiel:
Das Boxplot-Makro kann einfach aufgerufen werden mit:
%BOXPLOT(DATA=dateiname, VAR=variable, CLASS=gruppen)Die Angabe von weiteren Parametern ist möglich. Genauere Angaben erhält man im Makro-Text selbst, welchen man mit o.a. INCLUDE-Kommando einsehen kann.
Zur Zeit findet man (neben einigen von SAS mitgelieferten Programmen) im Verzeichnis ':systems:sas:sas_autos' folgende Makros:
BIPLOT | plottet Beobachtungen und Variablen in einem Koordinatensystem |
BOXANNO | erzeugt Boxplots an den Achsen von 2- bzw. 3-dim. Scatterplots |
BOXPLOT | zeichnet Boxplots für Gruppen von Beobachtungen, s.o. |
CONTOUR | erzeugt Elipsen um 2-dim. Punktwolken |
CORRESP | führt eine Korrespondenz-Analyse durch |
DENSITY | berechnet einen Kern-Dichteschätzer mit Normal-Verteilungs-Kern |
DOTPLOT | erzeugt einen "Dot-Chart" |
LOWESS | berechnet eine robuste, lokal gewichtete Scatter-Plot-Glättung |
NQPLOT | erstellt einen Normal-QQP (Quantile-Quantile-Plot) |
OUTLIER | 'entlarvt' multivariate Ausreisser |
PARTIAL | erzeugt Residuen-Plots zu partieller Regression |
SCATMAT | erzeugt eine Scatter-Plot-Matrix |
STARS | zeichnet bei multivariaten Daten für jede Beobachtung ein Stern-Diagramm |
SYMPLOT | erzeugt verschiedene Plots zur Überprüfung der Symmetrieeigenschaft von Verteilungen |
TWOWAY | graphische Darstellung einer zweifaktoriellen Varianzanalyse mit einer Beobachtung pro Zelle (nach Tukey) |
Eine aktuelle Übersicht über die vorhandenen SAS-Makros erhalten Sie mit dem Zentralrechner-Kommando:
INFO SASMAKROSAlle hier vorgestellten Makros entstammen dem Buch von Michael Friendly [3]. Diese und weitere nützliche SAS-Makros findet man auf dem FTP-Server:
'JSE.STAT.NCSU.EDU'im Verzeichnis 'SOFTWARE/SAS'. Allgemeine Informationen zu SAS-Makros findet man in [1] und [2].
Literatur:
[1] SAS Language, Reference, Version 6 - S. 967ff [2] SAS Guide to Macro Processing, Version 6, Second Edition [3] M. Friendly, 'SAS System for Statistical Graphics', 1991, SAS Institute Inc., Cary, NC, USA [4] Hartung/Elpelt, 'Multivariate Statistik', 1986, Oldenbourg-Verlag, Kapitel 9
Ansprechpartner im URZ: Rainer Becker Zimmer Ei: eO-106 CEO-Mail: becker Tel.: -351 PMail: rainer.becker Ingo Kemmerzell Zimmer In: AS-301 CEO-Mail: kemmerzell Tel.: -249 PMail: ingo.kemmerzell