SAS FOR WINDOWS - · PDF file→ SAS/IML ° interaktive Matrixsprache in der...

93
SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau SAS FOR WINDOWS FÜR GARTENBAUER UND BIOLOGEN 4. Auflage Januar 1998 1 A. Brandt; F. Bretz; W. Grüneberg; D. Hauschke; L. Hothorn; H.-F. Koch; M. Neuhäuser; D. Seidel; M. Weichert Lehrgebiet Bioinformatik FB Gartenbau Prof. Dr. L. Hothorn Herrenhäuser Str. 2 (CIP-Pool) 30419 Hannover !(0511)762 4998 e-mail: [email protected] 1 Verbesserungsvorschläge werden erbeten an Frau Visser, !4998

Transcript of SAS FOR WINDOWS - · PDF file→ SAS/IML ° interaktive Matrixsprache in der...

Page 1: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

SAS FOR WINDOWS

FÜR GARTENBAUER UND BIOLOGEN

4. Auflage Januar 1998 1 A. Brandt; F. Bretz; W. Grüneberg; D. Hauschke; L. Hothorn; H.-F. Koch; M. Neuhäuser; D. Seidel; M. Weichert

Lehrgebiet Bioinformatik FB Gartenbau

Prof. Dr. L. Hothorn Herrenhäuser Str. 2 (CIP-Pool)

30419 Hannover !(0511)762 4998

e-mail: [email protected]

1 Verbesserungsvorschläge werden erbeten an Frau Visser, !4998

Page 2: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

0. Gliederung 1 Einleitung 1. 1 Was ist SAS? 1. 2 Starten/Beenden von SAS/PC for Windows am CIP-Pool des FB Gartenbau 1. 3 Derzeit verfügbare Optionen in SAS/PC for Windows am CIP Pool 2 Grundlagen 2. 1 SAS Display Manager System 2. 1.1 Das Hauptfenster: PE 2. 1.2 Die Toolbox 2. 1.3 Funktionstasten 2. 2 Die SAS Programmsprache 3 Datenerfassung 3. 1 SAS-Dateien 3. 1. 1 Namen von SAS-Dateien 3. 1. 2 Speichern von SAS-Dateien auf Festplatte 3. 2 Datenerfassung 3. 2. 1 Datenerfassung im DATA-Schritt 3. 2. 2 Datenerfassung mit PROC FSEDIT 3. 2. 3 Datumseingabe mit FORMAT und INFORMAT 3. 2 .4 Zusammenfassende Empfehlung zur Datenerfassung 4 Arbeiten mit SAS-Dateien 4. 1 SAS-Dateien und Prozeduren 4. 2 Modifizierung von SAS-Dateien 4. 2. 1 Erstellung neuer Variablen 4. 2. 2 Modifizierung von Variablen 4. 2. 3 Auswahl von Untergruppen (Beobachtungen) einer Datei 4. 2. 4 Erstellen einer Gruppierungsvariablen 4. 2. 5 Zusammenfügen mehrerer SAS-Dateien 4. 3 Schleifen 4. 4 Umwandlung von Spalten in Zeilenvariablen PROC TRANSPOSE 4. 5 Titel- und Fußnoten 4. 6 Ausführlichere Bezeichnung von Variablen 4. 7 Ausführliche Bezeichnung ordinaler Datenwerte 4. 8 Herausschreiben von Datenfiles 4. 9 Ausgabe von SAS-Grafiken unter Windows 4.10 DLL mit EXCEL 4. 10. 1 Allgemeines zum DDL 4. 10. 2 Datenimport von EXCEL 4. 10. 2 Datenexport zu EXCEL 4.11 Einfacher Import von Standarddatenformaten mit der Option „Import“ 4.12 Einfacher Export im EXCEL-Format 5 SAS-Prozeduren und Funktionen 5. 1 Wichtige SAS-Funktionen 5. 2 Eine Auswahl grundlegender SAS-Prozeduren 5. 2. 1 PROC FORMAT 5. 2. 2 PROC SORT 5. 2. 3 PROC RANK 5. 2. 4 PROC STANDARD 5. 2. 5 PROC PRINT 5. 2. 6 PROC (G)PLOT und (G)CHART 5. 2. 7 PROC OUTPUT 5. 2. 8 PROC TEMPLATE 5. 2. 9 PROC TABULATE

Page 3: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

5. 3 Ein Auswahl von Prozeduren für einfache statistische Verfahren 5. 3. 1 PROC FREQ 5. 3. 2 PROC MEANS 5. 3. 4 PROC UNIVARIATE 5. 4 Ein Auswahl von Prozeduren zur statistischen Analyse 5. 4. 1 Bivariate Zusammenhänge: Korrelation und Assoziation mit PROC CORR 5. 4. 2 Zweistichprobentests 5. 4. 2. 1 Parametrisch, unabhängige Stichproben: PROC TTEST 5. 4. 2. 2 Parametrisch, verbundenes Testproblem: PROC UNIVARIATE 5. 4. 2. 3 Nichtparametrisch, unabhängige Stichproben: PROC NPAR1WAY 5. 4. 2. 4 Nichtparametrisch, verbundenes Testproblem: PROC UNIVARIATE 5. 4. 2. 5 Dichotome Daten: PROC FREQ 5. 4. 3 Varianzanalyse im verallgemeinerten linearen Modell (PROC GLM) 5. 4. 3. 1 Einfaktorielle Varianzanalyse 5. 4. 3. 2 Zweifaktorielle Varianzanalyse ohne Wiederholung - einfaktorielle Blockanlage 5. 4. 3. 3 Zweifaktorielle Varianzanalyse mit Wiederholung und Blockbildung - zweifaktorielle Blockanlage 5. 4. 3. 4 Dreifaktorielle Varianzanalyse mit Blockbildung sowie kreuz- und hierarchischer Klassifikation 5. 4. 3. 5 Multiple Mittelwertsvergleiche 5. 4. 4 Kovarianzanalyse 5. 4. 5 Regressionsmodelle in GLM 5. 4. 6 PROC REG 5. 4. 6. 1 Lineare Regressionsanalyse 5. 4. 6. 2 Quasilineare Regressionsanalyse 5. 4. 6. 3 Multiple Regressionsanalyse 5. 4. 7 Gemischtes lineares Modell 5. 4. 7. 1 Einleitung 5. 4. 7. 2 Modell II - Varianzkomponentenschätzung 5. 4. 7. 3 Modell III 5. 4. 7. 3. 1 Gemischtes zweifaktorielles Design 5. 4. 7. 3. 2 Split - Plot Design 5. 4. 7. 3. 3 Repeated Measurements 5. 4. 8 PROC NLIN 5. 4 .9 PROC NESTED 5.5 Ausgewählte multivariate Analysenmethoden mit SAS 5.5.1. Einführung 5.5.2. Clusteranalysen 5.5.3 Hauptkomponentenanalyse 6. Insight 7. Macroprogrammierung 7.1 Einleitung 7.2 Der &PUT Befehl 7.3 Der Umgang mit Macrovariablen 7.4 Die Macrodefinition 7.5. Kontrollstrukturen 7.6. Interaktive Benutzerfenster 7.7. Beispielprogramm 8. Die interaktive Matrixsprache IML 8.1 Einleitung 8.2 Sprache 8.2.1 Programmstrukturen 8.2.2 Definition und Initialisierung von Matrizen 8.2.3 Operatoren 8.2.4 Module 8.3 Anweisungen und Kontrollstrukturen

Page 4: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

8.3.1 Einfache Anweisungen 8.3.2 bedingte Anweisungen und Schleifen 8.4. Arbeiten mit SAS-Dateien und externen Files 8.4.1 SAS-Dasteien 8.4.2 Externe Files 8.5 Standardmodule und - funktionen 8.5.1 Base SAS Funktionen 8.5.2 IML Built-in-Funktionen und Call Routinen 8.5.3 Statements zur Ein- und Ausgabe von Daten 9. Literatur 10. Einige Tips für Anfänger 11. Fehlermeldungen

Page 5: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

1 Einleitung 1. 1 Was ist SAS? Ursprünglich als reines Statistikprogrammsystem (1975-1980) konzipiert (SAS = Statistical Analysis System), stellt es jetzt ein Universalsystem für die Datenverwaltung und Datenauswertung auf verschiedenen Plattformen dar:

PC Großrechner Workstation DOS MVS/TSO UNIX OS/2 VM/CMS MOTFI

Windows 3.1. 1. 2 Starten/Beenden von SAS/PC for Windows am CIP-Pool des FB Gartenbau Einlogen in das Netz Windows Starten Aufruf von SAS : Aktivieren des Programmsymbols im Windows- Program-Manager (Doppelklick) Beenden von SAS: mit File/Exit SAS Installation im Netzwerk und Aufteilung von Dateien. Durch das Starten von SAS hat man den Eindruck einer lokalen Verfügbarkeit. Auf dem Laufwerk C:\ ist ein Unterverzeichnis SAS vorhanden. In dessen Wurzel steht die Datei config.sas, die für Nutzer tabu ist. Desweiteren existieren die Unterverzeichnisse C:\sas\sasuser und \work (s.u.). Auf dem logischen Laufwerk w sind die Unterverzeichnisse für die Beispieldatensätze vorhanden. 1. 3 Derzeit verfügbare Optionen in SAS/PC for Windows am CIP Pool → SAS/BASE ° das Basissystem mit den Sprachelementen, Datenverwaltungsfunktionen, Utility- und deskriptiven Statistikprozeduren → SAS/STAT ° das Statistiksystem mit umfangreichen Anwendungsroutinen, z.B. zur Varianzanalyse → SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen Diese Dokumentation orientiert konsequent auf eine Menue-gestützte Mausbedienung in der üblichen Windows-Art. Datenmanipulationen werden nur knapp dargestellt, es wird von einer Standardform der Daten ausgegangen, die bereits mit anderer software erstellt wurde. Im Mittelpunkt dieses Heftes stehen ausgewählte statistische Verfahren, die für Gartenbau- und Biologiestudenten relevant sind und entsprechende Beispiele. Hier wird nur eine ausgewählte Untermenge von SAS-Anweisungen dargestellt. Andere Möglichkeiten sind häufig möglich, hierzu ist die Gesamtdokumentation von SAS zu nutzen. Hier benutzte Syntax: < > optional PROC SORT <DESCEND>; Großbuchst., fett SAS Anweisungen PROC PRINT; Arialschriftsatz Menueanweisungen Exit SAS Kasten Beispiel 2. 1 SAS Display Manager System Das SAS-Fenstersystem besteht aus einer Vielzahl nützlicher Fenster. Es existieren drei Basistypen: PROGRAM EDITOR (PE) OUTPUT LOG Diese können optisch verschieden angeordnet werden, Windows-Cascade wird empfohlen. Durch anklicken können die Fenster angewählt werden. Desweiteren existieren andere spezielle Fenster: MENU Menuegesteuerte Prozedureingabe DIR Inhaltsangabe von SAS-Dateien FILENAME listet referenzierte Dateien FOOTNOTE Eingabe von Fußnoten TITLE Eingabe von Titeln NOTEPAD Notizen und Nachrichten

Page 6: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

HELP Hilfefenster OPTIONS Optionenfenster KEYS PF-Tastenbelegung LIBNAME SAS-Library-Referenzen VAR Informationen über SAS-Variablen Im PE-Fenster werden die SAS-Programme editiert, durch File/Open/Read file geladen oder mit Locals/submit gestartet. Ein Zurückholen des Quelltextes gestarteter Programme ist mit Locals/Recall text leicht möglich. Im OUTPUT-Fenster sind die Ergebnisse dargestellt, im LOG-Fenster der Bearbeitungsablauf sowie mögliche Fehlermeldungen. Mit File/save as können die Inhalte dieser Fenster (oder markierte Teile) als Dateien in andere Verzeichnisse kopiert werden und dort z.B. mit WINWORD weiterverarbeitet werden. Regelmäßig sollten Teile oder der ganze Inhalt der Fenster gelöscht werden, z.B. mit Edit/clear text , um die Übersicht zu bewahren. 2.1.1 Das Hauptfenster: PE

File Öffnen, Speichern und Drucken von Programmfiles. Verlassen von SAS. Edit Ein Windows-typischer Zeileneditor Beispiel:

00001 DATA TEST; 00002 INPUT X Y Z; 00003 CARDS; 00004 1 4 5 00005 3 7 9 00006 6 9 10 00007 ; 00008 PROC MEANS DATA=TEST; 00009 RUN; " Zeilennummern

Locals Starten eines im Editor befindlichen SAS Programms und Wiederherstellen des Programmlistings

Page 7: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Globals Verschiedene Aspekte, hier im wesentlichen zum Aufruf von INSIGHT zu benutzen. In der derzeitigen Konfiguration sind am CIP-Pool nur aktiviert: Program editor Log Output Output manager Invoke application SAS/AF Data analysis INSIGHT Spreadsheet Data management alle Optionen Desktop alle Optionen Command alle Optionen Global options außer graphics Help Übliche Hilfetexte sind unter diesem Menuepunkt verfügbar. 2.1.2 Die Toolbox Mit Options/Edit Toolbox kann man sich eine Auswahl an Icons für häufig benutzte Befehle definieren. 2.1.3 Funktionstasten Werden hier nicht dokumentiert, es wird auf eine konsequente Mausbedienung orientiert. 2.2 Die SAS Programmsprache Ein SAS Programm gliedert sich in folgende drei aufeinanderfolgende Anweisungentypen Globale Anweisungen Dateneingabe DATA step Verarbeitungsschritte PROC steps Beispiel: GOPTIONS DEVICE=win; ps=60 ls=78; DATA neu; INPUT id jahr sorte $ ertrag; CARDS; 1 92 mietze 12.3 1 92 senga 14.1 ... ; PROC PRINT; RUN; Syntax einer SAS-Anweisung Schlüsselwort Argument(e) [/Option(en)] ; Beispiel: PROC SORT DATA=baum /DESCENDING; Gemischte Groß/Kleinschreibung ist möglich. Beachten Sie, daß jede SAS-Anweisung mit einem Semikolon ; abgeschlossen werden muß! In einer Zeile können mehrere Anweisungen stehen und an einer beliebigen Stelle beginnen und enden, nutzten Sie aber eine hierarchische Darstellung zur Übersichtlichkeit. Anweisungen können über mehrere Zeilen fortgesetzt werden. In den statistischen Verfahren sind Model-Anweisungen wichtig, z.B. PROC GLM; MODEL Y = X A X∗ A; RUN; Globale Anweisungen: Anweisungen, die überall im SAS-Programm aufgeführt werden können; Sie bleiben gültig bis sie wieder überschrieben werden, z. B. Titel und Fußnoten werden in TITLE- und FOOTNOTE-Anweisungen vereinbart. OPTIONS PS=60 LS=78; TITLE[n] ‘text’ FOOTNOTE[n] ‘text’ GOPTIONS DEVICE=HPLJ*; für HP Laserjet III/IVplus Drucker (lokal) GOPTIONS TARGET= winprtm; Standard-Windows Drucker s/w GOPTIONS TARGET=winprtc; Standard-Windows Drucker color GOPTIONS DEVICE=cgmmwwb CGM-Format für Graphic stream file Kommentare sind mit /*Kommentar*/ oder *Kommentar; einfügbar. Inaktivieren einer Anweisung ist leicht durch ein Voranstellen des Zeichens * möglich.

Page 8: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

3 Datenerfassung 3. 1 SAS-Dateien Unter SAS können nur SAS-Dateien verarbeitet werden, d. h. Ihre Roh-Daten müssen in eine SAS-Datei eingelesen werden. In SAS-Dateien werden: • Variablennamen • [Variablenlabels] bis zu 40 Zeichen lange Variablenerläuterungen • [Datenformate] spezielle Eingabe- und Ausgabedefinitionen für Variablenwerte • Daten gespeichert. Daten liegen i.d.R. in Tabellenform (flat file) vor, z. B. die Datei appel Sorte Jahr Ertrag Höhe Sens1 Sens2 Golden 93 83 145 0 2 Golden 94 89 155 2 3 Star 92 67 133 3 2 ..... ..... ..... ..... Dabei stellen dar: • SAS Datei appel.sd2 • Variablenname Sorte • Variable schraffiert für die Variable Höhe • Beobachtung (Fall, case) doppelt umrandet für Golden.... • Datenwert fett den Wert 2 für die Variable Sens2 SAS-Namen: SAS-Namen sind vom Benutzer frei wählbare Bezeichnungen für Variablen und SAS-Dateien. - SAS-Namen dürfen maximal 8 Zeichen lang sein - sie müssen mit einem Buchstaben beginnen - sie dürfen (außer _) keine Sonderzeichen enthalten ($ ? ∗ - ...)z. B.:VARIE_4, SEN1 3. 1. 1 Namen von SAS-Dateien SAS-Datei-Namen dürfen maximal 8 Zeichen lang sein und müssen mit einem Buchstaben beginnen. SAS-Dateien werden standardmäßig auf einem Arbeitsbereich auf der Festplatte gespeichert. Es ist ein temporärer Arbeitsbereich, d. h. beim Beenden der SAS-Sitzung wird dieser Bereich gelöscht (Work-Bereich). Temporäre SAS-Dateien heißen intern deshalb WORK.name. 3. 1. 2 Speichern von SAS-Dateien auf Festplatte Wir sprechen hier von permanenten SAS-Dateien. Diese dürfen nicht auf den WORK-Bereich gespeichert werden. Wir vereinbaren deshalb einen anderen Speicherbereich mit der LIBNAME-Anweisung: LIBNAME refcode ‘Laufwerk: \Verzeichnis’ z. B. LIBNAME disk ’D:\’; im Hauptverzeichnis auf Laufwerk D. refcode (im Beispiel disk) übernimmt jetzt die Aufgabe von WORK. Man benutzt jetzt: refcode.name als Dateinamen. Für name gelten obige Konventionen. Also z. B. bei LIBNAME disk ’D:\’; z. B. disk.variety statt variety Der mit LIBNAME vereinbarte refcode bleibt für die aktuelle SAS-Sitzung erhalten. Erst wenn Sie die SAS-Sitzung beenden, verliert er seine Gültigkeit. Er muß bei der nächsten SAS-Sitzung neu vereinbart werden. Die permanenten SAS-Dateien bleiben auf der Festplatte erhalten. Sie haben dort den DOS-Dateinamen namen.SSD Man sieht: der refcode wird nicht gespeichert. Er ist somit ein freier Parameter. Der Zugriff auf diese permanenten SAS Datei erfolgt mittels SET Anweisung, z.B.

LIBNAME disk ‘D:\’; DATA tabneu; SET disk.variety; RUN; PROC PRINT DATA=tabneu; RUN;

Page 9: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

3. 2 Datenerfassung Es existieren drei Möglichkeiten: • im DATA-Schritt dann müssen die Rohdaten direkt ins PE-Fenster eingeben werden;

anschließend muß ein DATA-Schritt ausgeführt werden • Übernahme der Rohdaten aus einer bereits vorhandenen Datei, Einfügungen mittels INFILE/INCLUDE • mit PROC FSEDIT hiermit können die Rohdaten direkt in eine SAS-Datei eingeben werden. - Für jede Beobachtung liegt ein Eingabescreen vor - Für jede Variable gibt es ein Eingabefeld 3. 2. 1 Datenerfassung im DATA-Schritt Der DATA-Schritt beginnt mit der DATA-Anweisung. Syntax: DATA name; name ist der Name der zu erzeugenden SAS-Datei, z. B.: VARIETY die Datei ist temporär: WORK.VARIETY mit DATA VARIETY die Datei ist permanent mit LIBNAME refcode’D:’; z. B. LIBNAME DISK’D:\’; DATA DISK.VARIETY; → die Datei heißt D:\VARIETY.SSD Man benennt die Variablen und ihre Reihenfolge: INPUT-Anweisung In der INPUT-Anweisung benennt man die Variablen und beschreibt den Rohdatenteil z. B.: INPUT SORTE JAHR ERTRAG; Alphanumerische oder klassifizierteVariable werden mit einem nachfolgenden $-Zeichen gekennzeichnet! CARDS-Anweisung Syntax: CARDS; Es teilt dem SAS-System mit, daß ab der nächsten Zeile Rohdaten folgen. Rohdaten Die Datenwerte im Rohdatenblock stehen in der gleichen Reihenfolge wie in der INPUT- Anweisung. (siehe Beispiel NAMEN-Datei) Der Rohdatenblock wird mit einem Semikolon ; als letzte Zeile abgeschlossen.

DATA SORTEN; INPUT SORT $ 1-10 HERK4 $12 JAHR 14-15 ERTRAG 17-18; CARDS; GOLDEN I 68 24 ; RUN;

Es wird eine temporäre SAS-Datei SORTEN erzeugt. Die INFILE-Anweisung wird verwendet, wenn man die Rohdaten schon in einer Datei stehen hat. Sie steht vor der INPUT-Anweisung. Die Reihenfolge der Variablennamen in der INPUT-Anweisung muß mit der Reihenfolge der Datenwerte in der Datei übereinstimmen.

LIBNAME DISK ‘A:\’; DATA DISK.NAMEN; INFILE ‘D:\DATEN.DAT’; INPUT NAME $1-10 SEX $ 12 AGE 14-15 GROESSE 17-18 GEWICHT 20-22; RUN;

Es wird eine permanente SAS-Datei NAMEN auf Laufwerk A: erzeugt. Die Rohdaten werden aus der Datei DATEN.DAT im Laufwerk D: gelesen. Einlesen extrener ASCII Dateien • direkt DATA ASORTE; INFILE ‘C:\SAS\DAT\golden1.dat; INPUT jahr sorte $ ertrag; PROC PRINT; RUN;

Page 10: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

• mit Alias Namen (fileref) DATA ASORTE; FILENAME Muster ‘C:\SAS\DAT\golden1.dat; INFILE Muster; INPUT jahr sorte $ ertrag; PROC PRINT; RUN; Herausschreiben von Daten in eine externe ASCII-Datei • direkt DATA BSORTE; INFILE in ‘C:\SAS\DAT\golden1.dat; FILE out ‘C:\SAS\DAT\golden2.dat; INPUT jahr sorte $ ertrag; logert=log(ertrag); PUT jahr sorte $ ertrag logert; RUN; • mit Alias Namen (fileref) DATA BSORTE; FILENAME in ‘C:\SAS\DAT\golden1.dat; FILENAME out ‘C:\SAS\DAT\golden2.dat; INFILE in; FILE out; INPUT jahr sorte $ ertrag; logert=log(ertrag); PUT jahr sorte $ ertrag logert; RUN; Erzeugen einer permanenten SAS-Datei LIBNAME INF1 ‘C:\SAS\DAT\’; DATA INF1.EXAMP1; INPUT x y z; CARDS; 1 33 123 2 44 222 ... RUN; Im Unterverzeichnis C:\SAS\DAT befindet sich nun die permanente SAS-Datei examp1.sd2. Es wird empfohlen einen persönlichen Standard-Libname zu benutzten. Einlesen einer permanenten SAS-Datei LIBNAME ABC ‘C:\SAS\DAT\’; PROC MEANS DATA=abc.examp1 n mean std; RUN; Einlesen einer permanenten SAS-Datei und Erzeugen einer neuen permanenten SAS-Datei DATA abc.examp2; SET abc.examp1; new=alt/100; .... RUN; Man unterscheidet folgende Eingabearten: a) freie Eingabe In den Rohdaten sind die einzelnen Datenwerte durch mindestens ein Leerzeichen getrennt: - die Datenwerte sind durch mindestens ein Leerzeichen getrennt - alphanumerische Variablen werden durch ein $ gekennzeichnet (z.B. wichtig zur Unterscheidung qualitativer und quantitativer Variabler) - alphanumerische Variablenwerte können maximal 8 Zeichen lang sein - fehlende Werte müssen durch einen Punkt . kodiert werden (andere Definitionen sind möglich) - falls nur numerische Daten vorliegen ist dies Variante vorzugsweise zu benutzen

Page 11: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

DATA TEST; INPUT A B; CARDS; 1 12 123 9 12345 12 ; RUN;

b) spaltengebundene Eingabe Die Datenwerte stehen rechtsbündig für numerische und linksbündig für alphanumerische Variablen in fest vorgegebenen Datenfeldern; diese werden in der INPUT-Anweisung vereinbart: - In der INPUT-Anweisung folgt einem Variablennamen die Definition des Datenfeldes im Rohdatenblock in Form von Spaltenangaben: z. B. GROESSE 20-22 bedeutet, daß die Datenwerte der Variablen GROESSE rechtsbündig im Datenfeld 20-22 abgelegt sind. Das Datenfeld beginnt mit Spalte 20 und endet mit Spalte 22 - alphanumerische Variablen werden ebenfalls mit einem $ gekennzeichnet, z. B. NAME $ 1-10

DATA TEST; INPUT A 1-5 B $ 7; CARDS; 112 M 1239 F 12345 F ; RUN;

c) formatgebundene Eingabe Die Rohdaten werden entsprechend fester Formatangaben eingegeben. Die Formatangaben werden in der INPUT-Anweisung vereinbart. (wird hier nicht behandelt) d) Einlesen mehrerer Eingabezeilen Mitunter stehen Datenwerte zu einem Fall auf mehreren Zeilen. INPUT #1 var1 var 2 #2 var3 var4; e) Mehrfaches Einlesen von einer Eingabezeile Mitunter stehen mehrere Beobachtungen in einer Eingabezeile. INPUT alter ertrag @@; 3. 2. 2 Datenerfassung mit PROC FSEDIT Mit FSEDIT können Rohdaten direkt in eine SAS-Datei eingelesen werden. Hierzu existiert eine Eingabemaske, welche für jede Variable ein spezielles Eingabefeld reserviert. Es entfällt somit die Eingabe der Rohdaten als Rohdatenblock. ==> hier nicht 3. 2. 3 Datumseingabe mit FORMAT und INFORMAT Wenn eine Variable ein Datum enthält, empfiehlt es sich, mit den von SAS bereitgestellten Datumsformaten zu arbeiten. Dazu muß man im Variablendefnitionsmenue bei FORMAT und bei INFORMAT das gewünschte Format eintragen. Der Eintrag bei INFORMAT bewirkt, daß das Datum in die Anzahl der seit einem (internen) Bezugsdatum vergangenen Tage umgerechnet wird, so daß man z. B. Differenzen von Daten berechnen kann. Der Eintrag bei FORMAT bewirkt, daß das Datum bei der Ausgabe nicht als Zahl, sondern als Datum angezeigt wird. Folgende Informate und Formate sind zum Beispiel möglich: Format/Informat Eingabe Ausgabe DATE7. 01JAN80 01Jan80 DATE9. 01/Jan/80 (01Jan1980/01 Jan 80) 01Jan1980 DDMMYY6. 010180 010180 DDMMYY8. 01/01/80 (01011980/01 01 80) 01/01/80 YYMMDD8. 19800101 80-01-01 3.2.4 Zusammenfassende Empfehlung zur Datenerfassung ° mittels INFILE-Anweisung bei vorhandenen ASCII-Dateien - primär empfohlen ° im DATA-Schritt nur für kleine Datenmenge zu Testzwecken ° mit PROC FSEDIT, wenn große Datenmengen erfaßt werden und Fehlerquellen durch die Benutzung eines strukturierten Editors gering gehalten werden sollen.

Page 12: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

4 Arbeiten mit SAS-Dateien SAS-Dateien existieren - temporär wenn sie auf dem WORK-Bereich gespeichert wurden. Alle Dateien, die ohne refcode angelegt werden, sind temporär z. B.: DATA VARIETY; temporär heißt: sie existieren bis zu Beendigung der SAS-Sitzung - permanent wenn sie auf Festplatte oder Diskette gespeichert wurden. Dazu muß zuvor ein Referenzcode (refcode) vereinbart werden, welcher auf ein Speichermedium zeigt: z. B. LIBNAME DISK’D:\’; 4. 1 SAS-Dateien und Prozeduren Die Auswahl der gewünschten Datei für eine Prozedur erfolgt mittels DATA-Option in der PROC-Anweisung- Syntax: PROC name DATA=dateiname; Hierbei ist name der Name der SAS-Prozedur, z. B. PRINT, MEANS,.... dateiname der SAS-Dateiname temporär oder permanent • temporär: DATA SORTEN; INPUT GROESSE HERKU JAHR ERTRAG; CARDS; ; PROC PRINT DATA=SORTEN; RUN; • permanent: Es existiere auf dem aktuellen Laufwerk die SAS-Datei SORTEN; diese soll ausgedruckt werden: PROC PRINT DATA=DISK.SORTEN (der refcode DISK muß natürlich vorher vereinbart worden sein!) Falls keine DATA-Option angegeben ist, wird standardmäßig die in der SAS-Sitzung zuletzt neu erstellte SAS-Datei verarbeitet. (temporär oder permanent). Wenn in der SAS-Sitzung keine Datei erstellt wurde, erfolgt eine Fehlermeldung im SAS-LOG.) 4. 2 Modifizierung von SAS-Dateien SAS-Dateien können auf sehr vielfältige Weise modifiziert werden, insbesondere: - Berechnen und Hinzufügen von neuen Variablen - Modifizierung von Variablen - Auswahl von Untergruppen einer Datei - Zusammenfügen mehrerer SAS-Dateien Modifizieren von SAS-Dateien erfolgt mittels Programm-Anweisungen und kann in zwei Phasen vorgenommen werden: - beim Einleseschritt - bei existierenden SAS-Dateien Modifizieren von existierenden SAS-Dateien DATA neuname; SET altname; Programmanweisungen; RUN; Es wird hier die modifizierte SAS-Datei „altname“ in die neu zu ertellende SAS-Datei „neuname“ eingelesen. Mit dem SET-Anweisung liest man also eine existierende SAS-Datei in eine neue SAS Datei ein und kann gleichzeitig Modifikationen vornehmen, z. B. Erstellen der temporären Datei SORTNEU und Berechnung einer neuen Variablen:

DATA SORTNEU; SET DISK.SORTE W = X+Y; RUN;

Page 13: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

4. 2. 1 Erstellung neuer Variablen Syntax: neuname = arithmetischer Ausdruck; z. B.: RELERT = ERTRAG/100; Folgende arithmetische Operanden sind möglich: Symbol Operation Beispiel * Multiplikation y = x + z; / Division y = x/z; + Addition y = x + z; - Subtraktion y = x - z; ** Potenz y = x**2; außerdem existieren in SAS zahlreiche Funktionen, z. B.: Name Funktion Beispiel INT Ganzzahliger Anteil des Arguments y = INT(x) MIN Minimum zweier Argumente y = MIN(x,z) MAX Maximum zweier Argumente y = MAX(x,z) SQRT Quadratwurzel y = SQRT(x) LOG natürlicher Logarithmus y = LOG(x) SIGN Vorzeichen y = SIGN(x) SIN Sinus y = SIN(x) Die Argumente können Konstanten, Variablen oder Ausdrücke sein. Bei Funktionen mit mehreren Argumenten können diese auf verschiedene Art angegeben werden: FUNKTIONSNAME(Argument, Argument,...) FUNKTIONSNAME(OF Variable Variable Variable ...) FUNKTIONSNAME(OF Variable_1 - Variable_n) (Weitere Funktionen finden Sie im SAS Language Guide.) Auf der rechten Seite sind nur bekannte (existierende) Variablen oder Konstanten erlaubt. Links steht in der Regel eine neu zu erstellende Variable. Die Abarbeitung erfolgt von rechts nach links. 4. 2. 2 Modifizierung von Variablen Syntax: name = arithmetischer Ausdruck; z. B.: ERTRAG = ERTRAG/100; Der alte Variablenwert wird durch den neuen Wert überschrieben! 4. 2. 3 Auswahl von Untergruppen (Beobachtungen) einer Datei Eine Auswahl von Untergruppen kann mittels IF-Anweisung erfolgen: Syntax:

IF logische Bedingung THEN Anweisung {

{

SAS überprüft diese Bedingung:

wahr oder falsch

wenn Bedingung wahr führt SAS diese Anweisung aus

Zwei wichtige Anweisungen: - IF Bedingung THEN DELETE; „Falls Bedingung wahr, speichere die Beobachtung nicht ab“ - IF Bedingung; „Falls Bedingung falsch, speichere die Beobachtung nicht ab“

DATA VARIETY; SET DISK.VARIETY; IF SORTE=1 THEN DELETE; RUN; DATA SORTE 1; SET DISK.VARIETY; IF SORTE=1; RUN;

Page 14: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Logische Bedingungen: Beispiel < kleiner als GROESSE < 180 > größer als GEWICHT > 70 <= kleiner gleich GROESSE <= 180 >= größer gleich GEWICHT >= 180 = gleich SORTE = 1 ∧ = nicht gleich SORTE∧ = 2 4. 2. 4 Erstellen einer Gruppierungsvariablen Beispiel: Einteilung in Altersgruppen

DATA BAEUMR; SET DISK.UMWELT; IF 0<ALTER<2 THEN ALTGRUP=1; ELSE IF 2<=ALTER<3 THEN ALTGRUP=2; ELSE IF 3<=ALTER THEN ALTGRUP=3; RUN;

Mit den Anweisungen WHERE und SELECT sind andere Varianten der Erstellung von Gruppierungsvariablen in SAS-Dateien möglich. (z.B. WHERE variable IN(wert1,....,wertk)). Günstig ist hierfür die Nutzung von PROC FORMAT (s. 5.2.1) 4. 2. 5 Zusammenfügen mehrerer SAS-Dateien Es existieren zwei Möglichkeiten, SAS-Dateien zusammenzusetzen: i) Untereinanderschreiben von: OBS ID SORTE JAHR ERTRAG Dat1 1 001 1 91 7,5 2 002 1 92 6,0 3 003 2 92 6,5 und OBS ID SORTE JAHR ERTRAG Dat2 1 005 2 91 6,6 2 006 3 92 6,7 zu OBS ID SORTE JAHR ERTRAG Ges 1 001 1 91 7,5 2 002 1 92 6,0 3 003 2 92 6,5 4 005 2 91 6,6 5 006 3 92 6,7 Man setzt Dateien mit gleichen Variablen aber unterschiedlichen Beobachtungen mit der SET-Anweisung untereinander.

DATA DAT1; INPUT ID SORTE JAHR ERTRAG; CARDS; Rohdatenblock ; RUN; DATA DAT2; INPUT ID SORTE JAHR ERTRAG; CARDS; Rohdatenblock ; RUN; DATA GES; SET DAT1 DAT2; RUN;

Page 15: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

ii) Nebeneinanderschreiben von Daten: ID SORTE JAHR ERTRAG DAT_11 001 1 91 7,5 002 1 92 6,0 003 2 92 6,5 und ID HOEHE DURCHM DAT_13 001 175 13 002 155 14 003 157 18 zu ID SORTE JAHR ERTRAG HOEHE DURCHM 001 1 91 7,5 175 13 002 1 92 6,0 155 14 003 2 92 6,5 157 18 Man setzt Dateien mit gleichen Beobachtungen aber unterschiedlichen Variablen mit der MERGE-An-weisungen nebeneinander. Dabei ist eine ID (Identifizierungs)-Variable in beiden Dateien erforderlich, damit die Beobachtungen eindeutig identifizierbar sind.

DATA DAT_11; INPUT ID SORTE JAHR ERTRAG; CARDS; Rohdatenblock ; DATA DAT_13; INPUT ID HOEHE DURCHM; CARDS; Rohdatenblock ; PROC SORT; BY ID; RUN; DATA ALLES; MERGE DAT_11 DAT_13; BY ID; RUN; INPUT

4. 3 Schleifen Analog den üblichen Programmiersprachen sind in SAS DO-Schleifen möglich, z.B. DO i=1 to 10 by 2; sum=sum+1; END; 4. 4 Umwandlung von Spalten in Zeilenvariablen PROC TRANSPOSE 4. 5 Titel- und Fußnoten Jede Seite des Output-Fensters wird mit definierten Titel- oder Fußnoten versehen, TITLE ‘...’; z.B. Auswertung Düngungsversuch 1993 TITLE# ’...’; z.B. TITLE2 © Uni Hannover 1994 FOOTNOTE ‘...’; FOOTNOTE# ‘...’;

Page 16: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

4. 6 Ausführlichere Bezeichnung von Variablen Variablennamen in SAS sollten kurz, jedoch prägnant gewählt werden. Mitunter ist es zweckmäßig den ausführlichen Namen, z.B. für die PRINT-Anweisung zu benutzen. Dies ist mit LABEL möglich. z.B. INPUT SENS1; LABEL SENS1= ‘Fruchtsensorik nach DIN’; 4. 7 Ausführliche Bezeichnung ordinaler Datenwerte Mitunter ist es zweckmäßig, die ausführliche Bezeichnung ordinaler Datenwerte auszudrucken. Dies ist mit PROC FORMAT (siehe 5.2.1)möglich.

PROC FORMAT; VALUE f_sens1 0=‘sehr sauer’ 1=‘sauer’ 2=‘mittel-süß’ 3=‘süß’ 4=‘zuckersüß’; DATA eins; INPUT sens1 @@; FORMAT sens1 f_sens1.; CARDS; 0 0 2 3 1 4 ;

Dabei wird zur Unterscheidung von Variablen die Formatbezeichnung mit einem endständigen Punkt gekennzeichnet. 4. 8 Herausschreiben von Datenfiles Mitunter werden in SAS Datenfiles erzeugt, die in anderen Programmen verarbeitet werden sollen. In den aktuellen Data-Schritt kann dann z.B. eingefügt werden (s. Beispiel oben)

DATA uebergab; SET alles; FILE ‘C:\dat\neu12.dat’; PUT sorte jahr ertrag hoehe durchm;RUN;

Damit steht im Unterverzeichnis C:\dat eine ASCII-Datei neu12.dat zur Verfügung. 4. 9 Ausgabe von SAS-Grafiken unter Windows Es existieren drei Möglichkeiten SAS-Grafiken auszugeben: i) über die Zwischenablage ii) Drucken iii) Graphik stream file Achtung: Iin der Version 6.08 eingeschränkte Möglichkeiten bei SAS/INSIGHT! Zwischenablage Teile der Grafik kann man durch Aufziehen eines Rechteckes (mit der linken Maustaste) markieren und mit Edit /Copy to paste buffer in die Zwischenablage exportieren. Das komplette Fenster läßt sich mit Alt/PrtScreen exportieren. Diese bitmap-Grafiken lassen sich in andere Programme einbinden. Dabei ist zu definieren: GOPTIONS DEVICE=win colors=(black) cback=white; Drucken i) direkt GOPTIONS DEVICE=winprtm; ii) via grafischen Editor Mit dem Menuepunkt: Locals/Edit/Edit Graph, jedoch muß im CIP Pool GOPTIONS DEVICE=win TARGET=winprtm; definiert sein. Bei Ausdruck im Querformat (ROTATE=LANDSCAPE;) muß auch die Drucker Option in Windows Printer Set-up umgestellt werden.

Page 17: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Graphic stream file Der Export via Zwischenablage ist i.d.R. mit Qualitätsverlust verbunden. Daher stellt der Export via graphic stream file das Mittel der Wahl dar: FILENAME name ‘C:\sas\graf`; GOPTIONS DEVICE=cgmwwb GACCESS=name GSFMODE=replace; Mit Einfügen Grafik kann dann diese Datei in WinWord importiert werden. Statt der CGM-Files können auch andere Formate, z.B. postscript files, definiert werden. Wird die Option GOPTIONS FTEST=none; gewählt, so wird der Standardfont definiert, i.d.R. Arial. Wünscht man z.B. TimesNew Roman, so ist zu wählen: =hwdmx005; 4. 10 DLL mit EXCEL 4. 10. 1 Allgemeines zum DDL Zwischen aktiven Windows Programmen ist ein dynamischer Datenaustausch möglich Dazu ist im SAS Programm anzugeben:FILENAME refcode DDE ‘Name des Programms|Filename[Optionen]; 4. 10. 2 Datenimport von EXCEL In Tab1 seien im Spread sheet von Zeile1:Spalte1 bis Zeile 10:Spalte2 Daten enthalten, die in SAS zu übernehmen sind. FILENAME test1 DDE ‘EXCEL|tab1!z1s1:z10s2’; DATA eximp; INFILE test1; INPUT Jahr Ertrag; RUN; • bei integer Zahlen, siehe Beispiel • bei Dezimalzahlen muß die INPUT-Anweisung ergänzt werden zu: INPUT Jahr Ertrag COMMAX.; • Alphanumerische Daten: INFILE test1 dlm=‘09’x notab dsd missover; INFORMAT Sorte $10.; INPUT Sorte Jahr Ertrag; RUN; 4. 10. 2 Datenexport zu EXCEL Der Datensatz random erscheint direkt im EXCEL File tab1(diese muß aktuell geöffnet sein !), wenn Sie angeben: FILENAME random dde ‘excel|tab1!z1s1:z20s2’; DATA random; FILE random; DO j=1 TO 20; nz=rannor(j); bz=ranexp(j); PUT nz bz; END; RUN; /* Darstellung mit einer Dezimalstelle als Komma in EXCEL */ PROC FORMAT; PICTURE test low-high=‘999,99’ (mult=100); FORMAT nz bz test.; oder /* Darstellung mit 2 Dezimalstellen als Komma in EXCEL */ PROC FORMAT; PICTURE test low-high=‘999,999’ (mult=1000); 4.11 Einfacher Import von Standarddatenformaten mit der Option „Import“ Unter File/Import lassen sich verschiedene Standarddatenformate (z.B. EXCEL (Version beachten!), DBASE, ASCII mit Trennzeichen, usw.) als work.filename importieren. Z.B. bei EXCEL schreibt man die numerischen Daten und die Variablenbezeichnungen oben links (d.h. mit Zelle A:1 beginnend) in eine (!) Tabelle und speichert diese als File ab. Im File/Import Menue wählt man „EXCEL 5 oder 7“ und gibt den Pfad des EXCEL Files an. Dann vergibt man einen einfachen Namen für das work-File, z.B. tt. In einem Datenschritt macht man mit set work.tt die Daten verfügbar. Damit sind die numerischen Daten als Variable verfügbar.

Page 18: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

4.12 Einfacher Export im EXCEL-Format Mitunter möchte man Ergebnisdaten in EXCEL grafisch darstellen. Dies kann man einfach wie folgt realisieren: data new; input dose y; cards; 1 12.3 1 14.5 2 17.6 2 19 ; data raus; set new; file 'u:\atest.xls'; <== Angabe der Datei mit Extension .xls put @6 dose 2 @15 y 4.1; <== @ Spalte Variable Zahlenformat run;

5. SAS-Prozeduren und Funktionen SAS-Prozeduren sind fertige Programme, welche ganz bestimmte vorgegebene Aufgaben erledigen. SAS-Prozeduren haben folgende Eigenschaften: - Sie können nur SAS-Dateien verarbeiten - Die SAS-Ausgabe von Prozeduren wird über Optionen gesteuert - Für spezielle Modellierungsfunktionen existieren spezielle PROC-Anweisungen, welche speziell auf bestimmte Prozeduren zugeschnitten sind - Sie verarbeiten die globalen Anweisungen TITLE und FOOTNOTE zur Beschriftung der Ausgabe - Sie gestatten die Verwendung von Variablenlabeln (LABEL-Anweisung) und von Werteetiketten für Variablenwerte (FORMAT-Anweisung) Syntax: PROC name <optionen>; <TITEL ‘titel’;> <FOOTNOTE ‘fußnote’;> <LABEL varname1 = ‘label1’ varname2 = ‘label2’>; <FORMAT varname1 format1.varname2 format2. ...;> RUN; 5. 1 Wichtige SAS-Funktionen Folgende anwendungsspezifischen Funktionen werden bereitgestellt: • Mathematische F., wie z.B. ABS (var1); Absolutwert • Trigonometrische F., wie z.B. SIN(var2); Sinus • Transzendente F., wie z.B. EXP(var3); Exponential • Statistische F., wie z.B. MEAN Mittelwert • Wahrscheinlichkeitsf. (s.Tabelle) Die Zuweisung erfolgt mit Variable=Funktionskürzel (Argument1,...,); Verteilung Verteilungsfunktion Inverse Zufallszahl Parameter Binomial PROBBNML(p,n,x) RANBINsw,n,p) n,p Cauchy RANCAU(sw) α=1,ß=1 χ2 PROBCHI(x,df,[nc]) CINV(p,df,[nc]) df, nc. Exponential RANEXP(sw) λ=1 F PROBF(x,df1,df2,[nc]) FINV(p,df1,df2,[nc]) df1,df2,nc Beta PROBBETA(x,a,b) Gamma PROBGAM(x,a) GAMINV(p,a) RANGAM(sw,a) a;b=1 Hypergeometrisch PROBHYPR(N,k,n,x,

[odds ratio])

Negativ-Binomial PROBNEGB(p,n,x) Normal PROBNORM(x) PROBIT(p) RANNOR(sw) µ=0,σ=1

Page 19: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

NORMAL(sw) Bivariat Normal PROBBNRM(x,y,ρ) µ=0,σ=1 Poisson POISSON(λ,x) RANPOI(sw,x) λ t PROBT(x,df,[nc]) TINV(p,df,[nc]) df, nc multivariat t PROBMC(method,qua

ntile,p,df,k,param)

Rechteck RANTRI(sw,h) Hypoth., [0,1]Gleich (x) RANUNI(sw)

UNIFORM(sw) [0,1]

nc .... Nichtzentralitätsparameter sw ... Startwert ZZG 5. 2 Eine Auswahl grundlegender SAS-Prozeduren 5.2.1 PROC FORMAT Die Prozedur FORMAT dient dazu, Datenwerten eine aussagekräftige Bezeichnung zuzuweisen. Werden z.B. in einer Varianzanalyse statt Block 1, Block 2 etc. nur die Zahlen 1, 2 etc. eingegeben, so lassen sich diese mit PROC FORMAT umkodieren. In der Ursprungsvariablen stehen dann die neuen Werte. Achtung: Die Format-Anweisung muß mit einem Punkt beendet werden ! /* Beispiel Proc Format */ Proc Format ; value block 1='Block 1' 2='Block 2' 3='Block 3' 4='Block 4'; run; Data Bloecke; input blkurz @@; format blkurz block.; cards; 1 2 3 1 4 ; Proc Print Data=Bloecke; run; Diese SAS-Datei liefert als Ausdruck (Proc Print-Anweisung): OBS BLKURZ 1 Block 1 2 Block 2 3 Block 3 4 Block 1 5 Block 4

5. 2. 2 PROC SORT Die Prozedur Sort dient der Sortierung einer SAS-Datei nach einer oder mehreren Variablen, d.h. die Reihenfolge der Beobachtungen wird verändert, nicht aber die Beobachtungen selbst. Übliche Verwendung: • PROC SORT <Data=SAS_FILE1 Out=SAS_FILE2>;

BY Var1,...; Die SAS-Datei SAS_FILE1 wird nach den Variablen Var1,... sortiert und in der sortierten Reihenfolge in der SAS-Datei SAS_File2 abgespeichert. Vor Data können hierbei noch Sequenzen, nach denen sortiert werden soll, angegeben werden. Die gewünschte Sortierhierarchie ist in einer BY-Anweisung anzugeben: BY Primär, Sekundär, Tertiär, usw.. In der BY-Anweisung anderer Prozeduren, z.B. GLM ist die gleiche Hierarchie, oder Teile dessen, anzugeben.

• Wird der Befehl ohne Out=SAS_FILE2 eingegeben, so erfolgt die Speicherung in der SAS-Datei SAS_FILE1. Dieser Befehl muß immer erfolgen, wenn anschließend eine Prozedur mit den gleichen By-Variablen verwendet werden soll. Descending vor einer By-Variablen kehrt die Sequenz, nach der sortiert werden soll, um.

/*Beispiel Proc Sort */

Page 20: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

data adressen; input name$ vorname$ Alter; cards; Mueller Eva 23 Schmidt Harmut 55 Schmidt Ellen 33 Herrmann Marcus 24 ; run; Proc Print; run; Proc Sort Data=adressen; by name descending alter; run; Proc Print; run; liefert im Ausgabefenster dann vor dem Sortieren als auch nach dem Sortieren: OBS NAME VORNAME ALTER 1 Mueller Eva 23 2 Schmidt Harmut 55 3 Schmidt Ellen 33 4 Herrmann Marcus 24 OBS NAME VORNAME ALTER 1 Herrmann Marcus 24 2 Mueller Eva 23 3 Schmidt Harmut 55 4 Schmidt Ellen 33

5. 2. 3 PROC RANK Die Prozedur Rank dient der Ermittlung von Rängen von numerischen Variablen in einer SAS-Datei. Neben der üblichen Rangbildung können auch Scores nach Blom, Tukey, Van-der-Waerden, Savage berechnet werden. Die unterschiedliche Bearbeitung von Bindungen ist ebenfalls möglich. Übliche Verwendung: • PROC RANK <Data=SAS_File1 Out=SAS_File2>;

BY Var1,...; RANKS Var1neu,...; VAR Varx,...; Hiermit werden im SAS_File1 nach den By-Gruppen getrennt die Ränge für die numerischen Variablen unter Var vergeben und in den Variablen unter Ranks in der Datei SAS_File2 abgespeichert. Die SAS-Datei SAS_File2 enthält dabei außerdem alle Daten der Datei SAS_File1.

• Wird in dem Befehl Out=SAS_File2 weggelassen, so erfolgt die Speicherung in der SAS-Datei SAS_File1; • Sollen die Scores statt der Ränge berechnet werden, so muß vor Out=SAS_File2

Normal=Blom, Normal=Tukey, Normal=VW, Savage eingefügt werden. /* Beispiel Proc Rank*/ /* Gewichte von Pilzen mit Vitaminbehandlung in Gruppe a */ data tab; input gruppe$ gewicht @@; cards; a 16 b 18 a 34 b 27 a 21 b 12 a 29 b 15 a 19 b 23 a 28 ; run; proc sort data=tab; by gruppe; run; proc rank data=tab out=tab1; by gruppe; var gewicht; ranks rgewicht; run; proc rank data=tab descending normal=vw out=tab2; var gewicht;

Page 21: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

ranks rgewicht; run; proc print data=tab1; run; proc print data=tab2; run; liefert als Ausdruck mit der Prozedur Print: OBS GRUPPE GEWICHT RGEWICHT 1 a 16 1 2 a 34 6 3 a 21 3 4 a 29 5 5 a 19 2 6 a 28 4 7 b 18 3 8 b 27 5 9 b 12 1 10 b 15 2 11 b 23 4 OBS GRUPPE GEWICHT RGEWICHT 1 a 16 0.67449 2 a 34 -1.38299 3 a 21 -0.00000 4 a 29 -0.96742 5 a 19 0.21043 6 a 28 -0.67449 7 b 18 0.43073 8 b 27 -0.43073 9 b 12 1.38299 10 b 15 0.96742 11 b 23 -0.21043

5. 2. 4 PROC STANDARD Die Prozedur Standard transformiert mittels einer linearen Transformation Variablen bezüglich anzugebender Mittelwerte und Standardabweichungen. Übliche Syntax: • PROC STANDARD <Data=SAS_File1> Mean=Mwert Std=Swert <Out=SAS_File2>;

VAR Varliste; Die Anweisung standardisiert die Variablen unter Var der SAS-Datei SAS_File1 in gleichnamige Variablen in der SAS-Datei SAS_File2 mit Mittelwert Mwert und Standardabweichung Swert.

• Durch den Zusatz By Var1,...kann die Analyse nach By-Gruppen getrennt erfolgen. /* Beispiel Proc Standard */ data tab1; /* Gewicht von Pilzen unter Vitaminzugabe (a) und ohne Vitaminzugabe (b) */ input gruppe$ gewicht @@; cards; a 16 b 18 a 34 b 27 a 21 b 12 a 29 b 15 a 19 b 23 a 28 ; proc sort; by gruppe; run; proc standard mean=2 std=3 out=tab2; by gruppe; run; proc print data=tab2; run; Man erhält als Ergebnis: OBS GRUPPE GEWICHT 1 a -1.69993 2 a 6.13521 3 a 0.47650 4 a 3.95879 5 a -0.39407 6 a 3.52350 7 b 1.50344 8 b 5.97251 9 b -1.47594 10 b 0.01375 11 b 3.98625

Page 22: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

5. 2. 5 PROC PRINT Die Prozedur Print dient der Ausgabe einer SAS-Datei im Output-Fenster. Die Beobachtungen werden numeriert und zeilenweise aufgelistet. Es besteht dabei die Möglichkeit, eine Datei nur teilweise als auch nach bestimmten Variablen gruppiert bzw. mit beiden Möglichkeiten zusammen auszugeben. Übliche Verwendung der Prozedur Print: • PROC PRINT; Die zuletzt erzeugte SAS-Datei wird mit allen Variablen ausgeben, keine Gruppierung nach

einer Variablen. • PROC PRINT DATA=SAS_File;

VAR Var1...; Der Inhalt der angegebenen Variablen unter Var der SAS-Datei SAS_File wird für alle Beobachtungen in der angegebenen Reihenfolge der Variablen ausgegeben. Wird die Auflistung der Variablen weggelassen, so werden alle Variablen ausgegeben.

• PROC PRINT DATA=SAS_File; VAR Var1...; BY VarX...; Die Ausgabe ist die gleiche wie im vorherigen Punkt, nur werden die Beobachtungen nach den Variablen unter By gruppiert ausgegeben, d.h. die Reihenfolge der Beobachtungen in der Ausgabe verändert sich im allgemeinen.

/*Beispiel1 Proc Print*/ Data tab; Input geschl$ alter groesse @@; Cards; m 34 175 f 33 170 f 23 165 m 45 180 ; run; Proc Print; run; liefert als Ergebnis OBS GESCHL ALTER GROESSE 1 m 34 175

2 f 33 170

3 f 23 165

4 m 45 180

Wird das Programm nach der Dateneingabe abgeändert in /*Beispiel2 Proc Print*/ ***Dateneingabe wie zuvor***

Proc Sort Data=tab; by geschl run; Proc Print; var alter; by geschl; run;

so erhält man im Outputfenster: ----------GESCHL=f ------------- OBS ALTER 1 33 2 23 ----------GESCHL=m ------------ OBS ALTER 3 34 4 45

Page 23: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

5. 2. 6 PROC (G)PLOT und (G)CHART Die Prozedur Gplot dient zur graphischen Darstellung von Datenpunkten (jeweils zwei Datenwerte einer Beobachtung) in einem X-Y-Plot. Die Syntax lautet: • PROC GPLOT <Data=SAS_File>;

PLOT VarX*VarY; Dieser Aufruf erzeugt einen X-Y-Plot der numerischen Variablen VarX (X-Variable) und VarY (Y-Variable) für die SAS-Datei SAS_File.

• Erfolgt vor den Aufruf Proc Gplot...noch die Anweisung Symbol Interpol=Spline;, so erfolgt eine Interpolation durch Splines zwischen den Beobachtungspunkten.

• Die Verwendung von Plot anstelle von Gplot erzeugt lediglich eine einfache Strichgrafik. /* Beispiel Proc GPlot */ data ertraege; /* Daten für einen Versuch mit Düngermengen und Erträgen*/ input duenger ertrag @@; cards; 5 50 10 57 12 60 18 62 25 63 30 65 36 68 40 70 45 69 48 66 ; run; Proc GPlot Data=ertraege; Plot ertrag*duenger; run; Man erhält als Ausgabe: Plot of ERTRAG*DUENGER. Legend: A = 1 obs, B = 2 obs, etc. ERTRAG ¦ 70 + A 69 + A 68 + A 67 + 66 + A 65 + A 64 + 63 + A 62 + A 61 + 60 + A 59 + 58 + 57 + A 56 + 55 + 54 + 53 + 52 + 51 + 50 + A +--+-------------+-------------+-------------+-------------+-------------+-- 0 10 20 30 40 50 DUENGER

Die Prozedur Gchart dient zur graphischen Darstellung der Häufigkeiten von Datenwerten in Diagrammen. Mögliche Diagrammarten: vertikale Balken Vbar horizontale Balken Hbar Blöcke Block Kreise Pie Sterne Star Übliche Verwendung der Prozedur: • PROC GCHART <Data=SAS_File>;

Diagrammart Var1...; /Level=n; Für die Variablen Var1 etc. unter Diagrammart in der SAS-Datei SAS_File wird ein Diagramm mit n Klassen nach Diagrammart ausgegeben. Für Diagrammart kann Vbar, Hbar etc. (s.o.) eingegeben werden.

Page 24: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

• Statt /Level kann entweder /Midpoints=mp1 mp2...; als Angabe für die Mittelpunkte der Klassen oder /Discrete; , wenn jeder Datenwert eine eigene Klasse bildet, angegeben werden.

• Die Verwendung von Chart anstelle von GChart erzeugt lediglich eine einfache Strichgrafik. /* Beispiel Proc (G)Chart */ data pflgro; /* Daten von Pflanzengroessen in cm*/ input groesse @@; cards; 20 43 44 27 30 33 23 21 50 39 ; run; Proc Chart Data=pflgro; block groesse /levels =5; run;

Man erhält als Ausgabe:

Frequency of GROESSE ___ /_ /¦ ¦**¦ ¦ ¦**¦ ¦ ___ ___ ___ ¦**¦ ¦ /_ /¦ /_ /¦ /_ /¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ ¦**¦ ¦ -¦**¦ ¦------¦**¦ ¦-------¦**¦ ¦------.¦**¦ ¦--------___ ------- / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / /_ /¦ / / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / ¦**¦ ¦ / / ¦**¦/ / ¦**¦/ / ¦**¦/ / ¦**¦/ / ¦**¦/ / / / / / / / / 3 / 2 / 2 / 2 / 1 / /-------------/-------------/-------------/-------------/-------------/ 20 28 36 44 52 GROESSE Midpoint

Wichtige Anwendung: Mittelwertbalken mit aufgesetztem Standardfehler +s) data new; input group$ y; cards; a 12.5 a 13.4 a 9.9 b 14.4 b 15.9 b 10.1 b 16.0 c 17.0 c 12.1 c 20.1 c 24.9 c 17.8 ; filename grafik 'E:\hotsas\grafik1.cgm'; goptions target=cgmmw6c gsfname=grafik gsfmode=replace hsize=10 cm vsize=7cm; proc gchart; vbar group / type=mean sumvar=y errorbar=top; pattern1 C=blue V=empty; run; Im Grafikfenster „print“ Symbol drücken und dann in Word Grafik einfügen 5.2.7 PROC OUTPUT

Page 25: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Die Prozedur Proc Output ermöglicht für die Prozedur Mixed über das sogenannte Output Delivery System (ODS) sowohl die gesamt Ausgabe der Prozedur Mixed zu verwalten (abspeichern, verschieben, kopieren etc.) als auch einzelne Teile davon. Im Window Modus wird der sogenannte Output Browser aufgerufen, in dem bis zu drei Stufen der ODS-Hierarchie gleichzeitig gezeigt werden können. Über die Tastenkombination Ctrl-J (eigene Vereinbarung) wird dann ein Menü aufgerufen, bei dem mit den üblichen Maus-Techniken die Prozedur Mixed bzw.Teile davon verwaltet werden können. Der Output-Browser bleibt jeweils für eine SAS-Sitzung bestehen, benötigt nur einen Aufruf mit PROC OUTPUT und es werden alle Aufrufe der Prozedur Mixed eingetragen. Der Syntax lautet: %global _DISK_; %let _DISK_=ON; %global _PRINT_; %let _PRINT_=OFF/ON; PROC MIXED; ... PROC MIXED; ... ... PROC OUTPUT; RUN; Die Zeilen, die mit % beginnen, bewirken, daß die Ausgabe auf dem Bildschirm unterdrückt wird (_PRINT_=OFF) bzw. erfolgt (_PRINT_=ON).Über die ersten beiden Zeile wird erst der Eintrag in den Output-Browser ermöglicht. Der Aufruf Proc Output; erstellt den Output Browser. 5.2.8 PROC TEMPLATE Die Prozedur Template ermöglicht es, die Ausgaben bei der Prozedur Mixed anders zu gestalten, z. B. die Reihenfolge der Variablen zu verändern und Überschriften umzubenennen. Möchte man die Ausgabengestaltung ändern, so wird der voreingestellte Code aus dem SASHELP:OUTPUT.Name kopiert und unter der Prozedur Template nimmt man Änderungen vor. Wegen der Kompliziertheit des Verfahrens sei dies an einem Beispiel demonstriert: Der folgende Text kann aus der Datei SASHELP:OUTPUT.MIXSOLUF.SOURCE eingelesen werden. Es handelt sich hierbei um das Ausgabeformat für die Ausgabe für feste Effekte bei der Prozedur Mixed. TABLE / SPACE = 4 WIDTH = 12 SPLIT = '/'; COLUMN PARM EST SE DDF T P_T ALPHA LOWER UPPER; DEFINE PARM / 'Parameter' VARNAME = PARM; DEFINE EST / 'Estimate' FORMAT = 12.8 VARNAME = EST; DEFINE SE / 'Std Error' FORMAT = 12.8 VARNAME = SE; DEFINE DDF / 'DDF' FORMAT = 4.0 WIDTH = 4 VARNAME = DDF; DEFINE T / 'T' FORMAT = 6.2 WIDTH = 6 VARNAME = T; DEFINE P_T / 'Pr > |T|' FORMAT = 6.4 WIDTH = 6 VARNAME = P_T; DEFINE ALPHA / 'Alpha' FORMAT = BEST. VARNAME = ALPHA; DEFINE LOWER / 'Lower' FORMAT = 8.4 WIDTH = 8 VARNAME = LOWER; DEFINE UPPER / 'Upper' FORMAT = 8.4 WIDTH = 8 VARNAME = UPPER; SPAN PARM UPPER / ' ' 'The Mixed Procedure' ' ' 'Solution for Fixed Effects' ' '; Soll diese Ausgabe mit der Prozedur Template verändert werden, so wird zunächst vor den vorangegangenen Teil die folgende Zeile vorgeschaltet: PROC TEMPLATE type=table out=sasuser.profile.mixsoluf.outtemp; Sollen jetzt z.B. die Wörter in Anführungszeichen, die auch später im Ausdruck erscheinen, verändert werden, so überschreibt man diese einfach, z. B. statt ‘Estimate’ etwa ‘Schätzer’. Soll die Reihenfolge in der Ausgabe der Variablen verändert werden oder einige Variablen weggelassen werden, so geschieht dies über die entsprechende Umstellung in der Zeile COLUMN, welche sowohl die Reihenfolge der Variablenausgabe als auch die Variablen selbst festlegt, die ausgegeben werden sollen. In den Define-Anweisungen kann zusätzlich noch das SAS-Format über Format als auch die Breite festgelegt werden. Soll die Template-Prozedur mit anderen Teilen der Prozedur Mixed durchgeführt werden, so muß statt MIXSOLUF einer der Namen MIXCLASS, MIXCNTST, MIXESTIM, MIXML, MIXREML, MIXSOLUR, MIXTEST verwendet werden.

5. 2. 9 PROC TABULATE Die Prozedur Tabulate gibt absolute Häufigkeiten für Häufigkeitstabellen aus. Gebräuchliche Verwendung: • PROC TABULATE <Data=SAS_File>;

BY Varliste1; CLASSES[es] Var1,...; TABLE Seitenvar, Zeilenvar, Spaltenvar; Diese Anweisung veranlaßt für die SAS-Datei SAS_File die Ausgabe von absoluten Häufigkeiten der Beobachtungen für die Kombinationen der verschiedenen Stufen von Spaltenvar usw. . Werden unter Table

Page 26: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

weniger als drei Variablen angegeben, so wird bei einer Variablen diese als Spaltenvariable, bei zwei Variablen diese als Zeilenvariable und Spaltenvariable aufgefaßt. Es ist die Verwendung von String- als auch numerischer Variablen möglich.

/* Beispiel Proc Tabulate */ /* Daten für zwei Sorten a und b bezüglich Mehltaubefall */ data tab; input sorte $ befall $ @@ ; cards; a j b n b j b n b j a n a n ; run; proc tabulate; classes sorte befall ; table befall , sorte; table befall; run; Man erhält als Ausgabe: +-----------------------------------------------+ ¦ ¦ SORTE ¦ ¦ +-------------------------¦ ¦ ¦ a ¦ b ¦ ¦ +------------+------------¦ ¦ ¦ N ¦ N ¦ +---------------------+------------+------------¦ ¦BEFALL ¦ ¦ ¦ +----------------¦ ¦ ¦ ¦j ¦ 1.00 ¦ 2.00 ¦ +---------------------+------------+------------¦ ¦n ¦ 2.00 ¦ 2.00 ¦ +-----------------------------------------------+ +-------------------------+ ¦ BEFALL ¦ +-------------------------+ ¦ j ¦ n ¦ +------------+------------¦ ¦ N ¦ N ¦ +------------+------------¦ ¦ 3.00 ¦ 4.00 ¦ +-------------------------+ 5. 3 Ein Auswahl von Prozeduren für einfache statistische Verfahren

5. 3. 1 PROC FREQ Die Prozedur Freq dient zum Berechnen von Häufigkeiten für einzelne Variablen und zum Berechnen von Häufigkeiten in Kreuztabellen. Zudem kann die Prozedur zum Testen auf Unabhängigkeit in einer Kreuztabelle benutzt werden. Übliche Verwendung der Prozedur: • PROC FREQ <Data=SAS_File>;

TABLES Varliste; Für die SAS-Datei SAS_File werden Häufigkeitstabellen für die Variablen unter Tables ausgegeben. Werden Variablen durch ein * verbunden, so wird eine Kreuztabelle ausgegeben.

• Erscheint nach Tables Varliste; noch der Aufruf Weight NumVar; so werden die Beobachtungen mit NumVar gewichtet, d.h. eine Beobachtung wird in der statistischen Auswertung nicht mehr als eine Beobachtung eingebracht, sondern als NumVar Beobachtungen. Dies ist z.B. sinnvoll bei Vierfeldertafeln, da Beobachtungen mit gleichen Ergebnissen nicht wiederholt, sondern nur als Anzahl eingegeben werden müssen

• Sollen in einer Kreuztabelle mit Gewichtsvariablen NumVar Tests auf Unabhängigkeit der Zellhäufigkeiten durchgeführt werden, so geschieht dies über Abänderung der Tables-Zeile in: Tables Varliste/Chisq Expected;

/* Beispiel Proc Freq */ data mehltau; /* Mehltaubefall bei zwei Sorten A und B, ohne Befall (oB) */ /* mit Befall (mB), Anzahl der Pflanzen, Anlage einer Vierfeldertafel */ input sorte $ befall $ anzahl;

Page 27: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

cards; A oB 20 B oB 45 A mB 30 B mB 105 ; run; Proc Freq Data=mehltau; tables sorte*befall /chisq expected; tables sorte; weight anzahl; run; Man erhält als Ergebnis: TABLE OF SORTE BY BEFALL SORTE BEFALL Frequency¦ Expected ¦ Percent ¦ Row Pct ¦ Col Pct ¦mB ¦oB ¦ Total ---------+--------+--------+ A ¦ 30 ¦ 20 ¦ 50 ¦ 33.75 ¦ 16.25 ¦ ¦ 15.00 ¦ 10.00 ¦ 25.00 ¦ 60.00 ¦ 40.00 ¦ ¦ 22.22 ¦ 30.77 ¦ ---------+--------+-------- + B ¦ 105 ¦ 45 ¦ 150 ¦ 101.25¦ 48.75 ¦ ¦ 52.50 ¦ 22.50 ¦ 75.00 ¦ 70.00 ¦ 30.00 ¦ ¦ 77.78 ¦ 69.23 ¦ ---------+--------+--------+ Total 135 65 200 67.50 32.50 100.00 STATISTICS FOR TABLE OF SORTE BY BEFALL Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 1.709 0.191 Likelihood Ratio Chi-Square 1 1.672 0.196 Continuity Adj. Chi-Square 1 1.284 0.257 Mantel-Haenszel Chi-Square 1 1.701 0.192 Fisher's Exact Test (Left) 0.129 (Right) 0.930 (2-Tail) 0.223 Phi Coefficient -0.092 Contingency Coefficient 0.092 Cramer's V -0.092 Sample Size = 200 Cumulative Cumulative SORTE Frequency Percent Frequency Percent --------------------------------------------------------------------- A 50 25.0 50 25.0 B 150 75.0 200 100.0

5. 3. 2 PROC MEANS Die Prozedur Means dient der Ermittlung von einfachen Statistiken für die numerischen Variablen in einer SAS-Datei. Übliche Syntax: • PROC MEANS Für jede numerische Variable in der zuletzt erzeugten bzw. definierten Datei werden die Anzahl der

Beobachtungen, Standardabweichung, Minimum und Maximum ausgegeben. • PROC MEANS <Data=SAS_File>;

BY Var1,...; VAR Varx,...;

Page 28: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Es werden gruppiert nach den By-Variablen für alle Variablen unter Var die obengenannten Größen ausgegeben.

• PROC MEANS DATA=SAS_File SAS_Statistikabkürzung; BY Var1,...; VAR Varx,...; Mit dieser Anweisung werden anstatt der oben angegebenen Größen, die Größe, für die die SAS-Abkürzung steht ausgeben. Mögliche sind z. B. die Spannweite (Range) oder die Summe (Sum), s. auch SAS-Language, Table 104, S.143.

/* Beispiel Proc Means*/ /* Gewichte von Pilzen mit Vitaminbehandlung Gruppen a & b */ data tab; input gruppe$ gewicht @@; cards; a 16 b 18 a 34 b 27 a 21 b 12 a 29 b 15 a 19 b 23 a 28 b 24 a 20 b 30 a 26 b 17 a 22 b 31 a 25 ; run; proc sort data=tab; by gruppe; run; proc means data=tab ; by gruppe; var gewicht; run; proc means data=tab sum; run; liefert im Ausgabefenster: Analysis Variable : GEWICHT ------------------------------------------- GRUPPE=a ------------------------------------------ N Mean Std Dev Minimum Maximum ---------------------------------------------------------- 10 24.0000000 5.4160256 16.0000000 34.0000000 ---------------------------------------------------------- ------------------------------------------- GRUPPE=b ------------------------------------------ N Mean Std Dev Minimum Maximum ---------------------------------------------------------- 9 21.8888889 6.7535999 12.0000000 31.0000000 ---------------------------------------------------------- Analysis Variable : GEWICHT Sum 437.0000000

5. 3. 3 PROC UNIVARIATE Die Prozedur Univariate bietet neben den Statistiken, die auch von Proc Means berechnet werden, die Berechnung von weiteren Statistiken wie z.B. Quartile und Teststatistiken mit zugehörigen p-Werten an. Darüber hinaus können mit der Option Plot noch Stem-and-Leaf-Plots und Box-and-Whisker-Plots ausgegeben werden. Übliche Verwendung der Prozedur: • PROC UNIVARIATE <Data=SAS_File>;

Die numerischen Variablen der SAS-Datei SAS_File werden einzeln analysiert und die ermittelten Größen im OUTPUT-Fenster ausgegeben. Über den Zusatz von By Variablenliste und Var Variablenliste (numerisch) kann wie unter der Prozedur Means die Auswertung nach By-Gruppen getrennt und nur für die unter Var angegebenen numerischen Variablen erfolgen.

• Werden hinter Data=SAS_File noch die Zusätze Normal und/oder Plot hinzugefügt, so wird noch zusätzlich ein Test auf Normalverteilung durchgeführt und/oder einige Plots ausgegeben.

/* Beispiel Proc Univariate */ Data ertraege; input ertrag @@;

Page 29: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

cards; 15 15 18 20 17 25 11 10 34 29 ; run; proc univariate data=ertraege plot normal; run; Man erhält im Ausgabefenster: Univariate Procedure Variable=ERTRAG Moments Quantiles(Def=5) N 10 Sum Wgts 10 100% Max 34 99% 34 Mean 19.4 Sum 194 75% Q3 25 95% 34 Std Dev 7.763161 Variance 60.26667 50% Med 17.5 90% 31.5 Skewness 0.760698 Kurtosis -0.22384 25% Q1 15 10% 10.5 USS 4306 CSS 542.4 0% Min 10 5% 10 CV 40.01629 Std Mean 2.454927 1% 10 T:Mean=0 7.902475 Pr>|T| 0.0001 Range 24 Num ^= 0 10 Num > 0 10 Q3-Q1 10 M(Sign) 5 Pr>=|M| 0.0020 Mode 15 Sgn Rank 27.5 Pr>=|S| 0.0020 W:Normal 0.93396 Pr<W 0.4716 *Diese Zeile erscheint durch Option normal.* Extremes Lowest Obs Highest Obs 10( 8) 18( 3) 11( 7) 20( 4) 15( 2) 25( 6) 15( 1) 29( 10) 17( 5) 34( 9) *Der folgende Teil erscheint durch die Option Plot.* Variable=ERTRAG Stem Leaf # Boxplot 3 4 1 | 2 59 2 +-----+ 2 0 1 | | 1 5578 4 *--+--* 1 01 2 | ----+----+----+----+ Multiply Stem.Leaf by 10**+1 Normal Probability Plot 32.5+ +*+++++ | *++*+++ 22.5+ +++*+++ | * +*++*+* 12.5+ * ++*++++ +----+----+----+----+----+----+----+----+----+----+ -2 -1 0 +1 +2 5. 4 Ein Auswahl von Prozeduren zur statistischen Analyse 5. 4. 1 Bivariate Zusammenhänge: Korrelation und Assoziation mit PROC CORR Mit der Prozedur Corr können übliche Korrelationskoeffizienten z. B. nach Pearson, Spearman und Kendall berechnet werden. Die Korrelation stellt hierbei ein Maß für die lineare Abhängigkeit von zwei numerischen Variablen dar. Zusätzlich zur Berechnung der Koeffizienten wird dann auch noch mit dem jeweiligen Koeffizienten getestet, ob von einer linearen Beziehung ausgegangen werden kann (H0:Rho=0). Übliche Verwendung der Prozedur: • PROC CORR <Data=SAS_File Korrelationsmethode>;

VAR NumVarliste; BY Varliste; Fehlt die Angabe der Methode, wird der Koeffizient nach Pearson berechnet. Fehlt die Var-Option, wird für alle numerischen Variablen der Korrelationskoeffizient und der p-Wert für den Test vs. 0 berechnet..

• Mit der Eingabe von Spearman und/oder Kendall für Korrelationsmethodet wird das Entsprechende mit dem Korrelationskoeffizienten nach Spearman und/oder Kendall durchgeführt.

/*Beispiel Proc Corr */ data tab; input blutdru chol @@;

Page 30: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

/*Daten von zehn Probanden, Blutdruck, Cholesterin*/ cards; 129 220 117 195 120 200 150 240 148 260 140 218 125 205 157 270 130 185 145 225 ; run; proc corr data=tab spearman; run; Man erhält im Ausgabefenster: Correlation Analysis 2 'VAR' Variables: BLUTDRU CHOL Simple Statistics Variable N Mean Std Dev Median Minimum Maximum BLUTDRU 10 136.1000 13.747323 135.000 117.000 157.000 CHOL 10 221.8000 27.832036 219.000 185.000 270.000 Spearman Correlation Coefficients / Prob > |R| under Ho: Rho=0 / N = 10 BLUTDRU CHOL BLUTDRU 1.00000 0.84242 0.0 0.0022 CHOL 0.84242 1.00000 0.0022 0.0

5. 4. 2 Zweistichprobentests 5. 4. 2. 1 Parametrisch, unabhängige Stichproben: PROC TTEST Die Prozedur TTEST berechnet den zweiseitigen t-Test für zwei unabhängige Stichproben sowohl unter Varianzhomogenität als auch -heterogenität. Außerdem wird ein Test auf Varianzhomogenität durchgeführt. Der Syntax lautet: • PROC TTEST <Data=SAS_File>;

CLASS Variable; VAR NumVarListe; Der t-Test wird für alle Variablen unter Var der SAS-Datei SAS_File durchgeführt. Die Stichproben werden nach der Class -Variablen gebildet.

• Steht vor Class Variable noch die Anweisung By VarListe; , so erfolgt die Analyse getrennt nach den By-Gruppen.

/* Beispiel Proc Ttest*/ data tab; /* Gewicht von Pilzen unter Vitaminzugabe (a) und ohne Vitaminzugabe (b) */ input gruppe$ gewicht @@; cards; a 16 b 18 a 34 b 27 a 21 b 12 a 29 b 15 a 19 b 23 a 28 b 24 a 20 b 30 a 26 b 17 a 22 b 31 a 25 ; run; Proc Ttest data=tab; class gruppe; var gewicht; run; Man erhält als Ausgabe: TTEST PROCEDURE Variable: GEWICHT GRUPPE N Mean Std Dev Std Error Minimum Maximum ---------------------------------------------------------------------------------------------- a 10 24.000 5.41602560 1.71269768 16.000 34.000 b 9 21.88888889 6.75359986 2.25119995 12.000 31.000 Variances T DF Prob>|T| --------------------------------------- Unequal 0.7463 15.4 0.4667 Equal 0.7554 17.0 0.4603 For H0: Variances are equal, F' = 1.55 DF = (8,9) Prob>F' = 0.5237 5. 4. 2. 2 Parametrisch, verbundenes Testproblem: PROC UNIVARIATE (s. 5.2.12) Definition einer neuen Variablen als Differenz Gruppe1- Gruppe2 und Analyse mit PROC UNIVARIATE :

Page 31: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

T:MEAN=0 Testwert PROB<ITI p-Wert

5. 4. 2. 3 Nichtparametrisch, unabhängige Stichproben: PROC NPAR1WAY Die Prozedur Npar1way berechnet nichtparametrische einfaktorielle Analysen für unabhängige Stichproben. Übliche Verwendung: • PROC NPAR1WAY <Data=SAS_File SAS_Verfahrensabkürzung>;

CLASS Variable; VAR NumVarListe; Für die SAS-Datei SAS_File wird das /die Verfahren unter SAS_Verfahrensabkürzung auf die Variablen unter Var angewendet. Die Einteilung in die Stichproben wird durch die Class-Variable vorgenommen. Die möglichen Verfahren sind: -ANOVA = gewöhnliche einfaktorielle Varianzanalyse -Median = Median-Test -Savage = Savage-Test -VW = Van-der-Waerden Test -Wilcoxon = Wilcoxon-Test, bei mehr als zwei Stichproben==> Kruskal-Wallis

• Erfolgt vor Class Variable noch die Anweisung By VarListe; , so erfolgt die Analyse getrennt nach den By-Gruppen.

/* Beispiel Proc Npar1way */ data tab; /* Gewicht von Pilzen unter Vitaminzugabe (a) und ohne Vitaminzugabe (b) */ input gruppe$ gewicht @@; cards; a 16 b 18 a 34 b 27 a 21 b 12 a 29 b 15 a 19 b 23 a 28 b 24 a 20 b 30 a 26 b 17 a 22 b 31 a 25 ; run; Proc Npar1way data=tab wilcoxon; class gruppe; var gewicht; run; Man erhält als Ausgabe. N P A R 1 W A Y P R O C E D U R E Wilcoxon Scores (Rank Sums) for Variable GEWICHT Classified by Variable GRUPPE Sum of Expected Std Dev Mean GRUPPE N Scores Under H0 Under H0 Score a 10 108.0 100.0 12.2474487 10.8000000 b 9 82.0 90.0 12.2474487 9.1111111 Wilcoxon 2-Sample Test (Normal Approximation) (with Continuity Correction of .5) S= 82.0000 Z= -.612372 Prob > |Z| = 0.5403 T-Test approx. Significance = 0.5480 Kruskal-Wallis Test (Chi-Square Approximation) CHISQ= 0.42667 DF= 1 Prob > CHISQ= 0.5136 5. 4. 2. 4 Nichtparametrisch, verbundenes Testproblem: PROC UNIVARIATE (s. 5.2.12) Definition einer neuen Variablen als Differenz Gruppe1- Gruppe2 und Analyse mit PROC UNIVARIATE :

M(Sign) Testwert Pr<=IMI p-Wert Sgn Rank Testwert Pr<=ISI p-Wert

Test- und p-Wert von Wilcoxon Zeichen- und Rank-sign-Test 5. 4. 2. 5 Dichotome Daten: PROC FREQ (s. 5.2.9) 5. 4. 3 Varianzanalyse im verallgemeinerten linearen Modell (PROC GLM) Die Prozedur GLM geht vom allgemeinen linearen Modell Y= Xß+ε aus. Die Parameterschätzung erfolgt nach der Methode der kleinsten Quadrate (least squares). Mit dieser Prozedur ist eine umfangreiche Anzahl von

Page 32: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

statistischen Analysen durchführbar: Einfache, multiple und polynomiale Regression, univariate und multivariate Varianzanalysen (ANOVA, MANOVA), wobei Meßwertwiederholungen (repeated measurements) und Kovariablen (Kovarianzanalyse) berücksichtigt werden können. In der praktischen Anwendung wird PROC GLM im Gartenbau und in der Biologie überwiegend dann angewendet, wenn mit der Varianzanalyse ein Mehrstichprobenvergleich mit anschließendem multiplen Mittelwertsvergleich erfolgen soll. Insbesondere für balanzierte Anlagen stellt die Prozedur ANOVA eine einfache (veraltete) Alternative zu PROC GLM dar. Hier wird zunächst das Modell I betrachtet, d.h. alle Faktoren sind fest. Als Kriterium eines festen Faktor soll vereinfacht gelten, daß: • der Faktor reproduzierbar ist • der Versuchsansteller an den Ausprägungsstufen des Faktors direkt interessiert ist. Allgemeiner Aufruf PROC GLM Modell I: PROC GLM; CLASS Klassifizierungsvariable(n); MODEL abhängige Variable(n) = Effekte der Klassifizierungsvariable(n); TEST H=Effekt E=Effekt; MEANS Effekte der Klassifizierungsvariable(n); RUN; Zwingend notwendig sind die CLASS- und MODEL-Anweisung in der genannten Reihenfolge. Optional sind die Anweisungen TEST und MEANS. Die Anweisung TEST ist in komplexen Varianzanalysen häufig erforderlich, um korrekte F-Tests durchzuführen (siehe Beispiel VA3-prg). Die Anweisung MEANS wird i.d.R. benötigt, da im Modell I die Mittelwerte der Faktorstufen von direktem Interesse sind. Beispieldatensatz: Kommentar: Der Ertrag (Zielvariable) wird in einem Versuch an drei Sorten in zwei Intensitätsstufen geprüft. Die Prüfung erfolgte an zwei Orten in drei Wiederholungen, wobei die Wiederholungen in vollständigen Blöcken angelegt wurden. Das Testniveau sei α= 0.05. DATA feldv; INPUT sor int ort bl ert @@; CARDS; 1 1 1 1 . 1 1 1 2 50.3 1 1 1 3 39.8 1 1 2 1 49.4 1 1 2 2 55.3 1 1 2 3 41.1 1 2 1 1 48.4 1 2 1 2 49.1 1 2 1 3 45.6 1 2 2 1 53.3 1 2 2 2 53.9 1 2 2 3 44.9 2 1 1 1 54.1 2 1 1 2 58.8 2 1 1 3 51.3 2 1 2 1 57.5 2 1 2 2 58.1 2 1 2 3 46.6 2 2 1 1 55.9 2 2 1 2 60.9 2 2 1 3 51.7 2 2 2 1 54.5 2 2 2 2 57.0 2 2 2 3 48.5 3 1 1 1 47.7 3 1 1 2 44.9 3 1 1 3 40.3 3 1 2 1 47.5 3 1 2 2 44.8 3 1 2 3 40.7 3 2 1 1 58.0 3 2 1 2 54.2 3 2 1 3 52.0 3 2 2 1 47.2 3 2 2 2 49.0 3 2 2 3 41.7 RUN; 5. 4. 3. 1 Einfaktorielle Varianzanalyse (Program VA1-prg) Aus dem Gesamtdatensatz feldv wird über einen weiteren data step ein Datensatz f1 erzeugt. In diesem liegt lediglich ein Faktor in verschieden Faktorstufen (Sorte) vor. DATA f1; SET feldv; If ort=1 AND int=1; RUN; PROC GLM DATA=f1; /* VA1-prg einfaktorielle Varianzanalyse */ CLASS sor; MODEL ert=sor; MEANS sor; RUN; Anmerkung: Ein Varianzanalysemodell enthält grundsätzlich das allgemeine Versuchsmittel und den Fehler. In der Modellanweisung sind diese Angaben nicht erforderlich. Output: Im 1-ten Teil (VA1-out 1) erfolgt die Angabe des Faktors bzw. der Faktoren (class) und ihrer Stufenzahl (levels), der Beobachtungsfälle und der analysierten Beobachtungen. VA1-out 1 General Linear Models Procedure Class Level Information Class Levels Values SOR 3 1 2 3 Number of observations in data set = 9 NOTE: Due to missing values, only 8 observations can be used.

Page 33: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Im 2-ten Teil des Outputs (VA1-out 2) folgt die Angabe der abhängigen Variable(n), der Varianzursache(n), der Freiheitsgrade (df), der Quadratsummenzerlegung (SQ), der Mittelquadrate (MQ) und der durchgeführten F-Statistik (F Value). Hier: F=96.6/22.3=4.32, die dazugehörige Überschreitungswahrscheinlichkeit ist (Pr > F). Zusätzlich erfolgt die Angabe des Bestimmtheitsmaßes (R-Square) für das Modell, den Variationskoeffizienten (C.V.), die Modellvarianz MSE und das Gesamtmittel des Versuchs (hier ERT Mean). VA1-out 2 General Linear Models Procedure Dependent Variable: ERT Sum of Mean Source DF Squares Square F Value Pr > F Model 2 193.2083333 96.6041667 4.32 0.0813 Error 5 111.7716667 22.3543333 Corrected Total 7 304.9800000 R-Square C.V. Root MSE ERT Mean 0.633511 9.768671 4.728037 48.4000000 Source DF Type I SS Mean Square F Value Pr > F SOR 2 193.2083333 96.6041667 4.32 0.0813 Source DF Type III SS Mean Square F Value Pr > F SOR 2 193.2083333 96.6041667 4.32 0.0813 Erläuterung: Die Varianzursache Modell (Model) liefert die Information, welchen Anteil das Gesamtmodell an der Variabilität erklärt, mit der dazugehörigen F-Statistik. Da das Gesamtmodell lediglich einen Einflußeffekt enthält, ist das Ergebnis mit der Varianzursache Sorte (SOR) identisch. Für die Varianzursache Sorte (SOR) werden zwei Typen von Quadratsummenzerlegungen geliefert (Typ I SS und Typ III SS), deren Ergebnisse in der einfaktoriellen (!) Varianzanalyse immer identisch sind. Im 3-ten Teil des Outputs (VA1-out 3) erfolgt über die optionale Anweisung MEANS die Ausgabe von Faktorstufenmittel (Mean) und Standardabweichung (SD) für den Faktor Ertrag. VA1-out 3 General Linear Models Procedure Level of -------------ERT------------- SOR N Mean SD 1 2 45.0500000 7.42462120 2 3 54.7333333 3.78989886 3 3 44.3000000 3.73630834 Interpretation: Für die Varianzursache Sorte beträgt die Überschreitungswahrscheinlichkeit des F-Wertes 0.0813. Da das Testniveau mit α=0.05 festgelegt wurde, wird die Nullhypothese beibehalten: zwischen den Stichprobenmitteln des Faktors Sorte bestehen keine Unterschiede. Ab Version 6.12 existieren Tests auf Varianzhomogenität in der Einweganlage (Mehrweganlagen könnten diesbezüglich ein mehrere Einweganlagen hilfeweise aufgesplittet werden). Zu empfehlen ist die quadratische Form des Levene (1960) Tests mit: DATA f1; SET feldv; If ort=1 AND int=1; RUN; PROC GLM DATA=f1; /* VA1-prg einfaktorielle Varianzanalyse */ CLASS sor; MODEL ert=sor; MEANS sor / HOVTEST=LEVENE; RUN; Dabei wird ein p-Wert reportiert, der die Abweichung von der globalen Homogenitätshypothese darstellt. Ergibt sich ein sehr kleiner p-Wert, so ist die Welch-Modifikation der Einwegvarianzanalyse angezeigt: MEANS faktor/ WELCH; 5. 4. 3. 2 Zweifaktorielle Varianzanalyse ohne Wiederholung - einfaktorielle Blockanlage (Program VA1B-prg) In einer zweifaktoriellen VA ohne Wiederholung ist die Wechselwirkung zwischen den Faktoren nicht zu erfassen. Jede Maßzahl stellt zugleich den Zellenmittelwert dar. Diese ANOVA ist im landwirtschaftlichen Versuchswesen häufig und ist auch als einfaktorielle vollständige Blockanlage mit festen Effekten bekannt. Im Vergleich zu VA1-prg muß die Variable Block (bl) in die CLASS- und MODEL-Anweisung aufgenommen werden. PROC GLM DATA=f1; /* VA1B-prg einfaktorielle Blockanlage */ CLASS sor bl; MODEL ert=sor bl; MEANS sor; RUN; OUTPUT VA1B-out (gekürzt):

Page 34: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

VA1B-out General Linear Models Procedure Dependent Variable: ERT Sum of Mean Source DF Squares Square F Value Pr > F Model 4 284.0758333 71.0189583 10.19 0.0430 Error 3 20.9041667 6.9680556 Corrected Total 7 304.9800000 Source DF Type I SS Mean Square F Value Pr > F SOR 2 193.2083333 96.6041667 13.86 0.0305 BL 2 90.8675000 45.4337500 6.52 0.0809 Source DF Type III SS Mean Square F Value Pr > F SOR 2 182.2825000 91.1412500 13.08 0.0330 BL 2 90.8675000 45.4337500 6.52 0.0809

Erläuterung: Da mehr als ein Einflußeffekt vorliegt, ist das Ergebnis der Varianzursache Modell (Model) nicht mehr mit dem Ergebnis der Varianzursache Sorte (SOR) und/oder Block (BL) identisch. Bei der zweifaktoriellen ANOVA muß zwischen den Quadratsummenzerlegungen Typ I und Typ III unterschieden werden. Lediglich bei gleicher Zellenbesetzung sind die Ergebnisse identisch. Typ I SS sind die sequentiellen Quadratsummen, die die Verminderung des Fehlers angeben, wenn der entsprechende Effekt in das Modell aufgenommen wird. Typ III SS sind die partiellen Quadratsummen und geben die Quadratsumme der entsprechenden Effekte unabhängig von anderen Effekten an. Daher sollte ausschließlich der Typ III im Modell I der ANOVA betrachtet werden. (Detaillierte Bezeichnung der Angaben finden sich unter ANOVA1-out) Interpretation: Für die Varianzursache Sorte (SOR) beträgt die Überschreitungswahrscheinlichkeit des F-Wertes 0.033. Da das Testniveau α=0.05 beträgt, wird die Nullhypothese verworfen: zwischen den Sorten treten signifi-kante Unterschiede auf. Anmerkung: Im Feldversuchswesen sind Blöcke i.d.R. nicht reproduzierbar und damit zufällig. Die Nichterfaßbarkeit der Wechselwirkung mit den Blöcken führt bei einfacher Zellenbesetzung direkt zu den korrekten F-Tests. (Der Faktor Block muß nicht in eine RANDOM-Anweisung aufgenommen werden.) 5. 4. 3. 3 Zweifaktorielle Varianzanalyse mit Wiederholung und Blockbildung - zweifaktorielle Blockanlage (Program VA2B-prg) Es erfolgt die Bildung des Datensatzes f2 aus dem Gesamtdatensatz feldv. Dieser Datensatz enthält die erhobenen Informationen an einem Ort. DATA f2; SET feldv; If ort=1; RUN; PROC GLM DATA=f2; /* VA2B-prg Zweifaktorielle Blockanlage */ CLASS sor int bl; MODEL ert=bl sor int sor*int; MEANS sor int sor*int; RUN; In der CLASS-Anweisung sind die drei Klassifizierungsvariablen Sorte (sor), Intensität (int) und Block (bl) aufgeführt. In der Modell-Anweisung wird neben den Haupteffekten (sor int bl) eine Wechselwirkung (sor*int) betrachtet. Über die MEANS-Anweisung werden Mittelwerte für alle in der Modellgleichung spezifizierten Effekte angefordert. Output VA2B-prg (gekürzt): VA2B-out General Linear Models Procedure Dependent Variable: ERT Source DF Type I SS Mean Square F Value Pr > F BL 2 147.1091569 73.5545784 13.31 0.0021 SOR 2 212.5433846 106.2716923 19.22 0.0006 INT 1 97.3733654 97.3733654 17.61 0.0023 SOR*INT 2 73.6207500 36.8103750 6.66 0.0168 Source DF Type III SS Mean Square F Value Pr > F BL 2 129.7328333 64.8664167 11.73 0.0031 SOR 2 217.1674167 108.5837083 19.64 0.0005 INT 1 87.4440455 87.4440455 15.82 0.0032 SOR*INT 2 73.6207500 36.8103750 6.66 0.0168 Erläuterung: Im Gegensatz zu VA1B-out liefert VA2B-out eine weitergehende Aufspaltung der Quadratsummenzerlegung in SS-BL, SS-SOR, SS-INT und SS-SOR*INT mit dementsprechenden Teststatistiken (F Value und Pr > F). (Detaillierte Bezeichnung der Angaben finden sich unter VA1-out. Der Unterschied zwischen den Quadratsummenzerlegungen Typ I und Typ III ist VA1B-out zu entnehmen, ebenso wie Anmerkungen zu Wechselwirkungen mit Blöcken). Interpretation: Da das Testniveau α=0.05 beträgt, sind sowohl die Haupteffekte SOR (p = 0.0005) und INT (p = 0.0032) als auch die Wechselwirkung SOR*INT (p = 0.0168) signifikant. Dies beinhaltet, daß die Faktoren Sorte und

Page 35: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Intensität nicht unabhängig voneinander betrachtet werden können. Das hat Konsequenzen für die Durchführung multipler Mittelwertsvergleiche (siehe 3.4). 5. 4. 3. 4 Dreifaktorielle Varianzanalyse mit Blockbildung sowie kreuz- und hierarchischer Klassifikation (Program VA3B-prg) Diese Versuchsanlage ist im landwirtschaftlichen Feldversuchswesen häufig und tritt auf, sobald ein zweifaktorieller Versuch mit Blockbildung an verschiedenen Orten durchgeführt wird. Der Faktor Block steht hierbei in Kreuzklassifikation mit zwei Faktoren, ist aber einem dritten Faktor hierarchisch untergeordnet (hier: nicht jeder Block tritt an jedem Ort auf). Dies Programm gestattet die Auswertung des vollständigen Beispieldatensatzes feldv. Es soll hier lediglich die Anwendung der TEST-Anweisungen demonstrieren und wird nicht im einzelnen besprochen. VA3B-prg Dreifaktorielle Varianzanalyse mit Blockanlage bei Kreuz- und hierarchischer Klassifikation bzw. zweifaktorielle Blockanlage an verschiedenen Orten (Modell I) PROC GLM DATA=feldv; CLASS sor int bl ort; MODEL ert=sor int ort sor*int ort*sor ort*int ort*sor*int bl(ort) sor*bl(ort) int*bl(ort) sor*int*bl(ort); TEST H=sor E=sor*bl(ort); TEST H=int E=int*bl(ort); TEST H=sor*int E=sor*int*bl(ort); TEST H=ort E=bl(ort); TEST H=ort*sor E=sor*bl(ort); TEST H=ort*int E=int*bl(ort); TEST H=ort*sor*int E=sor*int*bl(ort); RUN; Anmerkung zum OUTPUT (nicht dargestellt): Die korrekten F-Tests mit den dazugehörigen Überschreitungs-wahrscheinlichkeiten werden erst im Anschluß an die Varianztabelle zeilenweise ausgegeben. Hier treten häufig Verwechslungen auf. 5. 4. 3. 5 Multiple Mittelwertvergleiche (Version 6.12) Der F-Test in der ANOVA (siehe 3.1) kann lediglich die Frage beantworten, ob global Unterschiede zwischen den Faktorstufen bestehen oder nicht, jedoch wird man i.d.R. daran interessiert sein, zwischen welchen Gruppen Unterschiede bestehen. Dies könnte mit mehrfach durchgeführten t-Test beantwortet werden. Das führt ab drei Gruppen mit zunehmender Gesamtzahl von Vergleichen zu immer gravierenderen Fehlern, da das multiple Testniveau, z.B. αexp=0.05, nicht mehr eingehalten wird. Multiple Mittelwertvergleiche zielen darauf ab, in den paarweisen Vergleichen das vorgegebene Testniveau αexp=0.05 einzuhalten. Innerhalb der LSMEANS Option existieren folgende Mittelwertvergleiche: Syntax Verfahren Bemerkung ADJUST=BON Bonferroni-adjustierte t-Tests übliches α-Adjustierungsverfahren ADJUST=SIDAK Sidak-adjustierte t-Tests etwas besser als Bonferroni ADJUST=T unadjustierte t-Tests kein Niveau α-Verfahren ADJUST=DUNNETT many-to-one MCP nach Dunnett (1955) ADJUST=TUKEY all-pair MCP nach Tukey (1953) Kramer (1956) Version, auch für

unbalanziertes Design ADJUST=SCHEFFE Scheffe’s Projektionsmethode (weniger verbreitet) ADJUST=SMM/GT2 Hochberg Verfahren (weniger verbreitet) ADJUST=SIMULATE Simulationsverfahren s. auch PROC MULTTEST Mit dieser Option werden die p-Werte und die (1-α) Konfidenzintervalle2 für die jeweiligen Differenzen der (least square) Mittel berechnet, dessen Effekt angegeben wurde (auch Wechselwirkungen). Es sollen lediglich die multiplen Mittelwertvergleiche nach Ryan-Einot-Gabriel-Welsch (REGWQ) und Dunnett im Rahmen der MEANS-Anweisung (siehe 3.1) sowie die paarweisen Vergleiche über die LSMEANS-Anweisung betrachtet werden. Der Aufruf multipler Mittelwertvergleiche erfolgt in der MEANS-Anweisung, der der paarweisen Vergleiche über die LSMEANS-Anweisung, in der GLM-Prozedur. Allgemeiner Aufruf multiple Mittelwertvergleiche: MEANS Effekte der Klassifizierungsvariable(n) / Optionen; Während die Ausgabe der Mittelwerte für alle Effekte erfolgt, die in die Modellgleichung eingegangen sind, werden die multiplen Mittelwertvergleiche lediglich für die Haupteffekte ausgeführt. Unter Optionen ist die Bezeichnung des jeweiligen multiplen Tests nach SAS/STAT Guide zwingend erforderlich. Optional sind die

2 mit ALPHA=... definierbar

Page 36: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Angabe des Testniveaus (α-Testniveau; default =0.05) und die Angabe des Fehlerterms (E=Effekt), wenn gegen einen bestimmten Fehlerterm gezielt getestet werden soll. Bezeichnung des Ryan-Einot-Gabriel-Welsch- und des Dunnett-Test nach SAS/STAT Guide: REGWQ Anforderung des Ryan-Einot-Gabriel-Welsch-Testes, der alle paarweisen Vergleiche durchführt. Der Buchstabe Q deutet an, daß als Test eine Form der studentisierten Spannweite verwendet wird. Der Test stellt eine sequentielle Variante des früher häufig verwendeten Tukey-Tests dar. DUNNETT('Kontrollvariablenwert')}: Anforderung des zweiseitigen Dunnett-Tests, der alle Gruppen gegen eine zu spezifizierende Kontrollgruppe ('Kontrollvariablenwert') testet. Es wird die sogenannte many-to-one statistic verwendet. Einseitig auf Abfall: DUNNETTL('k...'), einseitig auf Anstieg DUNNETTU('k..). (Vorsicht: bei einseitiger Hypothesenformulierung sind die jeweils anderen Konfidenzintervalle nicht ±∞, sondern fälschlich als numrischer Wert angegeben. Allgemeiner Aufruf paarweise Vergleiche: LSMEANS Effekte der Klassifizierungsvariable(n) / Optionen; Mit LSMEANS werden adjustierte Erwartungswerte geschätzt, die nicht von der ungleichen Besetzungszahl der Gruppen beeinflußt werden. Während die multiplen Mittelwertvergleiche bei der MEANS-Anweisung lediglich für Haupteffekte ausgeführt werden, erfolgt hier ein paarweiser Vergleich für alle Effekte, die in die Modellgleichung der GLM-Prozedur eingegangen sind. Optional können die (adjustierten) p-Werte mittels PDIFF und die simultanen Konfidenzintervalle (CI) mittels CL bestimmt werden: Anweisung Ergebnis LSMEANS FAKTOR /PDIFF <OHNE> CL; unadjustierte p-Werte und CI für Allpaarvergleiche der t-Tests

mit gepooltem MQR-Schätzer LSMEANS FAKTOR/ PDIFF=ALL CL; adjustierte p-Werte und simultane CI für Allpaarvergleiche

nach Tukey/Kramer LSMEANS FAKTOR/ PDIFF=CONTROL (‘ KONTROLLGRUPPE’) CL;

zweiseitige adjustierte p-Werte und simultane CI für Vergleiche zur Kontrollgruppe nach Dunnett

LSMEANS FAKTOR/ PDIFF=CONTROLL (‘ KONTROLLGRUPPE’) CL;

einseitige adjustierte p-Werte und simultane CI für Vergleiche zur Kontrollgruppe nach Dunnett mit Di<C-

LSMEANS FAKTOR/ PDIFF=CONTROLU (‘ KONTROLLGRUPPE’) CL;

einseitige adjustierte p-Werte und simultane CI für Vergleiche zur Kontrollgruppe nach Dunnett mit Di>C-

Ein Adjustierung für Kovariable ist mittels LSMEANS FAKTOR / AT KOVARIABLE; möglich. Beispiel multiple Mittelwertvergleiche Im Programm VA1B-prg (siehe 3.1) werden im Anschluß an die ANOVA ein multipler Mittelwertvergleich nach Ryan-Einot-Gabriel-Welsch und ein Dunnett-Test angefordert. Letzterer prüft, ob ein Wert signifikant größer als die Kontrollgruppe= Sorte 3 (a-priori definiert) ist. PROC GLM DATA=f1; /* VA1B-prg einfaktorielle Blockanlage */ CLASS sor bl; MODEL ert=sor bl; MEANS sor; MEANS sor / REGWQ ALPHA=0.05; MEANS sor / DUNNETTU('3') ALPHA=0.05; RUN; OUTPUT multiple Mittelwertvergleich VA1B-prg(gekürzt): Ryan-Einot-Gabriel-Welsch Multiple Range Test for variable: ERT Alpha= 0.05 df= 3 MSE= 6.968056 Harmonic Mean of cell sizes= 2.571429 Critical Range 7.4087662 9.7280643 Means with the same letter are not significantly different. REGWQ Grouping Mean N SOR A 54.733 3 2 B 45.050 2 1 B B 44.300 3 3 Erläuterung: Es erfolgt zunächst die Angabe des Testniveaus (α), der Freiheitsgrade (df) und des verwendeten Fehlerterms (MSE) mit den Grenzdifferenzen auf jeder sequentiellen Teststufe (Critical Range). Die Darstellung erfolgt in einer Form, in der nicht signifikant unterscheidbare Mittelwerte mit gleichen Buchstaben gekennzeichnet werden.

Dunnett's One-tailed T tests for variable: ERT Alpha= 0.05 Confidence= 0.95 df= 3 MSE= 6.968056 Critical Value of Dunnett's T= 2.961

Page 37: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Comparisons significant at the 0.05 level are indicated by '***'. Simultaneous Simultaneous Lower Difference Upper SOR Confidence Between Confidence Comparison Limit Means Limit 2 - 3 4.051 10.433 16.816 *** 1 - 3 -6.386 0.750 7.886 Erläuterung: Die Darstellung der paarweisen Vergleiche gegen die Kontrollgruppe Sorte 3 erfolgt in Form simultaner Konfidenzintervalle. Interpretation: Sowohl nach dem REGWQ- als auch nach dem Dunnett-Test ist die Sorte 2 signifikant ertragreicher als die Sorte 3. Dies gilt nicht für die Sorte 1. Anmerkung: Der REGWQ Test testet zusätzlich die Fragestellung zweiseitig (ertragreicher,ertragsärmer), einschließlich des Vergleichs Sorte 1 gegen Sorte 3. Die größere Testschärfe des Dunnett-Test bei dieser Fragestellung wird bei Verwendung der Testprozeduren im Programm VA1-prg deutlich (nicht dargestellt). Beispiel paarweise Vergleiche Am Programm VA2B-prg (siehe 3.1) soll die Anwendung des paarweisen Vergleichs über LSMEANS dargestellt werden. Anmerkung: Die in den Kommentarzeilen angeforderten multiplen Mittelwertvergleiche sind bei Vorliegen signifikanter Wechselwirkungen nicht aussagekräftig. PROC GLM DATA=f2; /* VA2B-prg Zweifaktorielle Blockanlage */ CLASS sor int bl; MODEL ert=bl sor int sor*int; MEANS sor int sor*int; /* MEANS sor / REGWQ ALPHA=0.05; MEANS int / REGWQ ALPHA=0.05; */ LSMEANS sor*int /PDIFF; RUN; OUTPUT paarweise Vergleiche VA2B-prg Least Squares Means SOR INT ERT Pr > |T| H0: LSMEAN(i)=LSMEAN(j) LSMEAN i/j 1 2 3 4 5 6 1 1 45.6966667 1 . 0.3839 0.0026 0.0010 0.5393 0.0026 1 2 47.7000000 2 0.3839 . 0.0052 0.0017 0.1103 0.0052 2 1 54.7333333 3 0.0026 0.0052 . 0.4743 0.0004 1.0000 2 2 56.1666667 4 0.0010 0.0017 0.4743 . 0.0002 0.4743 3 1 44.3000000 5 0.5393 0.1103 0.0004 0.0002 . 0.0004 3 2 54.7333333 6 0.0026 0.0052 1.0000 0.4743 0.0004 . NOTE: To ensure overall protection level, only probabilities associated with pre-planned comparisons should be used. Erläuterung: Im Anschluß an die Ausgabe der Mittelwerte und Standardabweichungen der Gruppen (nicht dargestellt) folgt die Ausgabe der adjustierten Erwartungswerte mit den Überschreitungswahrscheinlichkeiten der durchgeführten t-Tests. Anmerkung:: Zur Kontrolle des versuchsbezogenen Fehlers kann eine Bonferroni- Korrektur vorgenommen werden (hier α=0.003=0.05/15), womit eine neue Signifikanzgrenze festgelegt wird. 5. 4. 4 Kovarianzanalyse Bei einer Kovarianzanalyse wird ein Varianzanalysemodell erweitert, indem eine oder mehrere quantitative Kovariablen mit in das Modell aufgenommen werden. Eine Kovarianzanalyse kann mit der Prozedur GLM durchgeführt werden, die Kovariable steht dabei am Ende der MODEL-Anweisung. Die LSMEANS-Anweisung bewirkt die Ausgabe der auf einen gemeinsamen Wert der Kovariable adjustierten Erwartungswerte. 15 Gartencenter verkaufen ein bestimmtes Düngemittel. Die Wirkung von drei unterschiedlichen Plazierungen des Düngers auf den Verkauf wird bei jeweils fünf Geschäften untersucht. Beobachtet wird die Anzahl y verkaufter Packungen, nachdem man den Dünger neu plaziert hat. Als Kovariable wird die Anzahl x der zuvor verkauften Düngerpackungen berücksichtigt. Programm: DATA bsp3_2; INPUT gruppe rep y x; CARDS; 1 1 38 21 1 2 39 26 1 3 36 22 1 4 45 28 1 5 33 19 2 1 43 34 2 2 38 26 2 3 38 29 2 4 27 18 2 5 34 25 3 1 24 23 3 2 32 29

Page 38: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

3 3 31 30 3 4 21 16 3 5 28 29 RUN; PROC GLM DATA=bsp3_2; CLASS gruppe; MODEL y=gruppe x; LSMEANS gruppe; RUN; Output: General Linear Models Procedure Class Level Information Class Levels Values GRUPPE 3 1 2 3 Number of observations in data set = 15 Dependent Variable: Y Source DF Sum of Squares Mean Square F Value Pr > F Model 3 607.82869148 202.60956383 57.78 0.0001 Error 11 38.57130852 3.50648259 Corrected Total 14 646.40000000 R-Square C.V. Root MSE Y Mean 0.940329 5.540120 1.87256044 33.80000000 Source DF Type I SS Mean Square F Value Pr > F GRUPPE 2 338.80000000 169.40000000 48.31 0.0001 X 1 269.02869148 269.02869148 76.72 0.0001 Source DF Type III SS Mean Square F Value Pr > F GRUPPE 2 417.15091370 208.57545685 59.48 0.0001 X 1 269.02869148 269.02869148 76.72 0.0001 General Linear Models Procedure Least Squares Means GRUPPE Y LSMEAN 1 39.8174070 2 34.7420168 3 26.8405762 Die Globalhypothese der Gleichheit der drei adjustierten Mittelwerte kann mit dem F-Test überprüft werden. Der zugehörige F-Wert von 59.48 ist der Typ III-Zerlegung zu entnehmen. Auch für den Test, ob der Einfluß der Kovariable auf die Zielgröße signifikant ist, wird ein F-Test durchgeführt. Die zweite Zeile der Typ III-Zerlegung gibt hierfür den F-Wert von 76.72 an. 5. 4. 5 Regressionsmodelle in GLM Für lineare Regressionsmodelle steht die Prozedur REG (Kapitel 5.4.6) zur Verfügung, jedoch ist die Berechnung auch mit der Prozedur GLM möglich. Insbesondere sind folgende Modelle möglich(mit A ... qualitativer Faktor, X ... quantitative Variable): MODEL= A X; Kovarianzanalyse Modell (s. 5.4.4) MODEL= A X(A); Modell mit unterschiedlichen Anstiegen der Regression MODEL= A X X*A; Parallel-Line Model Beispiel: Der Einfluß des Alters x auf die Höhe y von Bäumen soll in einem linearen Regressionsmodell untersucht werden. DATA bsp3_3; INPUT x y; CARDS; 5 22 10 28 15 40 20 48 25 62 RUN; PROC GLM DATA=bsp3_3; MODEL y=x; RUN; Output: General Linear Models Procedure Number of observations in data set = 5

Page 39: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Dependent Variable: Y Source DF Sum of Squares Mean Square F Value Pr > F Model 1 1000.00000000 1000.00000000 187.50 0.0008 Error 3 16.00000000 5.33333333 Corrected Total 4 1016.00000000 R-Square C.V. Root MSE Y Mean 0.984252 5.773503 2.30940108 40.00000000 Source DF Type I SS Mean Square F Value Pr > F X 1 1000.00000000 1000.00000000 187.50 0.0008 Source DF Type III SS Mean Square F Value Pr > F X 1 1000.00000000 1000.00000000 187.50 0.0008 T for H0: Pr > |T| Std Error of Parameter Estimate Parameter=0 Estimate INTERCEPT 10.00000000 4.13 0.0258 2.42212028 X 2.00000000 13.69 0.0008 0.14605935 Das Bestimmtheitsmaß R-Square beträgt 0.984. Die Schätzung für den Intercept-Parameter beträgt 10, die Schätzung für die Steigung 2, es ergibt sich somit folgende Regressionsgleichung: y= 10 + 2x Beide Parameter dieser Gleichung sind zum 5%-Niveau signifikant von Null verschieden, die jeweiligen P-Werte betragen 0.0258 und 0.0008. 5. 4. 6 PROC REG Wie in Kapitel 5.4.5 erwähnt, steht für lineare Regressionsanalysen die Prozedur REG zur Verfügung. Die Syntax ähnelt der der Prozedur GLM. In der MODEL-Anweisung stehen links des Gleichheitszeichens die abhängigen und rechts davon die unabhängigen Variablen, jeweils durch eine Leertaste getrennt. 5. 4. 6. 1 Lineare Regressionsanalyse Das Beispiel aus Kapitel 5.3.3 soll nun mit der Prozedur REG berechnet werden. DATA bsp3_3; INPUT x y; CARDS; 5 22 10 28 15 40 20 48 25 62 RUN; PROC REG DATA=bsp3_3; MODEL y=x; TEST x=1.7; PLOT y*x; RUN; Output: Model: MODEL1 Dependent Variable: Y Analysis of Variance Sum of Mean Source DF Squares Square F Value Prob>F Model 1 1000.00000 1000.00000 187.500 0.0008 Error 3 16.00000 5.33333 C Total 4 1016.00000 Root MSE 2.30940 R-square 0.9843 Dep Mean 40.00000 Adj R-sq 0.9790 C.V. 5.77350 Parameter Estimates Parameter Standard T for H0: Variable DF Estimate Error Parameter=0 Prob > |T| INTERCEP 1 10.000000 2.42212028 4.129 0.0258 X 1 2.000000 0.14605935 13.693 0.0008 Dependent Variable: Y Test: Numerator: 22.5000 DF: 1 F value: 4.2188 Denominator: 5.333333 DF: 3 Prob>F: 0.1323 Zusätzlich zu den Ergebnissen von Kapitel 5.3.3 wurde hier noch mit einem F-Test getestet, ob die Steigung der Regressionsgeraden gleich 1.7 ist (P-Wert 0.1323). Mit der Anweisung PLOT wird ein Scatterplot der Punktwolke erzeugt (hier nicht abgebildet). 5. 4. 6. 2 Quasilineare Regressionsanalyse

Page 40: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Eine Reihe nichtlinearer Modelle läßt sich durch eine Transformation in ein lineares Modell überführen, was numerisch wesentlich leichter als ein eigentlich nichtlineares Modell (s.u.) zu behandeln ist. Man suche eine geeignete Transformation ins lineare Modell. Dann schätze man im linearen Modell. Daraufhin transformiere man mit diesen Schätzgrößen zurück ins Originalmodell. Transformationsbeispiele:

Modell transformiertes Modell y=axb ln(y)=ln(a)+bln(x) y=aexp(bx) ln(y)=ln(a)+bx y=(a+bx)-1 1/y=a+bx y=x/(a+bx) 1/y=a+b/x y=1/(a+bexp(-x)) 1/y=a+bexp(-x) y=axb exp(cx) ln(y)=ln(a)+bln(x)+cx y=a+b/x y=a+bz mit z=1/x y=a/(b+x) 1/y=(b/a)+x/a usw.

5. 4. 6. 3 Multiple Regressionsanalyse Für die multiple Regression müssen an jeder Beobachtungseinheit neben der abhängigen Variable y auch mehrere unabhängige Variablen x1,...,xm erfaßt werden. Bei konstanter Bodentemperatur wird der für Pflanzen verfügbare Phosphorgehalt y in Abhängigkeit von drei verschiedenen Phosphorfraktionen x1, x2, x3 beobachtet. DATA bsp4_3; INPUT x1 x2 x3 y; CARDS; 0.4 53 158 64 0.4 23 163 60 3.1 19 37 71 0.6 34 157 61 4.7 24 59 54 1.7 65 123 77 9.4 44 46 81 10.1 31 117 93 11.6 29 173 93 12.6 58 112 51 10.9 37 111 76 23.1 46 114 96 23.1 50 134 77 21.6 44 73 93 23.1 56 168 95 1.9 36 143 54 26.8 58 202 168 29.9 51 124 99 RUN; PROC REG DATA=bsp4_3; MODEL y=x1 x2 x3; RUN; Output: Model: MODEL1 Dependent Variable: Y Analysis of Variance Sum of Mean Source DF Squares Square F Value Prob>F Model 3 6806.11145 2268.70382 5.689 0.0092 Error 14 5583.49966 398.82140 C Total 17 12389.61111 Root MSE 19.97051 R-square 0.5493 Dep Mean 81.27778 Adj R-sq 0.4528 C.V. 24.57069 Parameter Estimates Parameter Standard T for H0: Variable DF Estimate Error Parameter=0 Prob > |T| INTERCEP 1 43.652198 18.01021075 2.424 0.0295 X1 1 1.784780 0.53769551 3.319 0.0051 X2 1 -0.083397 0.41770557 -0.200 0.8446 X3 1 0.161133 0.11166524 1.443 0.1710

Page 41: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Im oberen Teil des Outputs findet sich neben der Quadratsummenzerlegung der P-Wert von 0.0092 für den F-Test der Hypothese, daß alle drei den unabhängigen Variablen zugeordneten Regressionskoeffizienten gleich Null sind. In der Mitte ist u.a. das Bestimmtheitsmaß R-square sowie das adjustierte Bestimmtheitsmaß Adj R-sq angegeben. Letzteres dient dem Vergleich von Modellen mit unterschiedlich vielen unabhängigen Variablen. Im unteren Teil sind die Parameterschätzungen dargestellt. Zudem wird jeweils mit einem t-Test überprüft, ob sich die einzelnen Regressionskoeffizienten signifikant von Null unterscheiden. 5. 4. 6. 4 Polynomiale Regressionsanalyse sowie andere Arten Für polynomiale Regressionsanalysen sind keine weiteren Prozeduren oder Optionen nötig, da die Daten im DATA-Step entsprechend modifiziert werden können. Für eine Gleichung zweiten Grades y = a + b x + c x² kann mit der zusätzlichen Variable x² die oben beschriebene multiple Regression angewandt werden. Mit der Option NOINT in der MODEL-Anweisung

MODEL ...=... / NOINT; erhält man ein Modell ohne Intercept-Parameter, das dann sinnvoll ist, wenn die Regressionsgerade durch den Ursprung läuft. Mit der Option SELECTION=... in der MODEL-Anweisung kann zwischen verschiedenen Variablen-Auswahlmethoden gewählt werden (vgl. z.B. Dufner et al., 1992). 5.4.7 Gemischtes lineares Modell 5.4.7.1 Einleitung Die Gleichung y = 1N µ + X β + Z b + ε , mit y = (y1,..., yN)’ N - dimensionaler Zufallsvektor, 1N = N - dimensionaler Einheitsvektor, µ allgemeines Mittel, X = N x r1 - Matrix, Z = N x r2 - Matrix, X, Z Designmatrizen, β = r1 - dimensionaler Vektor von unbekannten Konstanten, b = r2 - dimensionaler Vektor von Zufallsvariablen, multivariat normalverteilt mit Erwartungswertvektor 0 und Varianz-Kovarianzmatrix G: N(0, G), ε = N - dimensionaler Vektor von Zufallsvariablen, multivariat normalverteilt mit Erwartungswertvektor 0 und Varianz-Kovarianzmatrix R: N(0, R), wobei b und ε als unabhängig voneinander angenommen werden, heißt gemischtes lineares Modell. Die Varianz-Kovarianzmatrix von y ist somit V = ZGZ’ + R; daher können durch entsprechende Wahl von G und R beliebige Varianz-Kovarianzstrukturen, z.B. ‘SIMPLE, COMPOUND SYMMETRY oder UNSTRUCTURED’, erzeugt werden. Falls V bekannt ist, so sind die Schätzer (Est(.)): Est(β) = (X’V-1X)- X’V-1 y Est(b) = GZ’V-1 (y - X Est(β)) BLUE (best linear unbiased estimator) bzw. BLUP (best linear unbiased predictor), wobei (X’V-1X)- die verallgemeinerte Inverse der Matrix (X’V-1X) bezeichnet, d.h. (X’V-1X) (X’V-1X)- (X’V-1X) = (X’V-1X). Ist V unbekannt, so werden die Schätzer mit Est(V) berechnet und behalten dennoch in vielen praktischen Fällen ihre Optimalitätseigenschaften. Man unterscheidet X ≠ 0 , Z = 0 Modell I - nur feste Faktoren X = 0 , Z ≠ 0 Modell II - nur zufällige Faktoren X ≠ 0 , Z ≠ 0 Modell III - feste und zufällige Faktoren. Die allgemeinste Betrachtungsweise bildet Modell III, da man beide anderen Modelle als Spezialfälle erhält. Fester Faktor (fixed factor): Ein Faktor heißt fest, wenn seine Stufen eindeutig definierte, wiederholbare Ausprägungen des Faktors sind. Die Aussagen, die aufgrund eines Versuches mit einem festen Faktor gemacht werden, gelten nur für die im Versuch verwendeten Faktorstufen.

Page 42: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Zufälliger Faktor (random factor): Ein Faktor heißt zufällig, wenn seine Stufen eine zufällige Auswahl aus einer Grundgesamtheit von Stufen dieses Faktors darstellen. Die Aussagen, die aufgrund eines Versuches mit einem zufälligen Faktor gemacht werden, beziehen sich somit auf die Grundgesamtheit der Stufen des Faktors. Modell I: Beispiel 1: In einem Feldversuch werden 4 verschiedene Weizensorten (A, B, C, D) hinsichtlich aufgetretener Schädigungen durch Insekten verglichen. Dazu werden für jede Sorte maximal 4 Parzellen verwendet. Pro Parzelle werden zufällig 20 Pflanzen ausgewählt und jeweils anhand einer Punkteskala von 0 bis 10 beurteilt. Für jede Parzelle liegt der Mittelwert der 20 Einzelwerte vor:

A B C D 3.90 4.05 4.25

3.60 4.20 4.05 3.85

4.15 4.60 4.15 4.40

3.35 3.80

Die Auswertung des einfaktoriellen Versuchsdesigns yij = µ + αi + εij , i = 1,...,4, j = 1,...,ni erfolgt durch die folgende GLM - Prozedur PROC GLM DATA = BEISP1; CLASS WHEAT; MODEL DAMAGE = WHEAT; RUN; Für den festen Faktor Weizen mit den Stufen A, B, C und D erhält man das Ergebnis, daß zwischen den 4 Sorten ein signifikanter Unterschied (p = 0.0293) hinsichtlich der Schädigung durch Insekten besteht. Eine Verallgemeinerung auf andere Weizensorten ist jedoch nicht möglich. 5.4.7.2 Modell II - Varianzkomponentenschätzung Beispiel 2: Gewächshausversuch über den Ertrag einer Weizensorte, die auf verschieden gedüngten Boden gezogen wurde und unter verschiedener chemischer Behandlung steht. Interesse besteht in der Prüfung, ob zwischen den Erträgen der Weizensorte erstens bei unterschiedlicher Bodenbehandlung, zweitens bei verschiedenartiger chemischer Behandlung signifikante Unterschiede bestehen und drittens ob eine Wechselwirkung der beiden Faktoren nachweisbar ist. Für jede Kombination der beiden Behandlungen sind 3 Töpfe Weizen vorgesehen; ferner wird angenommen, daß die Stufen der beiden Faktoren zufällig ausgewählt wurden:

Bodenbehandlung Chemische Behandlung Unbehandelt N + O CO2 - Gas H2CO3

Unbehandelt

21.4 21.2 20.1

20.9 20.3 19.8

19.6 18.8 16.4

17.6 16.6 17.5

Strohdüngung

12.0 14.2 12.1

13.6 13.3 11.6

13.0 13.7 12.0

13.3 14.0 13.9

Stroh - und PO4 -

Düngung

13.5 11.9 13.4

14.0 15.6 13.8

12.9 12.9 13.1

12.4 13.7 13.0

Stroh - , PO4 - +

Kalkdüngung

12.8 13.8 13.7

14.1 13.2 15.3

14.2 13.6 13.3

12.0 14.6 14.0

Das zweifaktorielle Modell mit zufälligen Effekten wird dargestellt durch: yijk = µ + ai + bj + (ab)ij + εijk , i, j = 1,...,4, k = 1,...,3. Allgemeines Mittel: µ Faktor Düngung: ai u.i.v. ∼ N(0, σA

2) Faktor Chemische Behandlung: bj u.i.v. ∼ N(0, σB

2) Interaktion: (ab)ij u.i.v. ∼ N(0, σAB

2) Fehlerterm: εijk u.i.v. ∼ N(0, σε

2) ai , bj , (ab)ij und εijk paarweise unabhängig.

Page 43: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Die Auswertung erfolgt mittels der GLM - Prozedur PROC GLM DATA = BEISP2; CLASS A B; MODEL ERTRAG = A B; RANDOM A B / TEST; RUN; und liefert den Ausdruck Dependent Variable: Ertrag Source DF Type I SS Mean Square F Value Pr > F A 3 306.2422917 102.0807639 124.30 0.0001 B 3 9.1706250 3.0568750 3.72 0.0211 A*B 9 25.4618750 2.8290972 3.44 0.0045 Source DF Type I SS Mean Square F Value Pr > F A 3 306.2422917 102.0807639 124.30 0.0001 B 3 9.1706250 3.0568750 3.72 0.0211 A*B 9 25.4618750 2.8290972 3.44 0.0045 Source Type III Expected Mean Square A Var(Error) + 3 Var(A*B) + 12 Var(A) B Var(Error) + 3 Var(A*B) + 12 Var(B) A*B Var(Error) + 3 Var(A*B)

Tests of Hypotheses for Random Model Analysis of Variance Dependent Variable: Ertrag Source: A Error: MS(A*B) Denominator Denominator DF Type III MS DF MS F Value Pr > F 3 102.08076389 9 2.8290972222 36.0825 0.0001 Source: B Error: MS(A*B) Denominator Denominator DF Type III MS DF MS F Value Pr > F 3 3.056875 9 2.8290972222 1.0805 0.4054 Source: A*B Error: MS(Error) Denominator Denominator DF Type III MS DF MS F Value Pr > F 9 2.8290972222 32 0.82125 3.4449 0.0045 Im obigen balancierten Design können aufgrund des Gleichungssytems: E(MS(A)) = Var(Error) + 3 Var(A*B) + 12 Var(A) E(MS(B)) = Var(Error) + 3 Var(A*B) + 12 Var(B) E(MS(AB) = Var(Error) + 3 Var(A*B) E(MS(Error)) = Var(Error) auf einfache Weise erwartungstreue Schätzer (Est(.)) für die Varianzkomponenten hergeleitet werden: Est(σε

2) = 0.82 Est(σAB

2) = (2.83 - 0.82)/3 = 0.67 Est(σB

2) = (3.06 - 0.82 - 3*0.67)/12 = 0.02 Est(σA

2) = (102.08 - 0.82 - 3*0.67)/12 = 8.27. Die Variabilität zwischen den Bodenbehandlungen ist relativ hoch, während diejenige zwischen den chemischen Behandlungen vernachlässigbar ist. Neben dieser sogenannten Momentenmethode (TYPE I, TYPE I = TYPE III im balancierten Design) bietet die Prozedur PROC VARCOMP noch drei weitere Schätzmethoden an: • ML: Maximum Likelihood • REML: Restricted Maximum Likelihood • MIVQUE0: Minimum variance quadratic unbiased estimation. Diese Methoden legen im Gegensatz zur Momentenmethode die Normalverteilung zugrunde (ML), bzw. schränken zusätzlich den Parameterraum ein (REML) oder verlangen, daß der Schätzer sich als quadratische Funktion in den Beobachtungen darstellen läßt (MIVQUE0). Man beachte, daß man bei TYPE I und MIVQUE0 negative Varianzschätzungen erhalten kann (siehe auch Searle, 1987: Linear Models for Unbalanced Data, John Wiley). PROC VARCOMP METHOD = TYPE I;

Page 44: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

CLASS A B; MODEL ERTRAG = A B; RUN; Setzt man bei METHOD = ML, REML oder MIVQUE0, so erhält man die entsprechenden Schätzungen. 5.4.7.3 Modell III 5.4.7.3.1 Gemischtes zweifaktorielles Design Beispiel 3: Beim Gewächshausversuch (Beispiel 2) wird nun angenommen, daß die Bodenbehandlung fest vorgegeben ist, jedoch die chemischen Behandlungen zufällige Stichproben darstellen. Das Modell ändert sich dann wie folgt: yijk = µ + αi + bj + (αb)ij + εijk , i, j = 1,...,4, k = 1,...,3. Allgemeines Mittel: µ Faktor Düngung: α i Faktor Chemische Behandlung: bj u.i.v. ∼ N(0, σB

2) Interaktion: (αb)ij u.i.v. ∼ N(0, σαB

2) Fehlerterm: εijk u.i.v. ∼ N(0, σε

2) bj , (αb)ij und εijk paarweise unabhängig. Die Auswertung kann mittels der folgenden GLM - Prozedur erfolgen PROC GLM DATA = BEISP2; CLASS A B; MODEL ERTRAG = A B; RANDOM B A*B / TEST; RUN; Es sei darauf hingewiesen, daß z.B. im unbalancierten Falle die Erwartungswerte der ‘Mean Squares’ nicht von der einfachen Gestalt sind, so daß exakte F - Tests daraus abgeleitet werden können. In diesen Fällen ist die Approximation nach Satterthwaite zu verwenden, die es ermöglicht, Quasi - F-Tests herzuleiten. Gemischte Modelle können jedoch einfacher und auch allgemeiner durch die Prozedur PROC MIXED ausgewertet werden PROC MIXED DATA = BEISP2; CLASS A B; MODEL ERTRAG = A; RANDOM B A*B; RUN; Dabei ist zu beachten, daß in der MODEL - Anweisung nur feste Faktoren aufgelistet werden.

The MIXED Procedure REML Estimation Iteration History Iteration Evaluations Objective Criterion 0 1 68.25057267 1 1 60.34973828 0.000000 Convergence criteria met

Covariance Parameter Estimates (REML) Cov Parm Ratio Estimate Std Error Z Pr > Z B 0.02311292 0.01898148 0.23582416 0.08 0.9358 A*B 0.81495575 0.66928241 0.44978680 1.49 0.1368 Residual 1.00000000 0.82125000 0.20531250 4.00 0.0001 Model Fitting Information for Ertrag Description Value Observations 48.0000 Variance Estimate 0.8213 Standard Deviation Estimate 0.9062 REML Log Likelihood -70.6082 Akaike’s Information Criterion -73.6082 Schwarz’s Bayesian Criterion -76.2844 -2 REML Log Likelihood 141.2163

Tests of Fixed Effects Source NDF DDF Type III F Pr > F A 3 9 36.08 0.0000 Desweiteren sei darauf hingewiesen, daß SAS das Problem überparametrisierter Modelle durch die generelle Verwendung von verallgemeinerten Inversen löst und auf den Gebrauch der sogenannten Reparametri-sierungsbedingungen (z.B. Σ αi = 0) verzichtet. Legt man jedoch entsprechende Bedingungen für das gemischte zwei-faktorielle Design zugrunde, so ändern sich die Erwartungswerte der Quadratsummen und entsprechend die Teststatistiken (siehe Searle, 1971: Linear Models, John Wiley).

Page 45: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

5.4.7.3.2 Zweiperioden - Crossover Beispiel 4: J. B. Lawes versus J. Liebig (1847). Einfluß von organischen bzw. mineralischen Nährstoffen auf den Weizenertrag (B. Jones, M.G. Kenward (1989), Design and Analysis of Crossover Trials). Liebig: Aus der Atmosphäre beziehen die Pflanzen ausreichend viel organische Nährstoffe; zur Steigerung des Ertrages müssen daher mineralische Nährstoffe hinzugefügt werden. Lawes widersprach dieser Vermutung und führte zur Überprüfung den folgenden Feldversuch durch:

Jahr 1 Jahr 2 Feld 1 O M Feld 2 M O

Beim Basis - Zweiperioden - Crossover werden 2 Behandlungen 1(A) und 2(B) verglichen, indem jede Versuchseinheit in zwei zeitlich aufeinanderfolgenden Perioden mit beiden Methoden behandelt werden. Zwischen den Behandlungen bzw. Perioden liegt eine sogenannte Washout - Phase, in der die Wirkung der ersten Behandlung abklingen soll. Es werden zwei unabhängige Stichproben mit den Umfängen n1 und n2 zugrunde gelegt. Dabei können n1 und n2 grundsätzlich verschieden voneinander sein; zur Optimierung der Effizienz des Versuchs sollte man jedoch gleich große Stichprobenumfänge anstreben. Die 1. Teilstichprobe wird in der ersten Periode der Behandlung A und in der 2. Periode der Behandlung B unterworfen; die 2. Teilstichprobe wird den beiden Behandlungen in umgekehrter Reihenfolge unterworfen.

Sequenz Periode 1 Washout Periode 2 1 A B 2 B A

Statistisches Modell: Yijk = µ + sij + πk + φ2-δik + δ2k λi + εijk , δik = 1 für i = k und δik ≠ 0 für i ≠ k , d.h. Y1j1 = µ + s1j + π1 + φA + ε1j1

Y1j2 = µ + s1j + π2 + φB + λA + ε1j2 , j = 1,...,n1

Y2j1 = µ + s2j + π1 + φB + ε2j1

Y2j2 = µ + s2j + π2 + φA + λB + ε2j2 , j = 1,...,n2 . wobei Yijk die Beobachtung bei der j-ten Versuchseinheit, in der i-ten Sequenz und aus der k-ten Periode, µ das allgemeine Mittel, sij die zufälligen Effekte der j-ten Versuchseinheit aus der i-ten Sequenz, wobei sij u. i. v. ∼ Φ(x/σs ), πk die Periodeneffekte, φi die Behandlungseffekte, φ1 = φA , φ2 = φB , λ i die Residualeffekte, λ1 = λA , λ2 = λB , εijk die Residualfehler mit εijk u. i. v. ∼ Φ(x/σε ), unabhängig von den Effekten der Versuchseinheiten, bezeichnet.

Sequenz Periode 1 Periode 2 1 µ + π1 + φA µ + π2 + φB + λA 2 µ + π1 + φB µ + π2 + φA + λB

i. Nur Behandlungsunterschiede, keine Residual - und Periodenunterschiede A. .A B. .B ii. Behandlungs- und Periodenunterschiede, keine Residualunterschiede A. .A B. .B

Page 46: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

iii. Behandlungs- und unterschiedliche Residualeffekte A. .A .B B. Ein Periodenunterschied ist vorhanden, wenn die beiden Perioden unterschiedliche Periodeneffekte haben. Dies wirkt sich so aus, daß das Mittel der beiden Behandlungswirkungen in der 2. Periode auf einem anderen Niveau liegt als das in der 1. Periode. Ursache kann dafür z.B. sein: Beeinträchtigung der Behandlungswirkungen durch äußere Einflüsse, die sich im Laufe der Zeit ändern und dadurch andere Ausgangsbedingung in der 2. Periode. Ein Residualunterschied ist vorhanden, wenn die beiden Behandlungen unterschiedliche Residualeffekte haben. Dies wirkt sich so aus, daß der Behandlungsunterschied in der 2. Periode verschieden ist von dem in der 1. Periode. Die wichtigsten Ursachen hierfür sind: zu kurze Washout - Phase, Entzugseffekte der wirksamen Behandlung oder Deckeneffekte. Ein Behandlungsunterschied ist vorhanden, wenn die Wirkungen der beiden Behandlungen A und B verschieden sind. Liegen keine Residualunterschiede vor, tritt der Behandlungsunterschied in beiden Perioden gleich stark auf, und dieser kann effizient aus den Daten beider Perioden geschätzt werden. Die Auswertung kann mittels der folgenden GLM - Prozedur erfolgen PROC GLM DATA = BEISP4; CLASS SEQ VE PER BEH; MODEL ERTRAG = BEH PER SEQ VE(SEQ); TEST H = SEQ E = VE(SEQ); RANDOM VE(SEQ); RUN; 5.4.7.3.3 Split - Plot Design Beispiel 5: In einem Feldversuch werden die Erträge zweier Weizensorten (B1, B2 ) in Kombination mit 4 Düngemitteln (A1, A2, A3, A4) untersucht. Dazu wird ein Feld in 2 Blöcke mit jeweils 4 Parzellen (main plots, whole plots) unterteilt, wobei zusätzlich jede Parzelle in 2 Teilparzellen (subplots) geteilt wird. Faktor A (whole plot factor) wird zufällig innerhalb eines jeden Blockes den Parzellen, und Faktor B (subplot factor) innerhalb jeder Parzelle zufällig den Teilparzellen zugeordnet:

Block 1

B1 B2 A1 A2 A3 A4

35.4 36.7 34.8 39.5

37.9 38.2 36.4 40.0

Block 2

B1 B2 A1 A2 A3 A4

41.6 42.7 43.6 44.5

40.3 41.6 42.8 47.6

Page 47: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Modell: yijk = µ + αi + cj + (αc)ij + βk + (αβ)ik + εijk , i = 1,...,4, j, k = 1,2. Allgemeines Mittel: µ Faktor Weizen: βk Faktor Düngung: α i Faktor Block: cj u.i.v. ∼ N(0, σC

2) Interaktion: (αc)ij u.i.v. ∼ N(0, σαC2)

Interaktion: (αβ)ik Fehlerterm: εijk u.i.v. ∼ N(0, σε2)

cj , (αc)ij und εijk paarweise unabhängig. Die Auswertung des Split - Plot Designs erfolgt mittels PROC MIXED PROC MIXED; CLASS A B BLOCK; MODEL ERTRAG = A B; RANDOM BLOCK A*BLOCK; RUN;

The MIXED Procedure Covariance Parameter Estimates (REML)

Cov Parm Ratio Estimate Std Error Z Pr > Z BLOCK 7.63898774 16.09916667 23.17706499 0.69 0.4873 A*BLOCK 0.04784500 0.10083333 1.20162514 0.08 0.9331 Residual 1.00000000 2.10750000 1.49022754 1.41 0.1573 Model Fitting Information for Ertrag Description Value Observations 16.0000 Variance Estimate 2.1075 Standard Deviation Estimate 1.4517 REML Log Likelihood -19.3084 Akaike’s Information Criterion -22.3084 Schwarz’s Bayesian Criterion -22.4276 -2 REML Log Likelihood 38.6168 Tests of Fixed Effects Source NDF DDF Type III F Pr > F A 3 3 5.80 0.0914 B 1 4 1.07 0.3599 A*B 3 4 0.25 0.8612

Die REML - Schätzer für die Varianzkomponenten sind:Est(σC2) = 16.10

Est(σαC2) = 0.10 Est(σε

2) = 2.11. Die Schätzung der Matrix G, Est(G), besteht aus der Diagonalmatrix mit den Elementen Est(σC

2) und Est(σαC2);

analog sind die Diagonalelemente von Est(R) die Werte Est(σε2). Die Standardabweichungen der Schätzer sind

die Wurzeln der Diagonalelemente der inversen Fisher Informations Matrix und werden zur Herleitung des Wald - Testes verwendet. Getestet werden die Hypothesen H0: Varianzkomponente = 0 versus H1: Varianzkomponente > 0. Man beachte, daß diese Tests nur asymptotisch valide sind. Die festen Faktoren werden mittels Type III F - Werten getestet, wobei PROC MIXED automatisch die korrekten Fehlerterme verwendet. Wird z.B. der Split - Plot Plan mit der GLM - Prozedur ausgewertet, so muß der korrekte Fehlerterm explizit angegeben werden: PROC GLM DATA = BEISP5; CLASS A B BLOCK; MODEL ERTRAG = A B BLOCK A*BLOCK; TEST H = A E = A*BLOCK; RUN; 5.4.7.3.4 Repeated Measurements Beispiel 6: Folgende Wuchshöhen wurden bei Maispflanzen (mittlere Werte je Block) nach dem Ausbringen (Baseline t = 0) in Freilandparzellen und der dortigen Einteilung in Behandlungsgruppen: Kontrolle (ohne Düngung) und Behandlung (mit Düngung) beobachtet:

Gruppe

t = 0.Woche

t = 1.Woche

t = 4.Woche

t = 7.Woche

Kontrolle

2.3 4.1

9.1 11.2

21.3 31.0

40.4 45.6

Page 48: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

2.5 9.5 17.5 39.7

Behandlung

1.9 2.1 2.4 3.8 1.7

8.8 10.2 8.7

11.9 9.9

35.3 29.9 31.8 40.1 35.6

51.7 47.7 53.4 59.2 48.0

Modell: yijk = µ + αi + cj(i) + βk + (αβ)ik + εijk , i = 1, 2, k = 1,...,4, j = 1,...,ni. Allgemeines Mittel: µ Faktor Gruppe: α i Faktor Pflanze, verschachtelt in Faktor Gruppe: cj(i) u.i.v. ∼ N(0, σC

2) Faktor Zeit: βk

Interaktion: (αβ)ik Fehlerterm: εijk u.i.v. ∼ N(0, σε

2) cj(i) und εijk unabhängig. Die Auswertung erfolgt mittels PROC MIXED PROC MIXED DATA = BEISP6 METHOD = ML; CLASS PFLANZE GRUPPE; MODEL HÖHE = GRUPPE ZEIT*GRUPPE / NOINT S; REPEATED / TYPE = CS SUBJECT = PFLANZE R; RUN;

MIXED Procedure R Matrix for Pflanze 1 Row Col1 Col2 Col3 Col4 1 10.81182812 3.23683507 3.23683507 3.23683507 2 3.23683507 10.81182812 3.23683507 3.23683507 3 3.23683507 3.23683507 10.81182812 3.23683507 4 3.23683507 3.23683507 3.23683507 10.81182812

Covariance Parameter Estimates (MLE) Cov Parm Ratio Estimate Std Error Z Pr > Z DIAG CS 0.42730535 3.23683507 2.62289501 1.23 0.2172 Residual 1.00000000 7.57499306 2.18671214 3.46 0.0005 Model Fitting Information for Höhe Description Value Variance Estimate 7.5750 Standard Deviation Estimate 2.7523 Log Likelihood -81.7903 Akaike’s Information Criterion -83.7903 Schwarz’s Bayesian Criterion -85.2561 -2 Log Likelihood 163.5806 Null Model LRT Chi-Square 3.4119 Null Model LRT DF 1.0000 Null Model LRT P-Value 0.0647 Solution for Fixed Effects Parameter Estimate Std Error DDF T Pr > T GRUPPE B 3.14500000 1.21680576 28 2.58 0.0153 GRUPPE K 3.30666667 1.57088948 28 2.10 0.0444 ZEIT*GRUPPE B 7.18666667 0.22472195 28 31.98 0.0000 ZEIT*GRUPPE K 5.40333333 0.29011479 28 18.62 0.0000 Tests of Fixed Effects Source NDF DDF Type III F Pr > F A 2 28 5.56 0.0093 ZEIT *GRUPPE 2 28 684.81 0.0000 Die R Matrix besteht aus 8 Blöcken mit jeweils identischer 4x4 Matrix vom Typ ‘compound symmetry’; die Option R in der Repeated-Anweisung bewirkt, daß der erste Block herausgeschrieben wird. Durch die Option S in der Model-Anweisung wird der Lösungsvektor für die festen Effekte herausgeschrieben. Man erkennt z.B. daran, daß die Ausgangssituation (Baseline) in beiden Gruppen vergleichbar ist; jedoch ist in der

Page 49: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Behandlungsgruppe die zeitliche Abhängigkeit stärker ausgeprägt. In der ‘Model Fitting Information’ kann anhand des ‘Null Model LRT P-Value’ die Adäquatheit des Modells überprüft werden. Für den Type CS ist der Wert noch größer als 5%; daher wird in der obigen Programmanweisung der Type UN(1) gewählt und man erhält das folgende Resultat:

The MIXED Procedure Model Fitting Information for Höhe Description Value Obersvations 32.0000 Variance Estimate 1.0001 Standard Deviation Estimate 1.0000 Log Likelihood -69.4991 Akaike’s Information Criterion -73.4991 Schwarz’s Bayesian Criterion -76.4306 -2 Log Likelihood 138.9982 Null Model LRT Chi-Square 27.9944 Null Model LRT DF 3.0000 Null Model LRT P-Value 0.0000 Solution for Fixed Effects Parameter Estimate Std Error DDF T Pr > T GRUPPE B 2.47431762 0.31959995 28 7.74 0.0000 GRUPPE K 3.30113155 0.41260176 28 8.00 0.0000 ZEIT*GRUPPE B 7.24200960 0.22745663 28 31.84 0.0000 ZEIT*GRUPPE K 5.60515282 0.29364525 28 19.09 0.0000 Tests of Fixed Effects Source NDF DDF Type III F Pr > F A 2 28 61.97 0.0000 ZEIT *GRUPPE 2 28 689.04 0.0000 5. 4. 8 PROC NLIN Im Gegensatz zu den linearen Modellgleichungen bei der Prozedur REG (Kapitel 5.4.6) berechnet die Prozedur NLIN nichtlineare Modelle. Beim Aufruf der Prozedur NLIN ist eine Iterationsmethode auszuwählen, im Beispielprogramm (METHOD=DUD) wurde das DUD-Verfahren (Doesn´t Use Derivatives) gewählt. In der MODEL-Anweisung muß die Regressionsfunktion vollständig angegeben werden, und in der PARAMETERS-Anweisung sind Startwerte für die Parameter anzugeben. Die Startwerte sollten dem gesuchten Minimum bereits möglichst nahe kommen. Zum Auffinden geeigneter Startwerte können Vorinformationen und mathematische Überlegungen herangezogen werden. Die Abhängigkeit der Windgeschwindigkeit y von der Höhe x über dem Erdboden soll durch folgende Modellgleichung beschrieben werden: y = a log(bx + c), wobei a, b und c unbekannte Parameter seien. Programm: DATA bsp6_1; INPUT x y; CARDS; 40 490.2 80 585.3 160 673.7 320 759.2 640 837.5 RUN; PROC NLIN METHOD=DUD DATA=bsp6_1; MODEL y=a*LOG(b*x+c); PARAMETERS a=120 b=2 c=1; RUN; Output: Non-Linear Least Squares Summary Statistics Dependent Variable Y Source DF Sum of Squares Mean Square Regression 3 2314527.6967 771509.2322 Residual 2 7.0133 3.5066 Uncorrected Total 5 2314534.7100 (Corrected Total) 4 75525.3480 Parameter Estimate Asymptotic Asymptotic 95 %

Page 50: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Std. Error Confidence Interval Lower Upper A 115.1468465 2.0405380920 106.36702322 123.92666971 B 2.3106499 0.2803475476 1.10439847 3.51690126 C -22.0288777 6.4099498631 -49.60896902 5.55121353 Asymptotic Correlation Matrix Corr A B C A 1 -0.996227319 0.9665597648 B -0.996227319 1 -0.980193063 C 0.9665597648 -0.980193063 1 Der erste Teil des Outputs (hier nicht abgebildet) gibt Informationen zum Iterationsprozeß. Im dargestellten Teil des Outputs stehen die Quadratsummen, die Schätzwerte der Parameter (mit Standardfehler und Konfidenzintervall) sowie die Korrelationsmatrix der Parameterschätzungen. Als Modellgleichung ergibt sich somit hier: y = 115.1 log(2.3x - 22). Beispiel eines Wachstumsmodells Der folgende Beispieldatensatz enthält das Verhältnis Gewicht/Größe y (in pounds/inch) und das Alter x (in Monaten) von Kindern. Um eine geeignete Regressionsfunktion zu finden, wird zunächst ein Punktediagramm erstellt. Programm (1. Teil): DATA bsp6_2; INPUT y x; CARDS @@; 0.46 0.5 0.47 1.5 0.56 2.5 0.61 3.5 0.61 4.5 0.67 5.5 0.68 6.5 0.78 7.5 0.69 8.5 0.74 9.5 0.77 10.5 0.78 11.5 0.75 12.5 0.8 13.5 0.78 14.5 0.82 15.5 0.77 16.5 0.8 17.5 0.81 18.5 0.78 19.5 0.87 20.5 0.8 21.5 0.83 22.5 0.81 23.5 0.88 24.5 0.81 25.5 0.83 26.5 0.82 27.5 0.82 28.5 0.86 29.5 0.82 30.5 0.85 31.5 0.88 31.5 0.88 32.5 0.86 33.5 0.91 34.5 0.87 35.5 0.87 36.5 0.87 37.5 0.85 38.5 0.9 39.5 0.87 40.5 0.91 41.5 0.9 42.5 0.93 43.5 0.89 44.5 0.89 45.5 0.92 46.5 0.89 47.5 0.92 48.5 0.96 49.5 0.92 50.5 0.91 51.5 0.95 52.5 0.93 53.5 0.93 54.5 0.98 55.5 0.95 56.5 0.97 57.5 0.97 58.5 0.96 59.5 0.97 60.5 0.94 61.5 0.96 62.5 1.03 63.5 0.99 64.5 1.01 65.5 0.99 66.5 0.99 67.5 0.97 68.5 1.01 69.5 0.99 70.5 1.04 71.5 RUN; PROC PLOT DATA=bsp6_2; PLOT y*x; RUN; Der (hier nicht dargestellten) Graphik entnimmt man die im folgenden zweiten Teil des Programms verwendete Modellgleichung. Diese Auswahl der Funktionsgleichung ist relativ willkürlich, daher sollte man im allgemeinen möglichst einfache Funktionen wählen. Programm (2. Teil): PROC NLIN METHOD=DUD DATA=bsp6_2; MODEL y=a+b*(x-s)+c*MIN(x-s,0)**2; PARAMETERS a=0.75 b=0.004 c=-0.002 s=10; RUN; Output: Non-Linear Least Squares Summary Statistics Dependent Variable Y Source DF Sum of Squares Mean Square Regression 4 54.451251318 13.612812829 Residual 69 0.038548682 0.000558677 Uncorrected Total 73 54.489800000 (Corrected Total) 72 1.047997260 Parameter Estimate Asymptotic Asymptotic 95 % Std. Error Confidence Interval Lower Upper A 0.77723659 0.0085534319 0.7601729254 0.794300251 B 0.00395602 0.0001701712 0.0036165401 0.004295506 C -0.00217641 0.0004564052 -0.0030869181 -0.001265908 S 11.89985446 1.0429564671 9.8192092004 13.980499725 Asymptotic Correlation Matrix Corr A B C S A 1 -0.780210131 0.6661609359 0.7994882447 B -0.780210131 1 -0.257497459 -0.410405604 C 0.6661609359 -0.257497459 1 0.9570411522 S 0.7994882447 -0.410405604 0.9570411522 1 Der Output ist wie in Kapitel 6.1 beschrieben zu interpretieren.

5. 4. 9 PROC NESTED Die Prozedur NESTED berechnet Varianz- und Kovarianzanalysen für vollständig hierachische lineare Modelle mit zufälligen Effekten. Zur Erläuterung der Modellsituation folgendes Beispiel: Zur Bestimmung der Kalziumkonzentration werden zufällig 4 Rübenpflanzen ausgewählt (1. Faktor) von jeder dieser Pflanzen

Page 51: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

werden jeweils zufällig 3 Blätter bestimmt (2. Faktor verschachtelt unter dem 1. Faktor) und von jedem Blatt werden 2 Meßwerte erhoben (Meßwiederholung wiederum verschachtelt unter jedem der beiden anderen Faktoren) PROC NESTED schätzt den Anteil jeder Varianzkomponente und testet jeden Faktor, falls das Modell balanziert ist. Die SAS Prozeduren ANOVA, GLM und VARCOMP lassen ähnliche Analysen zu, jedoch ist die Anwendung von PROC NESTED wesentlich einfacher. Für ANOVA und GLM benutzt man die "Klammernotation", um die hierachische Struktur anzugeben. Zum Beispiel ein 4-faktorieller vollständig hierachischer Plan wird in ANOVA, GLM und VARCOMP wie folgt spezifiziert: CLASS a b c d ; MODEL y= a b(a) c(ab) d(abc); Mit der Prozedur PROC NESTED läßt sich das Design wie folgt spezifizieren: CLASS a b c d ; VAR y; Die Syntax: PROC NESTED; CLASS variablen ; VAR variablen; BY variablen; Bei dieser einfachen Notation von PROC NESTED setzt das Programm voraus, daß die Reihenfolge der Variablennamen in der CLASS-Anweisung mit der Modellhierachie übereinstimmt! Außerdem müssen die Datensätze nach den Faktorenreihenfolge der CLASS-Anweisung sortiert sein. title " Kalzium Konzentration in Rübenblättern -- Hierachisches zufälliges Modell "; title2 "Snedecor and Cochran, Statistical Methods, 1976, p. 286 "; data turnip; do plant = 1 to 4; do leaf = 1 to 3; do sample = 1 to 2; input calcium @@; output; end; end; end; cards; 3.28 3.09 3.52 3.48 2.88 2.80 2.46 2.44 1.87 1.92 2.19 2.19 2.77 2.66 3.74 3.44 2.55 2.55 3.78 3.87 4.07 4.12 3.31 3.31 ; proc print; proc nested; classes plant leaf; var calcium; run; Kalzium Konzentration in Rübenblättern -- Hierachisches zufälliges Modell Snedecor and Cochran, Statistical Methods, 1976, p. 286 OBS PLANT LEAF SAMPLE CALCIUM 1 1 1 1 3.28 2 1 1 2 3.09 3 1 2 1 3.52 4 1 2 2 3.48 5 1 3 1 2.88 6 1 3 2 2.80 7 2 1 1 2.46 8 2 1 2 2.44 9 2 2 1 1.87 10 2 2 2 1.92 11 2 3 1 2.19 12 2 3 2 2.19 13 3 1 1 2.77 14 3 1 2 2.66 15 3 2 1 3.74 16 3 2 2 3.44 17 3 3 1 2.55 18 3 3 2 2.55 19 4 1 1 3.78 20 4 1 2 3.87

Page 52: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

21 4 2 1 4.07 22 4 2 2 4.12 23 4 3 1 3.31 24 4 3 2 3.31 Coefficients of Expected Mean Squares Source PLANT LEAF ERROR PLANT 6 2 1 LEAF 0 2 1 ERROR 0 0 1 Nested Random Effects Analysis of Variance for Variable CALCIUM Degrees Variance of Sum of Source Freedom Squares F Value Pr > F Error Term TOTAL 23 10.270396 PLANT 3 7.560346 7.66517 0.009725 LEAF LEAF 8 2.630200 49.4089 0.000000 ERROR ERROR 12 0.079850 Variance Variance Percent Source Mean Square Component of Total TOTAL 0.446539 0.532938 100.0000 PLANT 2.520115 0.365223 68.5302 LEAF 0.328775 0.161060 30.2212 ERROR 0.006654 0.006654 1.2486 Mean 3.01208333 Standard error of mean 0.32404445 5.5 Ausgewählte multivariate Analysenmethoden mit SAS 5.5.1 Einführung Im Gegensatz zu univariaten Verfahren werden in multivariaten Analysenmethoden die Objekte (Objektgruppen) nicht getrennt für jedes einzelne Merkmal analysiert, sondern die Merkmale der Objekte werden zusammengefaßt ('simultan') analysiert. Die Anwendung solcher Verfahren ist immer dann von Interesse, wenn in der Analyse nicht das (die) Einzelmerkmal(e) von Interesse sind, sondern die Objekte (Objektgruppen) charakterisiert durch die Gesamtzahl der Merkmale. (Vorteil? Stichworte: Multiples Testproblem, Merkmalskorrelationen). Grob kann für multivariate Verfahren folgende Gliederung vorgenommen werden: • Mehrere Zielgrößen (Merkmalsvariablen) werden im Hinblick auf Gruppenbildung, -trennung und -vergleich

(Einflußgrössen) betrachtet: Clusteranalyse, Diskriminanzanalyse, multivariate Varianzanalyse. • Mehrere Zielgrößen (Merkmalsvariablen) werden im Hinblick auf die Zusammenfassung von Merkmalen

betrachten, ohne die Berücksichtigung von Einflußgrößen: Hauptkomponenten- und Faktoranalyse Überblick über die wichtigsten multivariaten Verfahren und einige typische Anwendungsbeispiele: • Clusteranalyse(n): Aufgrund der Distanz bzw. Ähnlichkeit verschiedener Objekte (z.B. Genbankherkünfte;

ökologische Habitate; sprachliche Begriffsbelegung bei Menschen) erfaßt durch eine Vielzahl von Merkmalen, werden die Objekte zu Gruppen (Cluster), zusammengefaßt.

• Diskriminanzanalyse(n): Im Gegensatz zur Clusteranalyse, bei der Gruppen gesucht werden, müssen die Gruppen der Objekte vorgegeben sein (Sortenunterscheidung; Feldermausarten anhand ihrer Ultraschallsequenz, Homo sapiens ssp. Differenzierung anhand von Schädelformen). Wichtig: Die Diskriminanzanalyse besteht aus zwei Schritten A) werden die Gruppen auf signifikante Differenzen geprüft, B) anhand der geschätzten Diskriminanzfunktionen erfolgt eine Reklassifikation der Objekte, die dann für neu zu klassifizierende Objekte genutzt wird. Ist der Versuchsansteller nur auf Schritt A ausgerichtet ist dies gleichzusetzen mir einer einfaktoriellen multivariaten Varianzanalyse.

• Hauptkomponentenanalyse: Im Gegensatz zur Clusteranalyse, Diskriminanzanalyse und multivariaten Varianzanalyse berücksichtigt die Hauptkomponentenanalyse keine Einflußgrößen (Objektgruppen). Sie transformiert die an den Objekten erfaßten p Merkmale (Zielgrößen) in sog. p Hauptkomponenten. Dies sind neue 'unkorrelierte Merkmale', wobei die 1-te Hauptkomponente den größten Teil der Gesamtvariation des Versuchs (Studie) abdeckt (Informativ zur Bedeutung des erhobenen Merkmalsumfangs, Erleichterung graphischer Darstellungen, Nutzung im Rahmen von Clusteranalysen-Programmen).

• Faktoranalyse(n): ähnlich wie bei der Hauptkomponentenanalyse werden p beobachtete Merkmale umgeformt. Allerdings werden aufgrund von Korrelationen, die Merkmale identifiziert, die zu Gruppen zusammengefaßt werden können (sog. latente Faktoren). Das Ziel ist somit, m < p Faktoren aus den Merkmalen zu extrahieren, die nicht direkt meßbar sind, aber hinter den zusammenhängenden Merkmalsvariablen stehen (Mikroklima, Bodenqualität, usw. in Verbindung mit der Artzusammensetzung

Page 53: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

einer Vegetationsdecke; Erfassung latenter Faktoren wie Gesundheit, Wirtschaftlichkeit etc. für das Kaufverhalten einer Personengruppe gegenüber einem Produkt).

5.5.2 Clusteranalysen In SAS sind Verfahren zum Clustern von Variablen und Objekten enthalten. In der Praxis steht das Clustern von Objekt im Vordergrund, daher wird das Clustern von Variablen von der Betrachtung ausgeschlossen. Es ist zu unterscheiden zwischen hierarchischen und partitionierenden (nicht-hierarchische) Verfahren. Partitionierende Verfahren ordnen die Objekte einer, vor Durchführung der Analyse, festgesetzten Anzahl Clustern zu (Vorteil bei sehr großer Objektzahl (>100)). Hierarchische Verfahren bilden Cluster, in denen wiederum Cluster enthalten sind. Die sich dabei ausbildende Baumstruktur kann anschaulich in einem Dendrogramm dargestellt werden. Vom Konstruktionsprinzip ist bei hierarchischen Verfahren zwischen diversiven Verfahren (Am Anfang bilden alle Objekte ein Cluster) und agglomerativen Verfahren (Am Anfang bildet jedes Objekt ein Cluster) zu unterscheiden. Agglomerative Verfahren fusionieren Objekte/Clustern aufgrund von Ähnlichkeitsmaßen oder Distanzmaßen, bis letztlich nur noch ein Cluster vorliegt. Diese Vorgehensweise wird fast ausschließlich angewendet, da diese Algorithmen rechentechnisch günstiger sind. Die Zusammenfassung von Objekten/Clustern erfolgt aufgrund von Ähnlichkeitsmaßen oder Distanzmaßen. Ähnlichkeitsmaße werden bei nominalem und ordinalem Skalenniveau bevorzugt; Distanzmaße bei quantitativen Merkmalen. Ähnlichkeitsmaße, wie der Tanimoto-Koeffizient oder der 'Simple Matching Koeffizient' sind in SAS Clusterprozeduren nicht anforderbar. Muß ein Ähnlichkeitsmaß benutzt werden, z.B. bei molekulargenetischen Distanzen mit ihren binären Daten (Bande vorhanden/nicht vorhanden), so kann dies nur erfolgen, in dem die ähnlichkeitsmatrix der Objekte direkt in die Clusterprozedur eingelesen wird. Die in SAS anforderbaren Distanzmaße sind der Klasse der Minkowski-Metriken zuordnen, die das Skalenniveau und die Kovarianzstruktur nicht berücksichtigen (Mahalanobis-Distanz nicht anforderbar). Erst durch Optionen verbunden mit der Verwendung von kanonischen Variablen ist dies indirekt möglich. Eine subjektive Festlegung einer Clusterzahl ist durch die optionale Anforderung von Pseudo- F- und T-Tests zu umgehen. Anmerkung zu Objekten bei denen sowohl qualitative als auch quantitative Merkmale vorliegen: Eine gemeinsame Auswertung ist nur möglich, wenn die qualitativen Merkmale eine hinreichende Klassenzahl und symmetrische Verteilung aufweisen, oder wenn quantitative Merkmale (durch Klassenbildung) auf qualitative Merkmale reduziert werden (Informationsverlust). SAS-Prozeduren für Clusteranalysen • CLUSTER: Hierarchische Clusteranalysen für Objekte/Beobachtungen. Einlesen von Koordinatendateien

und Distanzdateien möglich. • FASTCLUS: Partitionierendes (nicht-hierarchisches) Verfahren zur Clusterung von Objekten/

Beobachtungen. Ausschließlich Koordinatendateien bearbeitbar. Bis zu 100000 Objekte möglich. • VARCLUS: Zur Bestimmung von Variablencluster (hierarchisch o. partitionierend) • TREE: Erstellt Baumdiagramme der Ergebnisse einer Beobachtungs- oder Variablenclusteranalyse. Die

Eingabedateien sind optionale Ausgabedateien der Prozeduren CLUSTER o. VARCLUS. • ACECLUS: Liefert Schätzungen für die gemeinsame Innerhalb-Clusterkovarianzmatrix aus einer

Koordinatendatei. Die Anzahl der Cluster sowie die Zugehörigkeit der Objekte zu den Clustern muß nicht bekannt sein. Die Prozedur liefert optional eine Ausgabedatei mit kanonischen Variablen, die mittels der Prozedur CLUSTER bearbeitet werden kann.

Überblick über wichtige PROC CLUSTER-Anweisungen Prozeduraufruf PROC CLUSTER Optionen; Wichtige Anweisungen VAR variablen; Angabe der Variablen, die in der Clusterbildung berücksichtigt werden sollen. Fehlt die Angabe werden alle Variablen genommen außer denen, die in den ID FREQ und BY Anweisungen spezifiziert wurden ID variable; Werte dieser Variablen dienen zur Identifizierung des Objekts in der Ausgabedatei für PROC TREE. Fehlt die Angabe

Page 54: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

wird OBS, die laufende Numerierung der Beobachtungen genommen FREQ variable; Werte dieser Variablen spezifizieren die Häufigkeit der Beobachtung BY variablen; PROC CLUSTER Optionen; (nur die wichtigsten) DATA=Name OUTTREE=Name METHOD=Name (M=) STANDARD (STD) NOSQUARE RSQUARE (RSQ) PSEUDO Von den Optionen muß nur METHOD=(M=} spezifiziert werden. Hiermit wird der Fusionierungsalogritmus festgelegt: M=AVE 'Average linkage-Methode', M=COM 'complete linkage-Methode', M=SIN 'single linkage-Methode',M=WARD 'minimum variance-Methode', M=MED 'median methode linkage-Methode'. Weitere wichtige Optionen sind: Die Dateioptionen: DATA=sasdatei: Einlesen einer Koordinaten- oder Distanzdateien; OUTTREE=sasdatei Ausgabedatei für Bearbeitung mit PROC TREE. Optionen zur Steuerung der Analyse: STANDARD (STD) Standardisierung der Variablen(sehr wichtig); NOSQUARE unterdrückt die Quadrierung der Distanzen (Anwendung bei M=AVE, CEN, MED, WARD) (sehr wichtig); RSQUARE (RSQ) Liefert das Bestimmtheitsmaß auf jeder Fusionierungsstufe; PSEUDO Ausgabe von Pseudo-F und T2 Statistiken auf jeder Fusionierungsstufe. Die dem Beispiel zu entnehmenden optionalen Angaben werden empfohlen. Beispiel: An 20 Patienten (pnr) wird im Blut der 'Eisengehalt' (mg/l) (fe) und 'Gehalt an alkalischer Phosphatase' (U/l Plasma) (ap) ermittelt. Datensatzbeispiel nach G. Deichsel und H.J. Trampisch (1990). Datensatz und SAS-Programm werden aus praktischen Gründen zusammen dargestellt (Recordsprung und CARDS-Anweisung).\\ DATA blutw; INPUT pnr ap fe @@; LABEL pnr='Patientennummer' ap='alkal. Phosphatase' fe='Eisengehalt'; CARDS; 1 4.0 1.0 2 3.0 1.7 3 2.6 1.8 4 1.5 0.7 5 2.5 2.2 6 1.1 1.0 7 2.8 3.1 8 1.7 3.2 9 0.8 0.5 10 2.1 3.0 11 2.0 0.7 12 1.2 0.5 13 4.5 0.7 14 2.5 3.0 15 3.5 0.7 16 2.2 3.2 17 2.1 3.5 18 2.1 2.0 19 3.5 1.2 20 3.2 1.1 RUN; PROC CLUSTER DATA=blutw OUTTREE=tree-bl METHOD=ward std rsq pseudo; VAR ap fe; RUN; PROC TREE DATA=tree-bl HEIGHT=RSQ; RUN; Wichtig in der Prozedur TREE ist die Option HEIGHT= (H=). Sie legt die Ordinate des Achsenbaums fest: H=NCL 'Anzahl der Cluster'; H=HEIGHT 'Distanz oder Ähnlichkeit';H=RSQ 'bezieht sich auf die durch Clusterbildung erklärte Varianz. Treten im Datenmaterial starke Merkmalskorrelationen auf, empfiehlt sich die Vorwegschaltung von PROC ACECLUS. Deren OUTPUT SAS-Datei, mit den kanonischen Variablen (can-1 ... can-1), kann dann als INPUT SAS-datei in den Prozeduren CLUSTER o. FASTCLUS genutzt werden: PROC ACECLUS DATA=blutw OUT=aceblutw P=.1; VAR ap fe; RUN;

Page 55: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Wichtig ist hier die Option PROPORTION=(P=). Sie gibt die Proportionen von Paaren an, die in die Schätzung der Innerhalb-Clusterkovarianzmatrix einbezogen werden (.5 .01). Der Output des SAS-Beispielprogramms (gekürzt) liefert folgende Ergebnisse: Output A: Die Eigenwerte der Varianz- Kovarianzmatrix aus der hier hervorgeht, daß mit der ersten Merkmalsvariable erst 54\% der Varianz - Kovarianz im Datenmaterial erklärt ist. Die Merkmale sind somit 'fast' unabhängig. Ward's Minimum Variance Cluster Analysis Eigenvalues of the Correlation Matrix Eigenvalue Difference Proportion Cumulative 1 1.07182 0.143633 0.535908 0.53591 2 0.92818 . 0.464092 1.00000 Output B: Liefert die Anzahl der Cluster, die bei jedem Schritt zusammengefaßten Objekte bzw. Cluster. Deutlich wird, daß sich lediglich 2-4 Gruppen im Datenmaterial vorliegen (R-Square 80\% - 90\%). Number Frequency of of New Semipartial Pseudo Pseudo Clusters -Clusters Joined-- Cluster R-Squared R-Squared F t**2 Tie 19 OB10 OB16 2 0.000596 0.999404 93.17 . 18 OB19 OB20 2 0.001362 0.998042 59.96 . T 17 OB7 OB14 2 0.001362 0.996679 56.28 . 16 OB4 OB12 2 0.001705 0.994974 52.79 . 15 OB3 OB5 2 0.001968 0.993006 50.71 . 14 CL19 OB17 3 0.002485 0.990521 48.23 4.17 13 OB15 CL18 3 0.003503 0.987019 44.35 2.57 12 CL16 OB6 3 0.003594 0.983424 43.15 2.11 11 CL15 OB18 3 0.003744 0.979680 43.39 1.90 10 OB8 CL14 4 0.003925 0.975756 44.72 2.55 9 OB1 OB13 2 0.004495 0.971260 46.47 . 8 CL12 OB9 4 0.005463 0.965797 48.41 2.06 7 OB2 CL11 4 0.009031 0.956766 47.95 3.16 6 CL17 CL10 6 0.015378 0.941388 44.97 7.35 5 CL8 OB11 5 0.016041 0.925348 46.48 4.47 4 CL9 CL13 5 0.024661 0.900686 48.37 7.90 3 CL7 CL6 10 0.091277 0.809410 36.10 18.97 2 CL3 CL5 15 0.401803 0.407607 12.39 33.36 1 CL4 CL2 20 0.407607 0.000000 . 12.39 Output C: Stellt die Ergebnisse graphisch in einem Dendrogramm dar. Name of Observation or Cluster O O O O O O O O O O O O B B B B O O O B O B O B B B O B O O B B 1 1 1 2 B B B 1 B 1 B 1 1 1 B 1 B B 1 1 3 5 9 0 2 3 5 8 7 4 8 0 6 7 4 2 6 9 1 0 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 0.25 +XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX R |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX S |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX q |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX u 0.5 +XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX a |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX r |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX e |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX d |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX .75 +XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX |XXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX |XXXXX XXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX 1 +. . XXXXXXXXX . XXXXXXXXX XXXXX XXXXXXXXXXXXX XXXXXXXXX . .

5.5.3 Hauptkomponentenanalyse Die Nutzung der Hauptkomponentenanalyse (principal component analysis, PCM) bzw. ihrer Variablen wurde bereits im Rahmen der Clusteranalyse kurz angesprochen. Das Ziel des Verfahrens ist es, p beobachtete Merkmale so linear zu transformieren, daß sie nicht mehr miteinander korreliert sind. Dabei soll das erste neue Merkmal (1 Hauptkomponente) möglichst viel von der Gesamtvarianz der Ausgangsmerkmale erklären, das zweite neue Merkmal (2.Hauptkomponente) den nächstgrößten Anteil usw. Welchen Vorteil bringt diese?

Page 56: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

• Bei zahlreichen Merkmalen wird die Suche nach Strukturen (aber auch Ausreißern) erleichtert. Hinter den

Hauptkomponenten verbirgt sich die Zusammenfassung von Merkmalen zu einem Index. Erfassen die ersten beiden Hauptkomponenten bereits 60-80% der Variation des erfaßten Datenmaterials, dann ist ein Plot dieser Hauptkomponenten wesentlich informativer, als der aller einzelnen Merkmalspaare. (Beliebt bei der graphischen Darstellung pflanzengenetischer Ressourcen).

• Weiterhin liefert die Hauptkomponentenanalyse ein Endergebnis, so daß eventuell einzelne Variablen kombiniert werden können (Bes. Form der Faktoranalyse siehe dort.)

Die SAS-Prozedur zur Hauptkomponentenanalyse ist PROC PRINCOMP. Sie führt eine Hauptkomponentenanalyse durch, wobei die Hauptkomponentenscores in eine SAS-Datei ausgegeben werden können (PLOT). Bearbeitet werden Rohdatenmatrizen als auch Korrelationmatrizen. Überblick über wichtige PROC PRINCOMP-Anweisungen Prozeduraufruf: PROC PRINCOMP Optionen; Wichtige Anweisungen in PROC PRINCOMP: VAR variablen; FREQ variable; BY variablen; (s.o.) PROC PRINCOMP Optionen; (die wichtigsten) DATA=Name OUT=Name STANDARD N=Anzahl (N=) PREFIX=Namen Die Dateioptionen: DATA=sasdatei die Eingabedaten; OUT=sasdatei enthält die Originalwerte und die principal componenten scores i.d.R. für eine graphische Darstellung. Optionen zur Steuerung der Analyse: STANDARD standardisierte componenten scores werden ausgegeben mit Mittel von 0 und s2=1; N=x Begrenzung der zu analysierenden Hauptkomponenten; PREFIX= spez. Namen für die Hauptkomponenten Voreinstellung: PRIN1, PRIN2, usw. Beispiel: nach Weber (1980) mit Fishers Iris Daten: DATA primall; INPUT genera x1 x2 x3 x4 @@; LABEL genera='Generation' x1='Stempellaenge' x2='Abstand Narbe-Kelch' x3='Abstand Narbe-Antheren' x4='Abstand Stempel-Antheren'; CARDS; 1 13.5 1.5 3.5 10.0 1 13.0 0.5 3.5 9.5 1 12.5 -0.5 3.0 9.5 1 12.5 0.0 3.0 9.5 1 12.5 0.5 3.0 9.5 1 13.5 0.0 3.0 10.5 1 14.5 1.5 4.5 10.0 1 13.0 0.5 3.0 10.0 1 13.0 0.5 3.5 9.5 1 14.0 1.0 4.0 10.0 1 11.5 0.0 1.0 10.5 1 12.0 -0.5 2.0 10.0 1 11.0 -1.0 1.5 9.5 1 14.0 0.0 2.0 12.0 1 11.5 -1.0 1.0 10.5 1 15.0 -1.0 5.0 10.0 1 14.5 -1.0 5.0 9.5 1 14.0 0.0 5.5 8.5 1 14.5 -0.5 5.0 9.5 1 12.0 0.0 4.0 8.0 1 13.0 0.0 2.5 10.5 2 18.5 3.5 7.5 11.0 2 18.0 2.5 7.5 10.0 2 17.5 2.0 7.0 10.5 2 18.0 2.5 8.0 10.0 2 17.5 3.5 7.0 10.5 2 18.5 4.0 7.5 11.0 2 19.0 4.0 9.0 10.0 2 18.0 3.5 7.5 10.5 2 17.5 3.0 7.0 10.5 2 19.0 4.5 7.5 11.5 2 19.5 3.5 7.5 11.5 2 20.0 2.5 8.0 12.0 2 19.5 3.0 7.0 12.5 2 19.5 2.5 7.5 12.0 2 19.5 3.0 8.5 11.0 2 15.5 0.0 6.0 9.5 2 14.0 -1.5 4.5 9.5 2 14.5 -1.0 5.5 9.0 2 15.5 -0.5 5.5 10.0 2 15.0 0.0 6.0 9.0 2 19.0 5.0 9.5 9.5 2 20.0 6.0 10.0 10.0 2 18.5 5.5 9.0 9.5 2 19.0 5.5 8.0 11.0 2 20.0 6.0 10.5 9.5 2 17.0 4.5 7.5 9.5 3 16.5 5.0 6.0 10.5 3 17.0 6.0 7.0 10.0 3 17.0 6.5 7.0 10.0 3 17.5 6.0 7.0 10.5 3 17.0 6.0 6.5 10.5 3 15.0 4.0 5.5 9.5 3 14.5 3.5 5.0 9.5 3 15.0 3.5 5.0 10.0 3 14.0 3.5 4.5 9.5 3 14.0 3.5 4.5 9.5 3 15.0 4.0 4.5 10.5 3 14.5 4.0 5.0 9.5 3 14.5 4.0 5.0 9.5 3 15.0 3.5 5.0 10.0 3 14.5 4.0 4.5 10.0 3 15.0 3.5 5.5 9.5 3 15.0 4.5 6.0 9.0 3 15.5 5.5 6.5 9.0 3 16.5 4.0 6.0 10.5 3 15.0 4.0 6.5 8.5 3 14.5 5.0 4.5 10.0 3 13.0 2.0 3.0 10.0 3 14.0 3.0 4.5 9.5 3 14.5 3.5 5.0 9.5 3 14.0 2.5 3.5 10.5 ; PROC FORMAT; VALUE generat 1='Elter_1' 2='Elter_2' 3='F1'; RUN; PROC PRINCOMP DATA=primall OUT=zeichn STD N=4;

Page 57: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

VAR x1 x2 x3 x4; PROC PLOT DATA=zeichn; PLOT prin1*prin2; RUN; Das Programm liefert den folgenden OUTPUT (gekürzt). Die erste Hauptkomponente hat bereits einen Eigenwert von 2.6. Maximal kann hier im Beispiel ein Eigenwert von 4 auftreten. Dazu müßte aber eine vollständige Korrelation der Merkmale vorliegen. Mit den ersten beiden Hauptkomponenten ist 90\% der Information im Datensatz abgedeckt. Der Plot der Koeffizienten der ersten beiden kanonischen Variablen (Hauptkomponentenkoeffizienten), im engl. als 'factor score coefficients'bezeichnet, läßt bereits die Strukturen Eltern und F1 deutlich erkennen. Principal Component Analysis 72 Observations 4 Variables Principal Component Analysis Eigenvalue Difference Proportion Cumulative PRIN1 2.63909 1.69291 0.659774 0.65977 PRIN2 0.94618 0.53204 0.236546 0.89632 PRIN3 0.41415 0.41357 0.103536 0.99986 PRIN4 0.00058 . 0.000144 1.00000 Plot of PRIN1*PRIN2. Legend: A = 1 obs, B = 2 obs, etc. PRIN1 | 2 + | A A | A | B A A A AA A | A A AA 1 + AA A A | A A | A A A AA A | A | 0 + A A AA A B A | BB A | BA A A A A | A A A | A A AA B A -1 + A A A | BA A | AA | A A A | A -2 + A | --+-------------+-------------+-------------+-------------+-------------+-------------+-- -3 -2 -1 0 1 2 3

6 SAS/INSIGHT INSIGHT stellt ein Programm zur interaktiven, deskriptiven und multivariaten Datenanalyse, vorzugsweise an zuwenden zur „Sicht“ auf komplexe Datenstrukturen sowie zur Modell- und Hypothesengenerierung. Start im Menue mit Global/invoke application/data analysis/SAS/INSIGHT oder als Programm-Anweisung proc insight;run; Zunächst ist der aktuelle SAS-Datensatz auszuwählen. Im Data Window erscheint dann die Datentabelle in spread sheet Form, wobei verschiedene Manipulationen möglich sind. Datenpunkte lassen sich für Stufen von Variablen markieren (farbig: Edit/windows/colors bzw. Symbole: Edit/Windows/markers bzw. markieren mit Edit/observations/label in plots bzw. unsichtbar machen mit:Edit/oberservations/hide in graphs), usw.. Im Menue-Punkt: Analyze werden folgende Verfahren zur Verfügung gestellt: • Balkendiagramm • Boxplot • Streudiagramm • Rotierender 3D-Plot • Verteilungsanpassung • Anpassung an Funktionen • Multivariate Datenanalyse mit dem Schwerpunkt Hauptkomponentenanalyse

Page 58: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Da Balkendiagramme in anderen Programmen, wie z.B. EXCEL, verfügbar sind, wird dies hier nicht dargestellt. • Boxplot Der Boxplot stellt eine kompakte, nichtparametrische Form der deskriptiven Statistik für gruppierte Daten (Group ==>) dar. Mit dem Menue: Edit/graphs/means kann eine Mittelwertraute und mit Edit/graphs/values die Werte überlagert werden. Interaktiv lassen sich alle Werte im Box-Plot anzeigen. • Streudiagramm (scatter plot) Jeweils zwei Variable können als scatter plot dargestellt werden. Zur Analyse hilfreich ist das Markieren extremer Werte, sowie interessanter Bereiche (brushing). • Rotierender 3D-Plot Drei Variable können im rotierenden 3D-Plot dargestellt werden, wobei durch die Rotation Strukturen in den Daten ersichtlich werden. Markieren von Gruppenstrukturen usw. ist zweckmäßig. • Verteilungsanpassung Hinter diesem Menuepunkt verbergen sich mehrere Optionen: i) Box-Plot (s.o.) ii) deskriptive Maßzahlen (s. PROC UNIVARIATE) iii) Histogramm iv) Q-Q-Plot v) Anpassung parametrischer und nichtparametrischer Dichtefunktionen vi) Verteilungstests Mit der Option Tables lassen sich mit Location test mu= Tests für das verbundene Zweistichprobenproblem (gegen Null oder vorgebbare Werte), das xx%ige Konfidenzintervall, Gini`s robuster Varianzschätzer, Winzorisierung und Trimmung des Mittelwertes realisieren. Mit der Option Graphs lassen sich neben Box-Plot und Histogramm Q-Q-Plots für verschiedene Verteilungen auswählen, wobei die geordneten Beobachtungen gegen deren Quantile der Testverteilung im Y-X-Diagramm dargestellt werden. Mit der Option Density lassen sich für ausgewählte parametrische Verteilungsfunktionen sowie für verschiedene Kernschätzer die Dichtefunktionen in das Histogramm einfügen und die Schätzer tabellarisch darstellen. Mit der Option CDF (cumulative distribution function) lassen sich die empirischen Schätzungen der kumulativen Verteilungsfunktion sowie deren Konfidenzintervalle grafisch darstellen. Mit Test for distribution lassen sich Anpassungstests (K-S-Test) für Normal-, Lognormal-, Exponential- und Weibullverteilung durchführen und die geschätzte Verteilungsfunktion grafisch darstellen. Desweiteren kann man mit der Option Test for a specific distribution, für vorgegebene Parameter entsprechend gewählte Verteilungsfunktionen in die Grafik der empirischen Verteilungsfunktion einblenden. • Anpassung an Funktionen Die Anpassung von Funktionen wird an Hand der linearen Regression erläutert. (vgl. Kapitel 5.4.6.1) Dazu ist „Analyze“ und „Fit (Y X)“ anzuklicken und Y als Y-Variable und X als X-Variable zu wählen. Neben einigen Graphiken erhält man folgenden Output: Y = X Response Distribution: Normal Link Function: Identity Parametric Regression Fit Model Error Type DF Mean Square DF Mean Square R-Square F Stat Prob > F Line 1.0000 1000.0000 3.0000 5.3333 0.9843 187.5000 0.0008 Summary of Fit Mean of Response 40.0000 R-Square 0.9843 Root MSE 2.3094 Adj R-Sq 0.9790 Analysis of Variance Source DF Sum of Squares Mean Square F Stat Prob > F Model 1.0000 1000.0000 1000.0000 187.5000 0.0008 Error 3.0000 16.0000 5.3333 C Total 4.0000 1016.0000 Type III Tests Source DF Sum of Squares Mean Square F Stat Prob > F X 1.0000 1000.0000 1000.0000 187.5000 0.0008 Parameter Estimates Variable DF Estimate Std Error T Stat Prob >|T| Tolerance Var Inflation INTERCEPT 1.0 10.0000 2.4221 4.1286 0.0258 . 0.0000 X 1.0 2.0000 0.1461 13.6931 0.0008 1.0000 1.0000 Auch eine multiple Regressionsanalyse ist möglich, dazu müssen mehrere Variablen als X-Variablen ausgewählt werden. Eine Varianzanalyse kann ebenfalls mit „Fit (Y X)“ berechnet werden, Effekte höherer Ordnung

Page 59: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

können dabei durch Anklicken von „Expand“ berücksichtigt werden. Zudem sind weitere Modelle möglich, z.B. logistische Regression oder Poisson-Regression. SAS/INSIGHT bietet vielfältige weitere Möglichkeiten. Unter „Tables“ lassen sich u.a. Konfidenzintervalle („C.I. for Parameters“) berechnen oder Kollinearitäten („Collinearity Diagnostics“) untersuchen. Von einer Kollinearität bzw. Multikollinearität spricht man, wenn zwischen den Regressoren ein oder mehrere lineare Zusammenhänge bestehen. Besonders wichtig zur Beurteilung von Kollinearitäten ist der Condition Index: Werte von 30 bis 100 zeigen eine mäßige bis starke Kollinearität an. Die Output-Tabelle der Kollinearitäts-untersuchung hat für die Daten der multiplen Regressionsanalyse aus Kapitel 4.3 folgende Gestalt:

Collinearity Diagnostics Variance Proportion Number Eigenvalue Condition Index INTERCEPT X1 X2 X3 1.0000 3.5940 1.0000 0.0050 0.0191 0.0048 0.0074 2.0000 0.2965 3.4813 0.0234 0.8168 0.0032 0.0439 3.0000 0.0687 7.2335 0.1398 0.0578 0.2290 0.9159 4.0000 0.0408 9.3903 0.8318 0.1063 0.7630 0.0327 Unter „Graphs“ können u.a. ein „Residual-by-Predicted Plot“ oder ein „Residual Normal QQ Plot“ gewählt werden. Mit dem Residual-by-Predicted Plot können in einer Residuenanalyse z.B. Nichtlinearitäten diagnostiziert werden. Der Residual Normal QQ Plot dient der Überprüfung einer Normalverteilungsannahme: Falls die Residuen einer Normalverteilung mit Mittelwert 0 entstammen, tendieren die Punkte des Residual Normal QQ Plots dazu, entlang der Referenzlinie zu liegen. Die Steigung der Referenzlinie entspricht der geschätzten Standardabweichung. • Multivariate Datenanalyse mit dem Schwerpunkt Hauptkomponentenanalyse Im Standardmenue werden die Variablen und ggfls. die Gruppe (allerdings nur getrennte Analyse je Gruppe) definiert, wobei im Ergebnisfenster univariate deskriptive Maße sowie die Korrelationsmatrix erscheinen. Mit der Option Tables sind desweiteren die Quadratsummen und Kreuzprodukte (SSCP sowie Mittelwert-adjustiert (korrigiert): CSSCP), die Kovarianzmatrix (COV), die p-Wertmatrix zum Test der Korrelationskoeffizienten gegen 0 (CORR-pvalues) sowie die Inverse der Korrelationsmatrix (Corr Inverse) wählbar. Wenn Variable gleicher Skalen betrachtet werden kann die Standardschätzung der Eigenwerte/vektoren aus der Kovarianzmatrix erfolgen, bei unterschiedlichen Skalen muß die Korrelationsmatrix als Option gewählt werden (als default ist bei Multivariate Y’s/Methods die Schätzung aus der Korrelationsmatrix eingestellt). Mit der Option Graphs sind die Scatterplotmatrix (s. oben), die xx%ige Konfidenzellipse für das Populationsmittel sowie eine Konfidenzellipse für die Annahme der bivariaten Normalverteilung im Scatterplot darstellbar. Mit der Option PCA/Automatic wird eine Standard-Hauptkomponentenanalyse durchgeführt. Berechnet werden die Eigenwerte, die Eigenvektoren der Hauptkomponenten sowie ein Scatterplot der beiden ersten Hauptkomponenten. Mit PCA/Eigenvalues oder Eigenvector oder Patternmatrix kann man die Anzahl selbst definieren. Mit der Option PCA/First2 bzw. First3 Component Plot werden der scatterplot der beiden ersten Hauptkomponenten bzw. der 3D-Plot der ersten drei dargestellt. 7. Macroprogrammierung 7.1 Einleitung Die Macrosprache wird dazu benutzt, um häufig wiederholte Befehlsfolgen in SAS nur einmal implementieren zu müssen oder um interaktive SAS-Programme zu schreiben. In SAS werden die DATA und PROC Schritte hintereinander ausgeführt. Eine Wiederholungsschleife, um eine Sequenz von DATA und PROC Schritten mehrmals abzuarbeiten, oder ein Verzweigen in verschiedene DATA und PROC Schrittfolgen sind nicht möglich. Dieses wird durch die Macroprogrammierung ermöglicht. SAS-Macros unterscheiden sich wesentlich von Prozeduren in anderen Programmiersprachen. Zum einen sind die Werte aller Macrovariablen Zeichenketten (Strings), d.h. die Zahl 17 wird nicht als Zahl sondern als die beiden Zeichen 1 und 7 interpretiert, zum anderen wird ein Macro beim Compilieren in SAS-Code übersetzt und dieser wird an der Stelle des Aufrufs im Programm eingefügt. Dies hat wesentliche Auswirkungen auf die Verwendung von globalen Variablen. Macros sind nicht geeignet um arithmetische Operationen durchzuführen.

Page 60: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Die Erstellung eines Macros für SAS erfolgt in zwei Stufen. Ein im Editor geschriebenes Macro wird normal, wie ein SAS-Programm, compiliert. Der Compiler macht hierbei nur einen Syntaxcheck. Nach dem einmaligen compiliern steht das Macro den Rest der SAS-Sitzung zur Verfügung und kann beliebig oft aufgerufen werden. Allgemein gilt für die Syntax aller Macrobefehle, daß sie mit einem „%“ beginnen. Zum Beispiel lautet der Kommentarbeginn „%*“. 7.2 Der Befehl %PUT Der Befehl %PUT gibt alle Zeichen bis zum nächsten Semikolon im Log-Fenster aus. Sollen Werte von Macrovariblen ausgegeben werden sind die Variablen zu dereferenzieren (s.u. Macrovariablen). Syntax: %PUT string; Hierbei ist: string eine Zeichenkette. Beispiel: Die Zeile

liefert die Ausgabe:

%PUT signifikantes Ergebnis; signifikantes Ergebnis Befindet sich ein Semikolon in der auszugebenden Zeichenkette, so ist die Ausgabe dieser durch die Befehlskombination %PUT %STR( string); möglich. 7.3 Der Umgang mit Macrovariablen Einer Macrovariable wird ein Wert durch die Anweisung %LET zugewiesen. Syntax: %LET name <= wert>; Hierbei ist: name der Name der Macrovariablen. wert der default Wert der Variablen. Besonders an Macrovariablen ist, das sie Zeiger auf Zeichenketten sind, das heißt, daß auf den Wert einer Macrovariablen nicht über den Namen, wie in anderen Programmiersprachen, zugegriffen werden kann, sondern der Zeiger erst dereferenziert werden muß, das heißt der Wert des Speicherbereichs auf den der Zeiger zeigt ausgelesen werden muß. Das Dereferenzieren erfolgt durch das Voranstellen des „&“-Zeichens vor die Variable. Beispiel: Berechnung der Summe von 17 und 5 über Macrovariablen. Programm

Ausgabe im Log-Fenster

%LET m=17; %LET n=m+5; %PUT n; n %LET m=17; %LET n=m+5; %PUT &n; m+5

Page 61: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%LET m=17; %LET n=&m+5; %PUT &n; 17+5 Um nun den Ausdruck 17+5 zu berechnen wird eine weiterer Macrobefehl %EVAL benötigt. Der Befehl %EVAL kann nur Operationen auf Integern ausführen oder logische Ausdrücke auswerten. Syntax: %EVAL( operation auf integern ) oder %EVAL( logischer ausdruck ) Programm

Ausgabe im Log-Fenster

%LET m=17; %LET n=&m+5; %PUT %EVAL(&n); 22 Um in einer Zeile, in der Text und Zugriffe auf Macrovariablen gemischt stehen, das Ende der Variablen zu kennzeichnen, wird der Name durch einen Punkt „.“ beendet. Programm

Ausgabe im Log-Fenster

%LET m=17+; %PUT %EVAL(&m.5); 22 Weitere Möglichkeiten Macrovariablen zu definieren sind die Befehle: iteratives %DO %GLOBAL %LOCAL %INPUT %MACRO %WINDOW Besonders an den Befehlen %LET, %PUT und %EVAL ist, daß sie auch außerhalb einer Macrodefinition benutzt werden können. Zur Kontrolle des Verhaltens von Macros gibt es zwei SAS-Optionen die mit dem Kommando OPTIONS Mname aktiviert und deaktiviert werden können. Mname Beschreibung MPRINT Der durch die Compilierung des Macros entstandene SAS-Code wird im Log-Fenster angezeigt. MTRACE Die Werte der Macrovariablen werden im Log-Fenster ausgegeben. Beide Optionen können durch OPTIONS NOMname deaktiviert werden. 7.4 Die Macrodefinition Syntax: %MACRO macroname <( parameterliste)>; <macrostatements > %MEND <macroname>; Hierbei ist macrostatements ein Folge von Macro und SAS-Anweisungen.

Page 62: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Unter den Parametern gibt es zwei verschiedene Klassen, die Positionsparameter und die Schlüsselparameter. Bei den Positionsparametern handelt es sich um Parameter, die immer bei einem Aufruf an das Macro übergeben werden müssen, hierbei ist die Reihenfolge zu beachten. Die Positionsparameter müssen vor den Schlüsselparametern in der Parameterliste stehen, und alle Parameter werden durch ein Komma getrennt. Schlüsselparameter unterscheiden sich von Positionsparametern dadurch, daß der Name von einem „=“ gefolgt wird und ein default Wert vorgegeben werden kann. Beim Aufruf des Macros müssen die Positionsparameter in der Reihenfolge der Macrodefinition aufgeführt werden, die Schlüsselparameter können in beliebiger Reihenfolge stehen jedoch müssen sie mit dem Namen übergeben werden. %MACRO plot( x, y, daten=_LAST_); PROC PLOT DATA=&daten; PLOT &y * &x; RUN; %MEND plot; Der einfachste Aufruf des Macos erfolgt mit: %plot(a,b) Der Compiler erzeugt dann das SAS-Programm: PROC PLOT DATA=_LAST_; PLOT b*a; RUN; Um beim obigen Macro beim Aufruf die Möglichkeit zu haben zwischen der Prozedur PLOT und GPLOT zu wählen, muß es so abgeändert werden: %MACRO plot( x, y, daten=_LAST_, type=); PROC &type.PLOT DATA=&daten; PLOT &y * &x; RUN; %MEND plot; Aufruf: %plot( a, b, werte) %plot( a, b, werte, G) liefert den PROC PLOT DATA=werte; PROC PLOT DATA=werte; SAS-Code PLOT b*a; GPLOT b*a; RUN; RUN; Gültigkeitsbereich von Macrovariablen Prinzipiell gilt für Macrovariablen, daß sie auf der Ebene auf der sie definiert sind und in allen darunter liegenden Programmebenen in ihrem Wert verändert werden können. Um eine Kontrolle über das Verhalten von Variablen zu erhalten gibt es die Befehle %LOCAL und %GLOBAL. Der Befehl %LOCAL bewirkt, daß die dahinter angegebene Variable 1. für das Macro neu angelegt wird, 2. nur in diesem Macro oder in von ihm seinerseits aufgerufenen Macros verändert werden kann. Außerdem wird die Variable beim beenden des Macros (%MEND) gelöscht. Durch den Befehl %GLOBAL wird eine Variable, die in einem Macro definiert wird 1. nicht gelöscht beim Beenden des Macros, 2. auch außerhalb des Macros benutzbar. Beispiel: Hier wird die globale Variable i, die außerhalb des Macros definiert ist, durch den Aufruf des Macros verändert

Page 63: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Programm

Log-Fenster

%LET i = außen; %MACRO schleife; %DO i = 1 %TO 2; Wert von i innerhalb: 1 %PUT Wert von i innerhalb: &i; Wert von i innerhalb: 2 %END; Wert von i außerhalb: 3 %MEND schleife; %schleife; %PUT Wert von i außerhalb: &i; Verhinderung der Veränderung des globalen i’s durch Definition eines lokalen i’s. Programm

Log-Fenster

%LET i = außen; %MACRO schleife; %LOCAL i; %DO i = 1 %TO 2; Wert von i innerhalb: 1 %PUT Wert von i innerhalb: &i; Wert von i innerhalb: 2 %END; Wert von i außerhalb: außen %MEND schleife; %schleife; %PUT Wert von i außerhalb: &i;

7.5 Kontrollstrukturen Die nun aufgeführten Sprachelemente der Makrosprache sind denen des üblichen SAS und anderen Program-miersprachen analog. Deswegen werden sie im folgenden nur kurz angesprochen. %DO Umfaßt mehrere Einzelanweisungen (DO-Block), die als Gruppe ausgeführt werden sollen (häufig in Verbin- dung mit %IF). Jede %DO-Schleife und deren Abarten müssen mit einem %END abgeschlossen werden. Syntax: %DO; text und macroanweisungen; %END; Bsp.: Berechnung des 90%-Quantils der Standardnormal- und t-Verteilung. Das Programm

liefert die Ausgabe

%MACRO mvert; %Do; nv=probit(0.9); t=tinv(0.9,10); %END;

OBS NV T

1 1.28155 1.37218

Page 64: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%MEND; DATA vert; %mvert; PROC PRINT; RUN;

iteratives %DO Eine %DO-Schleife, bei der Iterationen (d.h. Wiederholungen) über eine Indexvariable gesteuert werden. Syntax: %DO macrovariable=start %TO stop <BY increment>; text und macroanweisungen; %END; Hierbei bedeuten: macrovariable eine Indexvariable, die die %DO-Schleife steuert. start Startwert der Indexvariable (integer oder integererzeugender Ausdruck). stop letzter Wert der Indexvariable. Die %DO-Schleife wird solange ausgeführt, bis der Wert von macrovariable größer stop ist. increment spezifiziert einen integer, der bei jedem Durchlaufen der Schleife zur macro- variable addiert wird und somit die „Schrittweite“ der %DO-Schleife bestimmt. Default ist 1. Beispiel: Berechnung des 90-99%-Quantils in 1%-Schritten der Standardnormal- und t-Verteilung. Das Programm

%MACRO mvert;

%LET p=90; %Do i=1 %TO 10; nv[&i]=probit(&p/100); t[&i]=tinv(&p/100,10); %LET p=%EVAL(&p+1); %END; %MEND; DATA vert; ARRAY nv[10] n1-n10; ARRAY t[10] t1-t10; %mvert; PROC PRINT DATA=vert; RUN;

liefert die Ausgabe

OBS N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 1 1.28155 1.34076 1.40507 1.47579 1.55477 1.64485 1.75069 1.88079 2.05375 2.32635 OBS T1 T2 T3 T4 T5 T6 T7 T8 T9 T10

Page 65: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

1 1.37218 1.44156 1.51790 1.60308 1.69984 1.81246 1.94810 2.12023 2.35931 2.76377 %DO - %UNTIL Zusammenfassung von Anweisungsgruppen (DO-Block), die solange ausgeführt werden, bis der %UNTIL- Ausdruck wahr ist. Die Prüfung findet am Schleifenende statt. Syntax: %DO %UNTIL(ausdruck); text und macroanweisungen; %END; Mit ausdruck jeder mögliche logische Makroausdruck, u.a. ein Makroaufruf. %DO - %WHILE Zusammenfassung von Anweisungsgruppen, die solange wiederholt werden, bis der %WHILE-Ausdruck wahr ist. Die Prüfung findet am Schleifenanfang statt. Syntax: %DO %WHILE(ausdruck); text und macroanweisungen; %END; Mit ausdruck wie oben. %IF - %THEN / %ELSE Bedingte Ausführung einer SAS-Anweisung. Syntax: %IF ausdruck %THEN macroausdruck-1 <%ELSE macroausdruck-2>; Dabei bedeuten: ausdruck ein Makroausdruck, der einen logischen Ausdruck enthält. Ist ausdruck wahr, wird %THEN ausgeführt, sonst %ELSE (falls vorhanden). macroausdruck beliebiger Text oder Makroanweisung. Bsp.: Berechnung des 90-99%-Quantils in 1%-Schritten der Standardnormal- oder t-Verteilung. Das Programm

%MACRO nv;

%LET p=90; %Do i=1 %to 10; n[&i]=probit(&p/100); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO t;

Page 66: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%LET p=90; %Do i=1 %to 10; n[&i]=tinv(&p/100,10); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO mvert(wahl); %IF &wahl=1 %THEN %nv; %ELSE %t; %MEND; DATA vert; ARRAY n[10] n1-n10; *%mvert(1); %mvert(2); PROC PRINT DATA=vert; RUN;

liefert die Ausgabe

OBS T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 1 1.37218 1.44156 1.51790 1.60308 1.69984 1.81246 1.94810 2.12023 2.35931 2.76377 %LABEL Springmarke für %GOTO (s.u.), Syntax: %label: macrotext; label gültiger SAS-Name macrotext Makroanweisung oder -ausdruck %GOTO Verzweigungsmöglichkeit zu einem vorher spezifizierten label. Syntax: %GOTO label Bsp.: Abbruch nach einer fehlerhaften Eingabe. Das Programm

%MACRO nv;

%LET p=90; %Do i=1 %to 10; n[&i]=probit(&p/100); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO t;

Page 67: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%LET p=90; %Do i=1 %to 10; n[&i]=tinv(&p/100,10); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO mvert; %LET wahl=6; %IF &wahl=1 %THEN %nv; %ELSE %IF &wahl=2 %THEN %t; %ELSE %GOTO start; %start: %PUT Warnung; %MEND; DATA vert; ARRAY n[10] n1-n10; %mvert; PROC PRINT DATA=vert; RUN;

liefert die Ausgabe

OBS N1 N2 N3 N4 N5 N6 N7 N8 N9 N10

1 . . . . . . . . . .

und es erscheint im log-Fenster die Meldung ‘Warnung’. 7.6 Interaktive Benutzerfenster: %INPUT und %WINDOW / %DISPLAY Gerade in der Makroumgebung sind anwendungsorientierte Fenster, welche dem Anwender entweder Informationen anzeigen können oder ihm Eingaben ermöglichen, von Interesse. Somit kann die Interaktivität von Makros durch direkte Einbeziehung des Anwenders wesentlich erhöht werden. Ein solches Fenster kann sowohl inner- als auch außerhalb eines Makros mit der %WINDOW-Anweisung definiert und danach während einer Sitzung beliebig oft mit %DISPLAY aufgerufen werden. Eine weitere Möglichkeit, die etwas weniger Komfort bietet, ist die %INPUT-Anweisung und soll hier nur kurz erwähnt sein. Auch %INPUT kann außerhalb eines Makros benutzt werden Syntax: %INPUT <name-1 <... name-n>>; name eine Makrovariable oder ein Ausdruck, der diese erzeugt. Es dürfen bei der %INPUT-Anweisung beliebig viele namen angegeben werden, jeweils durch eine Leerstelle getrennt. Wird keine Variable angegeben, schreibt SAS den zugeordneten Wert einer internen Makrovariablen (SYSBUFFER) zu. Bsp.: Beispiel zur %INPUT-Anweisung.

Das Programm erzeugt nach der die Ausgabe

Page 68: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Eingabe %MACRO staedte;

%put Geben Sie eine Stadt und ein Land ein.;

%INPUT stadt land;

%put *&stadt* und **&land**;

%MEND;

Koeln Haiti

*Koeln* und **Haiti**

Ausführlicher hingegen soll nun die eigentliche Fenstergestaltung behandelt werden. Syntax: %WINDOW name <fenster-optionen>

feld-definitionen-1 < feld-definitionen-2 ... >; bzw. %WINDOW name <fenster-optionen>

gruppen-definitionen-1 < gruppen-definitionen-2 ... >; Hierbei bedeuten: name der Name des Fensters, unter dem es später aufgerufen werden kann. fenster-optionen mehrere Optionen zur Gestaltung eines Fensters: COLOR = farbe Definition des Farbhintergrundes. Möglich sind 12 verschiedene Farben: BLACK, BLUE, BROWN, CYAN, GRAY, GREEN, MEGENTA, ORANGE, PINK, RED, WHITE, YELLOW. COLUMNS = spalten Festlegung der Anzahl der Spalten inclusive des Randes. ICOLUMN = spalte Festlegung jener Spalte des Bildschimes, an welcher die linke obere Ecke des Fensters positioniert werden soll. Default ist 1. ROWS = zeilen Festlegung der Anzahl der Zeilen. IROW = spalte Festlegung jener Bildschirmzeile, an welcher das Fensters beginnen soll. KEYS = keys-katalog Vereinbarung einer eigenen Tastenbelegung für das Fenster. MENU = pmenu-katalog Für den Fall, daß das Fenster mit einer Menuleiste statt mit einer Komman- dozeile versehen sein soll, kann hier ein mit der Prozedur PMENU erstellter menu-katalog vereinbart werden. feld-definitionen Definition des Textes, der auf dem Bildschirm erscheinen soll und/oder Vereinbarung von Eingabefeldern für Makro-Variablen. gruppen-definitionen gestalten ein Fenster dermaßen, daß je nach Anforderung nur eine bestimmte Gruppe von feld-definitionen gezeigt werden. Hierzu gibt es die zusätzliche Option GROUP = gruppenname hiermit benennt man einen Gruppennamen für die nachfolgenden feld- definitionen. Bsp.: Abbruch nach einer fehlerhaften Eingabe. Das Programm

%MACRO nv;

Page 69: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%LET p=90; %Do i=1 %to 10; n[&i]=probit(&p/100); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO t; %LET p=90; %Do i=1 %to 10; n[&i]=tinv(&p/100,10); %LET p=%EVAL(&p+1); %END; %MEND; %WINDOW Warnung #10 @10 'Es ist ein Fehler aufgetreten.' #12 @10 'Druecken Sie auf ENTER um fortzufahren.'; %MACRO mvert; %LET wahl=6; %IF &wahl=1 %THEN %nv; %ELSE %IF &wahl=2 %THEN %t; %ELSE %GOTO START; %START: %DISPLAY Warnung; %MEND; DATA vert; ARRAY n[10] n1-n10; %mvert; PROC PRINT DATA=vert; RUN;

liefert die Ausgabe

OBS N1 N2 N3 N4 N5 N6 N7 N8 N9 N10

1 . . . . . . . . . .

Feld-Definitionen Bei Makro-Fenstern unterscheidet man zwei verschiedene Feldtypen. Zum einen handelt es sich um sogenannten Textfelder, in denen ein beliebiger Text, welcher auf dem Bildschirm gezeigt werden soll, eingegeben wird. Die zweite Art ist das Eingabefeld einer Makrovariablen (Makrofeld). Zunächst zur Syntax der Textfelder <#n @m> ‘text’ oder ″text“ <optionen> Dabei bezeichnet #n (bzw. @m) die Zeile n (bzw. Spalte m) bei welcher der nachfolgende Text beginnen soll. text steht für eine beliebge Zeichenkette, eingeschlossen in ‘...’ oder ″...“. Als Optionen sind möglich:

Page 70: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

C = farbe Definition der Farbe des Textes. Die möglichen Farben sind oben schon aufgezählt. ATTR = attribute definiert verschiedene Attribute für den voranstehenden Text: BLINK blinkender Text HIGHLIGHT der Text erscheint in hoher Intensitaet REV_VIDEO Text erscheint mit Hintergrund belegt UNDERLINE unterstrichener Text. Syntax der Makrofelder <#n @m> macro-varname <feldlaenge> <optionen> Dabei haben #n und @m die gleiche Bedeutung wie oben. macro-name ist der Name der Makrovariablen. feldlaenge ist die Laenge des Eingabefeldes für die Makrovariable. Als Optionen sind möglich: C = farbe wie oben ATTR = attribute wie oben DISPLAY = YES/NO bestimmt, ob im Feld eingetippter Text sichtbar wird (YES) oder nicht (NO). AUTOSKIP = YES/NO bestimmt, ob der Cursor automatisch zum naechsten Eingabefeld springen soll (YES) oder nicht (NO), wenn das gesamte Feld beschrieben wurde. PROTECT = YES/NO legt fest, ob in einem Makrofeld eine Eingabe getätigt werden kann (YES). REQUIRED = YES/NO legt fest, ob eine Eingabe für das entsprechende Feld zwingend ist (YES). Aufruf von Fenstern Zuvor definierte Makrofenster können mit %DISPLAY an fast jeder Stelle eines SAS-Programms wie folgt aufgrufen werden: %DISPLAY name <.gruppe> <NOINPUT> <BLANK> <BELL>; mit folgenden Bedeutungen: name Name des aufzurufenden Fensters gruppe wurden bei der Fensterdefinition Fenstergruppen vereinbart, so muß name.gruppe vollständig angegeben werden. Ansonsten entfällt das Anhängsel. NOINPUT dem Anwender ist keinerlei Eingabe in Makrofelder möglich, auch wenn diese explizit nicht geschützt sind (PROTECT = YES). BLANK löscht den aktuellen Bidschirminhalt. BELL es ertönt ein akustisches Signal, wenn das Fenster angezeigt wird. Bsp.: Berechnung des 90-99%-Quantils in 1%-Schritten der Standardnormal- oder t-Verteilung. Das Programm %MACRO nv;

%LET p=90; %Do i=1 %to 10; n[&i]=probit(&p/100); %LET p=%EVAL(&p+1); %END; %MEND; %MACRO t;

Page 71: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

%LET p=90; %Do i=1 %to 10; n[&i]=tinv(&p/100,10); %LET p=%EVAL(&p+1); %END; %MEND; %WINDOW Warnung COLOR=red #10 @10 'Es ist ein Fehler aufgetreten.' COLOR=yellow #12 @10 'Druecken Sie auf ENTER um fortzufahren.' COLOR=yellow; %WINDOW Eingabe #10 @10 'Welche Verteilungsfunktion moechten Sie betrachten?' #12 '(1) Standardnormalverteilung' #13 '(2) t-Verteilung' #16 'Geben Sie bitte Ihre Wahl ein:' @45 wahl 1 attr=underline; %MACRO mvert; %start: %display Eingabe; %IF &wahl=1 %THEN %nv; %ELSE %IF &wahl=2 %THEN %t; %ELSE %Do; %DISPLAY Warnung bell; %GOTO start; %END; %MEND; data vert; array n[10] n1-n10; %mvert; PROC PRINT DATA=vert; RUN;

liefert die Ausgabe

OBS T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 1 1.37218 1.44156 1.51790 1.60308 1.69984 1.81246 1.94810 2.12023 2.35931 2.76377

Page 72: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

7.7 Beispielprogramm

Page 73: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Das folgende Programm vergleicht zwei Stichproben. Zuerst wird ein F-Test auf Varianzheterogenität durchgeführt. Lehnt dieser die Gleichheit der Varianzen zum Niveau α=5% ab, so wird ein Mittelwertvergleich mit dem Welch-Test durchgeführt, ansonsten der t-Test. OPTIONS MPRINT; DATA test; INPUT gruppe wert; CARDS; 1 34 1 48 1 38 1 03 1 37 1 29 1 59 2 49 2 34 2 79 2 59 2 96 2 48 2 27 2 49 ; %MACRO Test( testd = _LAST_); DATA teil1; SET &testd; IF gruppe=1 THEN DELETE; RUN; PROC MEANS NOPRINT; BY gruppe; OUTPUT OUT=terg2 MEAN=quer2 VAR=varianz2 N=anz2; RUN; DATA teil2; SET &testd; IF gruppe=2 THEN DELETE; RUN; PROC MEANS NOPRINT; BY gruppe; OUTPUT OUT=terg1 MEAN=quer1 VAR=varianz1 N=anz1; RUN; DATA alle; MERGE terg1 terg2; RUN; DATA eff; SET alle; tgr = varianz1 / varianz2; df1 = anz1 - 1; df2 = anz2 - 1; pf = 1-PROBF( tgr, df1, df2); IF( pf < 0.05) THEN DO; sum1 = varianz1 / anz1; sum2 = varianz2 / anz2; tgr = ABS( quer1 - quer2) / SQRT( sum1 + sum2); df = (( sum1 + sum2) ** 2 ) / (( sum1 ** 2 / ( anz1 - 1)) + ( sum2 ** 2 / ( anz2 - 1))); p = 1-PROBT( tgr,df);

Page 74: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

TITLE't-TEST'; END; ELSE DO; vor = ( anz1 + anz2) / ( anz1 * anz2); zaehler= ( (anz1-1) * varianz1) + ( (anz2-1) * varianz2); nenner = anz1 + anz2 - 2; tgr = ABS( quer1 - quer2) / SQRT( vor * zaehler / nenner); p = 1-PROBT( tgr, nenner); TITLE'Welch-TEST'; END; PROC PRINT; VAR p; RUN; %MEND Test; %Test( testd=test); 8. Die interaktive Matrixsprache IML 8.1 Einführung Die Matrixsprache SAS/IML ist eine in SAS integrierte Programmiersprache, die sowohl interaktives Arbeiten als auch Erstellen und Ausführen von eigenen Programmen zuläßt. Programme, die mit IML erstellt werden, sind allerdings nur unter SAS lauffähig; es muß daher stets zuerst SAS gestartet werden. Wie alle Programmiersprachen wird auch IML sehr stark von ihren vorgegebenen Datenstrukturen (Datentypen) geprägt. IML besitzt im wesentlichen nur 2 Datentypen:

1. Matrix, deren Elemente Zahlen sind, 2. Matrix, deren Elemente Zeichen bzw. Zeichenfolgen sind.

Eine Unterscheidung von Zahlen in ganze Zahlen oder Fließkommazahlen, wie sie in anderen Programmiersprachen üblich ist, wird nicht vorgenommen. Beispiele : 3x3 Matrix 1x3 Matrix (Zeilenvektor) 3x1 Matrix (Spaltenvektor) 1x1 Matrix (Skalar) 1 32 3 -1.4 2 3 4 abc de fg 1 234.678 4 5 6 1.9 Nach der Eingabe des Befehls PROC IML; in den Programmeditor und anschließendem Submit stehen alle Möglichkeiten, die IML bietet, zur Verfügung. Mit Hilfe vordefinierter Operatoren können so z. B. bekannte Matrixoperationen wie Addition und Subtraktion durchgeführt werden. Eine große Anzahl von vordefinierten Operatoren, Funktionen und Modulen sowie die Möglichkeit der eigenen Programmierung erlaubt ein komfortables Arbeiten. Die wichtigsten Sprachelemente und einige Standardmodule und -funktionen sollen in den nächsten Abschnitten vorgestellt werden. Als umfangreiches Nachschlagewerk kann auf das SAS-Handbuch „SAS/IML Software “ verwiesen werden. 8.2 Sprache - (Allgemeines, Sprachelemente) 8.2.1 Programmstruktur Gestartet wird IML mit dem Befehl PROC IML; und anschließendem Submit. Im SAS-Log erscheint IML ready. Ein RUN; wie bei Dataschritten ist nicht notwendig. Beendet wird eine IML-Sitzung mit dem Befehl QUIT;. Im SAS-Log erscheint Exiting IML. Zwischen diesen beiden Befehlen können Anweisungen und Definitionen von eigenen Modulen bzw. Funktionen stehen. Beispiel: PROC IML <WORKSIZE=n1 SIMSIZE=n2>; /*Abschnitt 1 */ START add (A,B); RETURN(A+B);

Page 75: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

FINISH add; /*Abschnitt 2 */ START ausgabe(C); PRINT C; FINISH ausgabe; /*Abschnitt 3 */ D={1 2, 2 3}; E={1 0, 0 1}; /*Abschnitt 4 */ F=add(D,E); /*Abschnitt 5 */ RUN ausgabe(F); QUIT; Kurze Erklärung des Programms: Der Text zwischen /* */ ist als Kommentar zu deuten und hat für die Ausführung des Programms keine Bedeutung. Im Abschnitt 1 wird die Funktion add definiert und im Abschnitt 2 das Modul ausgabe. Die einfachste Methode zur Initialisierung von Matrizen wird im Abschnitt 3 dargestellt. Im Abschnitt 4 wird die Funktion add mit den aktuellen Parametern D und E aufgerufen und das Ergebnis der Matrix F zugewiesen. Die Ausgabe der Matrix F wird mit dem Aufruf des Moduls ausgabe in Abschnitt 5 erreicht. Auf die Funktion PRINT, mit der Matrizen ausgegeben werden können, wird später genauer eingegangen. WORKSIZE und SIMSIZE sind optionale Parameter. WORKSIZE gibt dabei die Anzahl der Kilobytes des Arbeitsspeichers an, die IML zur Speicherung der Daten (Matrizen) nutzen darf. SIMSIZE bestimmt die Größe des Symbolspeichers (enthält z. B. den Programmcode). Bei der Verarbeitung sehr großer Matrizen sollte die Standardeinstellung von Worksize erhöht werden. Die Erhöhung von simsize ist zu empfehlen, wenn sehr viele eigene umfangreiche Module bzw. Funktionen definiert werden. Die Standardeinstellungen können mit dem Befehl SHOW ALL; angezeigt werden. 8.2.2 Definition und Initialisierung von Matrizen Matrizen sind Strukturen, die durch ihre Zeilen und Spalten beschrieben werden. Zur Unterscheidung der Matrizen, wird jeder Matrix innerhalb einer IML-Sitzung ein Name zugewiesen. Diese Namen können beliebige SAS-Namen sein, die den Regeln aus Abschnitt 3.1 genügen. Folgende Möglichkeiten zur Erzeugung von Matrizen bestehen:

1. die Matrizen werden direkt eingegeben, 2. die Matrizen werden mit speziellen Funktionen erzeugt, 3. die Matrizen werden als Ergebnisse von Funktionen bzw. Ausdrücken bestehender Matrizen

erzeugt, 4. die Matrizen werden aus SAS-Dateien oder externen Files erzeugt.

Nur die ersten drei Punkte sollen in diesem Abschnitt beschrieben werden. Die Syntax für die direkte Eingabe von Matrizen im IML lautet: SAS-Name={ Zeile 1,Zeile 2 ,...., Zeile n};. Es werden also in geschweiften Klammern die Zeilen der Matrix eingegeben, die durch Kommata getrennt sind. Beispiele:

A={ 1 2 3 4, 5 6 7 8, 9 10 11 12}; #

1 2 3 4 5 6 7 8 9 10 11 12

B={Anton Peter Silke, Heiko Hans Anne}; #

Anton Peter Silke Heiko Hans Anne

Page 76: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Über Subskripte ist es möglich, auf jedes einzelne Element einer Matrix zuzugreifen. A[1,2] entspricht z. B. dem 2. Element der 1. Zeile der Matrix A und ist gleich 2. Der erste Index innerhalb der eckigen Klammern bezieht sich dabei immer auf die Nummer der Zeile und der zweite auf die Nummer der Spalte. Die Zählung der Spalten bzw. der Zeilen beginnt jeweils bei 1. IML bietet aber auch die Möglichkeit, auf einzelne Zeilen, Spalten oder Blöcke einer Matrix zuzugreifen. Die i-te Zeile der Matrix A kann durch A[i,] und die j-te Spalte durch A[,j] angesprochen werden. Der Zugriff auf Blöcke einer Matrix kann mit Hilfe von Subskriptmengen vollzogen werden. Syntax: matrixname[<subskriptmenge1>,<subskriptmenge2>]. Subskriptmengen stellen dabei eine Teilmenge, angegeben als Zeilenvektor, der Zeilen- bzw. Spaltenindizes dar. Beispiele: A[1:3,] entspricht der vollen Matrix A, 1 2 3 4 5 6 7 8 9 10 11 12 A[1,1:3] entspricht der ersten Zeile von A ohne dem Element A[1,4], 1 2 3 A[1:2,3:4] entspricht einer Matrix, bestehend aus den letzten beiden Spalten von A ohne die Elemente A[3,3] und A[3,4] , 3 4 7 8 A[{1 3},{2 4}] entspricht der Matrix, bestehend aus den Schnittelementen der angegebenen Zeilen mit den angegebenen Spalten, 2 4 10 12 Durch diese als Subskriptoperatoren bezeichneten Operatoren können mit Hilfe von Zuweisungsbefehlen aus bereits bestehenden nun auch neue Matrizen erzeugt werden. Die allgemeine Syntax von Zuweisungsbefehlen lautet: matrixname=ausdruck; . Der Ausdruck auf der rechten Seite wird zunächst berechnet und dann der linken Seite zugewiesen. Mit der Anweisung B = A[1:2,3:4]; wird die Matrix B erzeugt. Spezielle Funktionen bzw. Operatoren zum Erzeugen von Matrizen sind z. B.: I(n) erzeugt eine n-dimensionale quadratische Matrix, deren Hauptdiagonalelemente Einsen sind. Beispiel: H=I(3) ; #

1 0 0 0 1 0 0 0 1

J(a,b,c) erzeugt eine axb-Matrix, deren Elemente alle dem Wert c entsprechen. Beispiel: P= J(2,4,1); #

1 1 1 1 1 1 1 1

DO(a,b,c) erzeugt den Zeilenvektor a a+c a+2*c ... stop. Beispiele: K=DO(0,6,2); # 0 2 4 6 L=DO(18,12,-3); # 18 15 12 Der Spezialfall M=DO(a,b,1); kann durch M=a:b; abgekürzt werden. Etwas komplexere Matrizen lassen sich aus bestehenden Matrizen durch folgende Funktionen erzeugen:

Page 77: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

BLOCK(matrix1,...,matrixn) erzeugt aus den numerischen Matrizen matrix1,....,matrixn eine Blockmatrix, Beispiel: N=BLOCK({2 0,0 3}, {2 1, 1 2}, {1 0 0 ,0 1 0,0 0 1}); #

2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

DIAG(matrix) erzeugt, a) falls matrix eine quadratische Matrix ist, eine quadratische Matrix, dessen Hauptdiagonalelemente denen von matrix entsprechen und deren restlichen Elemente gleich Null sind. Beispiel: Q=DIAG({55 34, 2 3}); #

55 0 0 3

b) falls matrix eine Vektor der Länge n ist, eine quadratische Matrix, dessen Hauptdiagonalelemente denen des Vektors entsprechen und dessen restlichen Elemente gleich Null sind. Beispiel: R=DIAG(1 2 3 4); #

1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4

INSERT(matrix1, matrix2, zeile, spalte) ermöglicht das Einfügen von matrix2 in matrix1. Zeile oder spalte geben den Ort des Einfügens an, dabei darf nur entweder zeile oder spalte ungleich Null sein. Der angegebene Teil wird dann vor zeile bzw vor spalte eingefügt.

Beispiele: S=INSERT({1 2, 3 4},{5, 6},0,3); #

1 2 5 3 4 6

T= INSERT({1 2, 3 4},{5 6},2,0); #

1 2 5 6 3 4

REPEAT(matrix, faktorrechts, faktorunten) vergrößert matrix, indem sie faktorrechts mal nebeneinander und diese Matrix dann faktorunten mal untereinander geschrieben wird. Beispiel: U= REPEAT({1 2, 3 4},2,2}; #

1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4

SETDIF(matrix1, matrix2) das Ergebnis dieser Funktion ist ein Zeilenvektor, der alle Elemente enthält, die in matrix1, aber nicht in matrix2 enthalten sind. Die

Page 78: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Elemente des Vektors sind zusätzlich noch der Größe nach geordnet. Beispiel: V=SETDIF({1 2, 3 4},{1 2}); # 3 4 UNIQUE(matrix1,..., matrixn) erzeugt einen Zeilenvektor, dessen Elemente den verschiedenen Elementen der Matrizen entsprechen. Jedes Element kommt dabei jeweils nur einmal vor. Zusätzlich sind diese Werte der Größe nach geordnet. Beispiel: W=UNIQUE({2 1, 4 3 },{1 2, 4 5}); # 1 2 3 4 5 VECDIAG(matrix) bildet aus einer nxn Matrix einen nx1 Vektor, der die Diagonalelemente der Matrix enthält. Beispiel: X= VECDIAG({1 2, 3 4}); #

1 4

XSECT(matrix1,...,matrixn) erzeugt einen geordneten Zeilenvektor, der alle Elemente enhält, die in allen genannten Matrizen mindestens einmal vorkommen. Beispiel: Y= XSECT({1 2, 3 4},{3 4},{3 4, 5 6}); # 3 4 Weitere Funktionen sind im SAS/IML-Handbuch zu finden.

8.2.3 Operatoren IML besitzt eine Vielzahl von Operatoren, die entweder auf eine Matrix, unäre Operatoren, oder auf zwei Matrizen, binäre Operatoren, wirken. Die unären Operatoren teilen sich auf in Präfix-Operatoren, Postfix-Operatoren und Subskriptreduktionsoperatoren. Weiterhin können die Operatoren in folgende Klassen eingeteilt werden:

• arithmetische Operatoren z. B. A + B (Addition der Matrizen A und B ) • Vergleichsoperatoren z. B. A <= B (elementweiser Vergleich der Matrizen A und B ) • logische Operatoren z. B. A & B (elementweise logische Und-Verbindung) • Zeichenoperatoren z. B. A // B (vertikales Verketten der Matrix A und B )

IML stellt außerdem Operatoren zu Verfügung, die elementweise auf die Matrizen wirken. Zum Beispiel bietet IML 3 verschiedene Multiplikationen an. Eine Variante ist die übliche Matrixmultiplikation. Die zweite Variante ist die Multiplikation einer Matrix mit einem Skalar. Und die dritte Variante ist die Elementweise Multiplikation zweier Matrizen. Beispiel: A={1 2, 1 1}; B={2 3, 1 2}; C=A*B; C=3*A; C=A#B; C=A#B[,1:2]; C=A#B[1:2,]; # # # # #

4 7 3 6 2 6 2 6 2 6 3 5 3 3 1 2 1 2 1 2

Page 79: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Bei binären Operatoren ist zu beachten, daß die Dimensionen der Matrizen zueinander passen müssen. Bei elementweisen Operationen müssen die Matrizen gleiche Dimensionen besitzen, oder eine der Matrizen muß ein Skalar sein. Eine Ausnahme bildet dabei die elementweise Matrixmultiplikation. Bei ihr ist zugelassen, daß eine der Matrizen ein Vektor ist (siehe Beispiele). Die folgende Tabelle enthält die unter IML nutzbaren Operatoren und eine kurze Beschreibung. Zusätzlich wird angegeben, ob es sich um unäre (prefix/ postfix) oder binäre (infix) Operation handelt und welche Priorität diese Operation besitzt. Eine hohe Rangzahl deutet auf eine niedrige Priorität hin. Operatoren, die sowohl auf numerische Matrizen als auch Zeichenmatrizen angewandt werden dürfen, werden durch den Datentyp both gekennzeichnet. Num kennzeichnet Operatoren , die nur auf numerische Matrizen angewandt werden dürfen. Die Beispiele beziehen sich immer auf die im letztem Beispiel definierten Matrizen A und B. Operator Symbol Typ Priorität Operand(en) Datentyp Beispiel negative Vorzeichen

- präfix 1 beliebig num C= - A; -1 -2 -1 -1

Addition + infix 3 Matrix/Matrix Matrix/Skalar

both C=A+B; 3 5 2 3

Subtraktion - infix 3 Matrix/Matrix Matrix/Skalar

num C=A-B; -1 -1 0 -1

Multiplikation * infix 2 Matrix/Matrix num siehe oben

elementweise Multiplikation

# infix 2 Matrix/Matrix Matrix/Vektor Matrix/Skalar

num sieh oben

direktes Produkt @ infix 2 Matrix/Matrix num C=A@B; 2 3 4 6 1 2 2 4 2 3 2 3 1 2 1 2

Matrix Potenz ** infix 1 Matrix/Skalar num C=A**3; 6 9 5 7

elementweise Matrix Potenz

## infix 1 Matrix/Matrix Matrix/Skalar

num C=A##2; 1 4 1 1

elementweise Division

/ infix 2 Matrix/Matrix Matrix/Skalar

num C=A/B; 1/2 2/3 1 1/2

elementweises Maximum

<> infix 2 Matrix/Matrix Matrix/Skalar

both C=A<>B; 2 3 1 2

elementweises Minimum

>< infix 2 Matrix/Matrix Matrix/Skalar

both C=A><B; 1 2 1 1

kleiner < infix 5 Matrix/Matrix Matrix/Skalar

both C=A<B; 1 1 0 1

kleiner gleich <= infix 5 Matrix/Matrix Matrix/Skalar

both C=A<=B; 1 1 1 1

größer > infix 5 Matrix/Matrix Matrix/Skalar

both C=A>B; 0 0 0 0

größer gleich >= infix 5 Matrix/Matrix Matrix/Skalar

both C=A>=B; 0 0 1 0

gleich = infix 5 Matrix/Matrix Matrix/Skalar

both C1=A=B; 0 0 1 0

ungleich ^= infix 5 Matrix/Matrix Matrix/Skalar

both C2=A^=B; 1 1 0 1

logisches und & infix 6 Matrix/Matrix Matrix/Skalar

num C=C1&C2; 0 0 0 0

logisches oder | infix 7 Matrix/Matrix Matrix/Skalar

num C=C1|C2; 1 1 1 1

logische Negation ^ präfix 1 Matrix num C=^C1; 1 1 0 1

transponieren ` postfix 1 Matrix both A`; 1 1 2 1

Index operator : infix 4 Skalar/Skalar num C=1:4; 1 2 3 4

Subskript [..,..] postfix 1 Matrix both C=A[,1]; 1 1

horizontales Verketten

|| infix 4 Matrix/Matrix both C=A[,1]||B[,2]; 1 3 1 2

vertikales verketten

// infix 4 Matrix/Matrix both C=A[1,]//B[2,]; 1 2 1 2

Page 80: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Das Zusammenfassen von Zeilen oder Spalten ist mit den Reduktionsoperatoren möglich. Als Ergebnis solcher Operatoren wird, jenachdem ob der Operator auf die Spalten oder auf die Zeilen wirkt, ein Zeilen- oder Spaltenvektor erzeugt. Werden ein Zeilenoperator und ein Spaltenoperator gleichzeitig angewendet, so besitzt der Zeilenoperator höhere Priorität, und das Ergebnis ist ein Skalar. Syntax: C=matrix[<subskriptmenge>,spaltenreduktionsopertor]; C=matrix[zeilenreduktionsopertor,< subskriptmenge>]; C=matrix[zeilenreduktionsoperator,spaltenreduktionsopertor];. Mittels der Matrix X={1 2 3, 4 5 6, 7 8 9} werden die Reduktionsoperatoren in folgender Tabelle anhand von Beispielen erklärt. Operation Symbol Beispiele Addition +

Z=X[,+] ; 6 Z=X[+,1:2]; Z=X[+,+]; 15 12 15 45 24

Multiplikation #

Z=X[1:2,#]; 6 Z=X[#,]; Z=X[#,#]; 120 28 80 162 362880

Maximum <>

Z=X[,<>]; 3 Z=X[<>,{1 3}]; Z=X[<>]; 6 7 9 9 9

Minimum ><

Z=X[2,><]; Z=X[><,]; Z=X[><,><]; 4 1 2 3 1

Index des Maximums

<:> Z=X[, <:>]; 3 Z=X[<:>,1:2]; Z=X[<:>]; 3 3 3 9 3

Index des Minimums

>:<

Z=X[2:3,>:<]; 1 Z=X[>:<,]; Z=X[>:<]; 1 1 1 1 1

arithmetisches Mittel

: Z=X[,:]; 2 Z=X[:,1:2]; Z=X[:,:]; 5 4 5 5 8

Quadratsumme ##

Z=X[3,##]; Z=X[##,]; Z=X[##,##]; 194 66 93 126 28881

Beispiele für die Nutzung von Zeilen- und Spaltenreduktionsoperatoren: z11=X[+,]; Z1=X[+,#]; z22=X[#,]; Z2=X[#,+]; # 12 15 18 # 3240 # 28 80 162 # 270 z33=X[><,]; Z3=X[><,+]; z44=X[,+]; 6 Z4=X[,+][#,]; # 1 2 3 # 6 # 15 # 2160

24 8.2.4 Module Module in IML stellen Unterprogramme dar, die von beliebiger Stelle des Programms (innerhalb von IML) aufgerufen werden können. Es können somit Anweisungen zusammengefaßt und z. B. abhängig von bestimmten Bedingungen ausgeführt werden. Unterteilt werden die Module in Funktionen und Subroutinen. Die Syntax eines Moduls lautet: START <name> <(argumente)> <Global (argumente)> anweisungen RETURN(wert); /* nur falls es sich um eine Funktion handeln soll */ FINISH <name>;. Wird kein Name angegeben, wird das Modul von IML mit MAIN bezeichnet. Eine Funktion gibt genau eine Matrix zurück und kann daher an jeder beliebigen Stelle eines Ausdrucks stellvertretend für eine Matrix stehen. Der Aufruf einer Subroutine erfolgt mit:

RUN name <(argumente)>; CALL name <(argumente)>;.

Ein Unterschied der beiden Aufrufe macht sich nur bemerkbar, wenn sowohl eine benutzerdefinierte Subroutine als auch eine IML eigene Routine (built-in subroutine) mit dem gleichen Namen existiert. Wird eine Subroutine

Page 81: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

mit RUN aufgerufen, versucht IML erst eine benutzerdefinierte Subroutine mit diesem Namen zu finden und startet diese dann. Findet IML keine benutzerdefinerte Subroutine mit diesem Namen, wird die built-in Subroutine gestartet. Ein Aufruf mit CALL bewirkt genau die umgekehrte Reihenfolge. Beispiel: PROC IML; X={1 2}; Y={3 4}; Z={1 4}; START name1 (A,B); C=A+B; PRINT C; FINISH name1; START name2 (A,B); RETURN(A+B); FINISH name2; RUN name1(X,Y); Z= name2(X,Y); PRINT Z; /*oder kurz */ PRINT (name2(X,Y)); QUIT; Wichtige Bestandteile von Modulen sind die Argumente (Parameter). Bei der Definition des Moduls name1 z. B. werden die beiden Argumente A und B genannt. Sie sind in diesem Beispiel die formalen Parameter (Platzhalter), die beim Aufruf durch die aktuellen Parameter X und Y ersetzt werden. Zusätzlich zu den schon außerhalb deklarierten Variablen (Matrizen) ( hier z. B. X und Y) können auch noch innerhalb von Modulen Variablen deklariert werden (hier z. B. C). Es gibt demnach lokale, innerhalb bestimmter Module deklarierte, als auch globale, außerhalb von Modulen deklarierte, Variablen. X,Y und Z sind z. B. globale Variablen, während C eine lokale Variable ist. Die Definitionen von globalen Variablen werden in globalen Tabellen abgelegt, während die Definitionen von lokalen Variablen in lokalen Tabellen abgelegt werden. Dies hat enorme Auswirkungen auf den Gültigkeitsbereich der Variablen und führt oft bei unbedachter Programmierung zu Fehlern. Würde man z. B. in der Funktion name2 die Anweisung PRINT Z; einschieben, würde dies während des Programmablaufs zu eine Fehlermeldung führen, da Z weder als Argument noch als globale Variable übergeben wurde und demnach innerhalb von name2 nicht existiert. Beispiel: PROC IML; V={0 0, 0 0}; U={0 0}; X={1 2}; Y={3 4}; Z={1 4}; START name1 (A,B) GLOBAL (Z); U=A; C=A+B; A=A+A; PRINT A C U Z; Z=A+Z; FINISH name1; RUN name1(X,Y); RUN name1(V[1,],B); QUIT;

#V 0 0 0 0 #U X Y Z 0 0 1 2 3 4 1 4 Ausgabe: A C U Z 2 4 4 6 1 2 1 4 #U X Y Z 0 0 2 4 3 4 3 8 Ausgabe: A C U Z 0 0 3 4 0 0 3 8 ==> V

Page 82: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

U ist im Beispiel eine Variable, die sowohl lokal als auch global definiert ist. Eine Änderung der lokalen Variable U hat aber keinen Einfluß auf die globale Variable U. Anders sieht es da bei der globalen Variable Z aus. Die Änderung von Z innerhalb des Moduls wirkt sich auch nach außen aus. Da die Argumente per Referenz übergeben werden, können auch diese in den Modulen geändert werden. Eine Ausnahme bilden dabei temporäre Variablen. Im Beispiel ist V[1,] eine Zeile von V, die nur temporär einer Matrix zugewiesen und dann übergeben wird. Um Zusammenhänge zwischen Modulen besser zum Ausdruck zu bringen, läßt IML geschachtelte Module zu. Beispiel: PROC IML; X={1 2}; Y={3 4}; START name1 (X,Y); C=X+Y; START name2(B); PRINT B; FINISH name2; RUN name2(C); FINISH name1; Solche geschachtelten Module haben sicher einige Vorteile, aber auch Nachteile. Prinzipiell kommt man auch ohne sie aus. 8.3 Anweisungen und Kontrollstrukturen 8.3.1 Einfache Anweisungen Anweisungen bestehen aus: • Zuweisungen • Modulaufrufen • Sprüngen. Zuweisungen wurden schon an früherer Stelle definiert, sollen aber an dieser Stelle genauer erklärt werden. Syntax: matrix=ausdruck; Matrix ist dabei die Variable, der ein neuer Wert zugewiesen werden soll. Ausdruck gibt den Wert an, der der Variablen zugewiesen wird. Im Ausdruck können Operatoren, Operanden und Funktionsaufrufe auftreten. Die auftretenden Funktionen werden aufgerufen, und mit ihrem Rückgabewert wird dann gerechnet. Die Syntax von Modulaufrufen wurde schon im Abschnitt 10.2.4 eingeführt. Sprünge innerhalb eines Programms sind mit den Anweisungen GOTO und LINK möglich. Syntax : GOTO label; LINK label; Im allgemeinen machen solche Sprunganweisungen ein Programm schlechter lesbar und sollten daher vermieden werden. In einer Verbundanweisung, die mit DO; und END; erzeugt wird, können einzelne Anweisungen zu einem Block zusammengefaßt werden. Dieser Block kann dann an Stellen stehen, an denen IML nur eine einzelne Anweisung zuläßt. Ein Beispiel hierfür wird im nächsten Abschnitt folgen. 8.3.2 Bedingte Anweisungen und Schleifen Soll die Ausführung einer Anweisung oder eines Anweisungsblocks von einer Bedingung abhängig gemacht werden, so ist dies mit der aus Dataschritten bekannten IF - THEN /ELSE Struktur möglich. Syntax: IF bedingung THEN anweisung; <ELSE anweisung;> Beispiel: PROC IML; C=“Anton“; A={1.2 1.5 };

Page 83: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

D=“Berta“; B={1.3 1.1}; M=1.5; IF A<= B THEN PRINT A; ELSE PRINT B; IF A<M THEN DO; A=A[,:]; B=B[,:]; IF A<=B THEN PRINT C A; ELSE PRINT D B; END; ELSE IF B<M THEN DO; B=B[,:]; PRINT D B; END; QUIT;

Ausgabe: B 1.3 1.1 Ausgabe: D B Berta 1.2

Zur wiederholten Durchführung einer Anweisung oder eines Blockes bietet IML 3 Schleifenkonstrukte an. Abhängig von einer Bedingung, die entweder am Anfang eines Durchlaufs (kopfgesteuert) oder am Ende eines Durchlaufs (fußgesteuert) geprüft wird, werden die Anweisungen wiederholt. Ist die Anzahl der Durchläufe beim Start der Schleife nicht bekannt, kann einer der beiden folgenden Schleifen genutzt werden: Syntax: DO WHILE bedingung; anweisung(en); END; DO UNTIL bedingung; anweisung(en); END; Die erste Schleife wird nur dann wenigstens einmal durchlaufen, wenn bedingung von Anfang an wahr (bedingung=1) ist. Der Schleifenkörper wird verlassen, wenn bedingung den Wert falsch (bedingung=0) hat. Die zweite Schleife wird hingegen solange durchlaufen, bis bedingung wahr ist. Da die Prüfung der Bedingung erst am Ende des Schleifenkörpers erfolgt, wird die Schleife mindestens einmal durchlaufen. PROC IML; x=1; i=0; DO WHILE (x); IF i<=4 THEN DO;i=i+1;PRINT i;END; ELSE x=0; END; y=0; DO UNTIL (y); IF i<=8 THEN DO;i=i+1;PRINT i;END; ELSE y=1; END; QUIT;

Ausgabe: der WHILE Schleife: der UNTIL Schleife:

I I 1 6 I I 2 7 I I 3 8 I I 4 9 I 5

Wenn schon von vornherein bekannt ist, wie oft eine Schleife durchlaufen werden soll, kann eine dritte Variante genutzt werden. Syntax: DO zähler=startwert TO endwert < BY schrittweite>; anweisung(en);

Page 84: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

END; Der zähler wird vor dem ersten Schleifendurchlauf mit startwert initialisiert. Abhängig vom Vorzeichen von schrittweite wird dann verglichen, ob zähler <=endwert, positives Vorzeichen, oder ob zähler>=endwert, negatives Vorzeichen, gilt. Ist die Bedingung wahr, werden die Anweisungen einmal ausgeführt. Am Ende wird zähler um schrittweite erhöht ( bei positiver schrittweite) bzw. verringert ( bei negativer schrittweite). Ist zähler dann immer noch kleiner gleich bzw. größer gleich endwert, wird die Schleife erneut durchlaufen. Dies wird solange fortgesetzt, bis das Ergebnis des Vergleichs 0 ist. Die Standardeinstellung für schrittweite ist +1. Beispiel: PROC IML; DO i=1 TO 4; PRINT i; END; DO i=1 TO 0 BY -0.5; PRINT i; END; QUIT;

Ausgabe: der 1. Schleife: der 2. Schleife:

I I 1 1 I I 2 0.5 I I 3 0 I

4 8.4 Arbeiten mit SAS-Dateien und externen Files 8.4.1 SAS-Dateien Datensätze, die bereits in SAS vorliegen, können in Matrizen eingelesen werden, und umgekehrt können aus Matrizen Datensätze erzeugt werden. Die wichtigsten Funktionen, die IML dazu bereitstellt, werden in diesem Kapitel vorgestellt. Bevor IML mit SAS-Dateien arbeiten kann, müssen sie mit USE, CREATE oder EDIT geöffnet werden. Der Unterschied dieser drei Befehle liegt in den Zugriffsrechten. Eine mit USE geöffnete Datei kann nur gelesen werden. EDIT öffnet eine bereits bestehende Datei zum Lesen und Schreiben. CREATE erzeugt eine neue SAS-Datei, die dann zum Lesen und Schreiben geöffnet ist. Sind mehrere SAS-Dateien geöffnet, kann mit den Befehlen SETIN bzw. SETOUT eine Datei als die aktuelle Datei zum Lesen bzw. zum Schreiben ausgewählt werden. Statusinformationen von Dateien können mit dem Befehl SHOW datasets; angezeigt werden. Ein erneutes Anwenden von USE, CREATE oder EDIT auf eine mit dem jeweiligen Befehl eröffnete Datei bewirkt dasselbe. Auf eine zum Lesen geöffnete Datei können die Befehle FIND, INDEX, LIST und READ angewendet werden. Sind Dateien auch zum Schreiben geöffnet, so kommen noch die Befehle REPLACE, APPEND, DELETE und PURGE dazu. Mit dem Befehl CLOSE kann jede geöffnete SAS-Datei wieder geschlossen werden. Syntax: USE sasdatei <VAR operand> <WHERE (ausdruck)>; EDIT sasdatei <VAR operand > <WHERE (ausdruck)>; CREATE sasdatei <VAR operand >; Operand steht für:

• {variablenname(n)} • eine Matrix, die Variablennamen enthält • einen eingeklammerten Ausdruck, der Variablennamen enthält • eines der folgenden Keywords:

• _ALL_ steht für alle Variablen • _CHAR_ steht für alle Zeichenvariablen • _NUM_ steht für alle numerischen Variablen .

Mit WHERE können Beobachtungen der SAS-Datei selektiert werden. Im Ausdruck dürfen zu den üblichen Vergleichsoperatoren noch 4 weitere Operatoren benutzt werden.

1. ? prüft ob ein vorgegebener String in einer angegebenen Zeichenvariable enthalten ist. 2. ^? prüft ob ein vorgegebener String nicht in einer angegebenen Zeichenvariable enthalten ist. 3. =* prüft ob ein vorgegebener String einer angegebenen Zeichenvariable ähnlich ist. 4. =: prüft ob eine angegebene Zeichenvariable mit einem angegebenen String beginnt.

CREATE sasdatei FROM matrixname <[COLNAME=spaltennamen ROWNAME=zeilennamen]>;

Page 85: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

Spaltennamen und Zeilennamen sind Zeichenmatrizen, deren Längen mindestens den Dimensionen von matrixname entsprechen müssen. SETIN sasdatei; SETOUT sasdatei; LIST <range><VAR operand> <WHERE (ausdruck)>; Der LIST-Befehl gibt die mit range, operand und ausdruck selektierten Beobachtungen (Zeilen) im Output-Fenster aus. Range kann dabei folgende Werte annehmen:

• ALL alle Zeilen, • CURRENT die aktuelle Zeile, • NEXT die nächste Zeile bzw. die nächsten Zeilen, • AFTER alle Zeilen nach der aktuellen, • POINT operand alles durch operand angegebene; operand kann dabei eine Zahl, eine Matrix

oder ein eingeklammerter Ausdruck sein, READ <range>< VAR operand> <WHERE (ausdruck)> <INTO matrix>; Mit READ werden die selektierten Variablen und Beobachtungen (Zeilen) in matrix, falls angegeben, eingelesen. Fehlt die INTO-Option, wird für jede Variable der VAR Klausel eine eigene Matrix angelegt. FIND <range> <WHERE (ausdruck)> INTO matrix; Hiermit werden alle Beobachtungen gefunden, die die WHERE-Bedingung erfüllen. Ihr Zeilenindex wird in matrix eingelesen. INDEX variabel |NONE; Um LIST, FIND, READ oder DELETE Operationen zu beschleunigen, kann eine Variable indiziert werden. Welche Variable indiziert ist, kann mit SHOW CONTENTS; angezeigt werden. APPEND <VAR operand >; APPEND <FROM from-name <[ROWNAME=zeilenname]>>; Dieser Befehl hängt die selektierten Variablen an die aktuell zum Schreiben geöffnete Datei an. DELETE <range> <WHERE (ausdruck)>; Dies kennzeichnet in der aktuell zum Schreiben geöffneten Dateien die selektierten Daten als gelöscht. Sollen die Daten richtig gelöscht werden, so muß dies mit dem Befehl PURGE; geschehen. REPLACE <range><VAR operand> <WHERE (ausdruck)>; Hiermit werden in der aktuell zum Schreiben geöffneten Datei die durch range, operand und ausdruck selektierten Beobachtungen in der SAS-Datei durch Zeilen der Matrix ersetzt. CLOSE sasdatei; Dieser Befehl schließt die angegebene SAS-Datei. Beispiele: DATA test1; INPUT dosis wirkung; CARDS; 1 2 1 3 1 3 1 2 2 4 2 5 2 6 2 7 2 3 ; DATA test2; INPUT dosis wirkung jahr; CARDS;

Ausgabe: DOSIS WIRKUNG 1 2 1 3 1 3 1 2 2 4 2 5 2 6 2 7 2 3

Page 86: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

1 2 87 1 3 87 1 3 89 1 2 89 2 4 87 2 5 87 2 6 89 2 7 89 2 3 89 ; RUN; PROC IML; USE TEST1; READ ALL VAR {dosis wirkung}; PRINT dosis wirkung; EDIT TEST2 VAR {dosis wirkung jahr} WHERE(jahr=87); M={1 3 90, 1 4 90, 2 5 90, 2 6 90}; N={1,2,3,4}; APPEND FROM M; CLOSE TEST1; CLOSE TEST2; M1=M[,1]; M2=M[,2]; M3=M[,3]; CREATE TEST3 VAR {M1 M2 M3 N}; APPEND; QUIT; PROC PRINT DATA=TEST1; PROC PRINT DATA=TEST2; PROC PRINT DATA=TEST3; RUN;

8.4.2 Externe Files Das Abspeichern von Daten in externen Dateien ist mit den Befehlen FILE und PUT möglich. Für das Lesen aus externen Dateien werden INFILE und INPUT benutzt. Das Vorgehen ist ähnlich dem Vorgehen in SAS-Data Schritten. Mit FILE bzw. INFILE wird eine Datei zum Schreiben bzw. zum Einlesen geöffnet. Mit dem Befehl FILENAME kann eine Reference zu externen Files hergestellt werden. Durch CLOSEFILE filename; werden geöffnete Dateien wieder geschlossen. Prinzipiell kennt IML zwei Dateitypen:

• binäre Dateien; enthalten keine Zeichen für Zeilenende oder Zeilenumbruch; Daten werden in sogenannten Rekords zusammengefaßt und dann gespeichert; kann nicht in jedem beliebigen Editor betrachtet werden,

• Textdateien; enthalten Zeichen für Zeilenende und Zeilenumbruch; kann in jedem Editor betrachtet werden.

Die Umgang mit Textdateien ist wesentlich einfacher. Dafür kann bei binären Dateien angegeben werden, ab welcher Position eine angegebene Anzahl von Bytes eingelesen werden soll. Zur Unterscheidung dieser beiden Filetypen muß bei binäre Dateien beim Öffnen mit INFILE bzw. FILE die Option RECFM=N gesetzt werden. Syntax: FILENAME name Dateilokation;

Page 87: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

INFILE filename | Dateilokation <options>; Als Optionen, die nur für binäre Dateien benötigt werden, sind folgende zugelassen:

• LENGTH gibt die Länge eines Rekords an; • RECFM=N zeigt an, daß es sich um eine binäre Datei handelt; • FLOWOVER stehen im aktuellen Rekord nicht genügend Daten, so wird der Rekord

mit Daten aus dem folgenden Rekord aufgefüllt; • MISSOVER setzt fehlende Werte als missing; • STOPOVER stopt das Einlesen, wenn im Rekord nicht für alle Variablen Informationen enthalten sind;

Zum Einlesen wie auch zum Schreiben von Daten muß IML erst bekannt gegeben werden: • die Anzahl der Variablen und deren Namen, • der Typ der Variable, • das Format jeder Variable, • die Spalten, die zu einer Variablen gehören.

Das Einlesen und das Schreiben kann dabei auf zwei Arten erfolgen: 1. List (In)put die Daten werden in Abhängigkeit von Trennzeichen,

Leerzeichen oder Komma geschrieben (eingelesen), 2. Formatiertes (In)put die Daten werden in Abhängigkeit von Spaltenangaben geschrieben (eingelesen).

Die einfachste Form, Daten aus einer Textdatei zu lesen, ist: INPUT variable <$> <&> <...variable<$> <&>>;. Das Dollarzeichen kennzeichnet eine Variable als Zeichenvariable, und das Ampersandzeichen gibt an, daß in einer Variable 1 Leerzeichen (wird sonst als Trennzeichen benutzt) auftreten kann. Die Ausgabe erfolgt analog. FILE filename | Dateilokation; PUT variable <$> <&> <...variable<$> <&>>; Für die Ein- und Ausgabe in binären Dateien bzw. für die formatierte Ein- bzw. Ausgabe sei auf das IML-Handbuch verwiesen. Beispiel: PROC IML; FILENAME datei "c:\programme\sas\temp\lesen.dat"; FILE datei; x=5; DO i=1 TO 4; x=i*x; PUT i x; END; CLOSEFILE datei; INFILE datei; DO i=1 TO 4; INPUTi x; PRINT i x; END; CLOSEFILE datei; QUIT;

Ausgabe: I X 1 5 I X 2 10 I X 3 30 I X 4 120

8.5 Standardmodule und -funktionen 8.5.1. Base SAS-Funktionen Ein großer Teil der SAS-Funktionen die außerhalb von IML auch existieren, sind unter IML in gleicher Weise nutzbar. Zu beachten ist dabei, daß IML an den meisten stellen Matrizen als Argumente zuläßt. Die Funktionen wirken dann elementweise. Die Funktionen können wie folgt unterteilt werden:

1. Mathematische Funktionen

Page 88: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

• Arithmetische Funktionen; z. B. • ABS(x) gibt den Absolutwert von x zurück • MAX(x) bestimmt das maximale Element in x

• Trigonometrische Funktionen; z. B. • SIN(x) gibt den Sinus von x zurück • ARCSIN(x) gibt den Arcussinus von x zurück

• Hyperbolische Funktionen; z. B. • SINH(x) gibt den Sinushyperbolicus von x zurück • TANH(x) gibt den Tangenshyperbolicus von x zurück

• Transzendente Funktionen; z. B. • LOG(x) natürlicher Logarithmus (Basis e=2,7...) • EXP(x) Exponentialfunktion (ex)

• Spezielle Funktionen; z. B. • GAMMA(X) ist eine Integralfunktion; Spezialfall GAMMA(N)=(N-1)! N positive ganze Zahl

2. Datums- und Zeitfunktionen; z. B. • DATE( ) gibt die seit dem 1.1.1960 vergangenen Tage zurück

(1.1.1960 #0, 2.1.1960# 1,...) • DATETIME( ) gibt die seit dem 1.1.1960 00:00 Uhr vergangenen Sekunden an (1.1.1960 10:00 Uhr# 36000 sec) • HOUR(datetime) bestimmt den Stundenanteil der aktuellen Uhrzeit

3. Wahrscheinlichkeitsfunktionen (siehe auch Kapitel 5.1 dieses Buches) • Quantilfunktionen; z. B. PROBIT(p),... • Verteilungsfunktionen; z. B. PROBNORM(X),... • Zufallszahlengeneratoren; z. B. RANNOR(startwert),...

4. Statistische Funktionen; z. B. • MEAN(x1,x2,...) bestimmt den Mittelwert der angegebenen Argumente • VAR(x1,x2,...) bestimmt die Varianz der angegebenen Argumente

5. Rundungsfunktionen; z. B. • CEIL(x) gibt die kleinste ganze Zahl >= x zurück • ROUND(x,eps) rundet auf die angegebene Genauigkeit (ROUND(1.245,0.1) ==> 1.2)

6. Zeichenfunktionen; z. B. • UPCASE(x); wandelt kleine Buchstaben in große um

(UPCASE(“abcd“) ==>“ABCD“)

8.5.2 IML-Built-in Funktionen und Call-Routinen IML stellt weiterhin eine Reihe von Funktionen und Subroutinen zur z. B. folgenden Problemen bereit:

1. komplexe mathematische Aufgaben; z. B. • Lösung linearer Gleichungssysteme • Lösung von Optimierungsaufgaben • numerische Integration • numerische Differentiation

2. grafische Darstellungen; z. B. • Zeichnen von Linien • Zeichnen von Kreisen bzw. Kreissegmenten

3. weitere Matrixfunktionen; z. B. • Invertieren von quadratischen regulären Matrizen • Berechnen von Rängen • Berechnen der Determinante einer quadratischen Matrix.

Zu den ersten beiden Punkten sei auf IML-Handbücher verwiesen. Einige Funktionen, die sich unter drittens einordnen lassen und zur Lösung statistischer Problem nützlich sind, sollen kurz beschrieben werden. Zum besseren Verständnis erfolgt die Beschreibung anhand einer Tabelle, in der neben einer kurzen Erklärung auch Beispiele angegeben sind.

Page 89: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

FUNKTIONSNAME

ERKLÄRUNG

BEISPIEL

ALL

prüft, ob alle Elemente der Matrix gleich Null sind

X={1,1,0};Y=ALL(X); #y=0

ANY

prüft, ob wenigstens ein Element der Matrix gleich Null ist

X={1,1,0};Y=ANY(X); #y=1

CUSUM

berechnet die kumulativen Summen der Matrixelemente

X={1 1 1, 1 1 1};Y=CUSUM(X); #Y={1 2 3, 4 5 6}

NCOL

bestimmt die Anzahl der Spalten einer Matrix

X={1 1 1, 1 1 1};Y=NCOL(X); #y=3

NROW

bestimmt die Anzahl der Zeilen einer Matrix

X={1 1 1, 1 1 1};Y=NROW(X); #y=2

RANKTIE

bestimmt die Midränge der Matrixelemente

X={2 3 4, 3 1 6};Y=RANKTIE(X); #y={2 3.5 5, 3.5 1 6}

SSQ

berechnet die Summe der Quadrate der Matrixelemente

X={1 2 3, 4 5 6};Y=SSQ(X); #y=91

SUM

berechnet die Summe aller Matrixelemente

X={1,2,3}; Y=SUM(X); #y=6

T

bestimmt die transponierte Matrix X={1 2, 3 4}; Y=T(X); #Y={1 3, 2 4}

TRACE

berechnet die Summe der Diagonalelemente einer quadratischen Matrix

X={1 2, 3 4}; Y=TRACE(X); #Y=5

8.5.3 Statements zur Ein- und Ausgabe von Daten Das Statement PRINT wurde schon in vielen Beispielen benutzt und soll nun etwas genauer beschrieben werden. Mit PRINT werden Matrizen, denen Zeilennamen und Spaltennamen zugeordnet werden können, ausgeben. Zeichenketten können ebenfalls ausgegeben werden. Standardmäßig erfolgt die Ausgabe im Outputfenster. Mit RESET LOG; kann die Ausgabe in das Log-Fenster umgelenkt werden. Syntax: PRINT <matrizen><(ausdruck)><“text“><zeilenpointer><[options]>; Sind die Matrizen durch Kommata getrennt, so erfolgt die Ausgabe der Matrizen untereinander. Ohne Kommata werden die Matrizen nebeneinander ausgegeben. Mit Hilfe von Zeilenpointer können Zeilenvorschübe (,) und Seitenvorschübe (/) vollzogen werden. Als Optionen sind zugelassen:

1. ROWNAME=zeilenvektor zeilenvektor enthält Namen, die den Zeilen zugeordnet werden sollen.

2. COLNAME=zeilenvektor zeilenvektor enthält Namen, die den Spalten zugeordnet werden sollen.

3. FORMAT=format ermöglicht die Angabe eines Ausgabeformats; z. B. [FORMAT= 5.3] ==> Zahlen werden mit Gesamtlänge 5 und 3 Nachkommastellen ausgegeben. Beispiel: PROC IML; X={ 8.5 9.5 8.6, 7.9 8.4 7.4,

Ausgabe:

Page 90: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

4.6 7.6 8.3 }; zeile={"Januar" "Februar" "März"}; spalte={"Sorte A" "Sorte B" "Sorte C"}; PRINT X [ROWNAME=zeile COLNAME=spalte FORMAT=8.2]; QUIT;

X Sorte A Sorte B Sorte C Januar 8.50 9.50 8.60 Februar 7.90 8.40 7.40 März 4.60 7.60 8.30

Die interaktive Eingabe von Werten ist an Fensterumgebungen gebunden. D. h., es muß erst ein neues Fenster definiert und angezeigt werden. In diesem Fenster können Ausgaben erscheinen, und es können Werte eingegeben werden. Mit dem Befehle WINDOW wird ein Fenster definiert und mit DISPLAY angezeigt. Syntax: WINDOW <CLOSE=>fenstername<fensteroptionen><GROUP=gruppenname1 felddefinition<...GROUP= gruppennamen felddefinition >; Mit CLOSE wird ein anderes aktives Fenster geschlossen. Als Optionen sind CMNDLINE, COLOR, COLUMNS, ICOLUMN, IROW, MSGLINE und ROWS zugelassen. Ihre Bedeutung ist analog der Beschreibung für das Statement %WINDOW in der Macrosprache. Die Felddefinition entspricht folgender Syntax: <#n > <@m></><+n> operand <format> <feldoptionen>. Wird #n angegeben, erfolgt die Ausgabe in der Zeile n. Durch @m kann der Cursor auf die m Spalte gesetzt werden. Der Schrägstrich erzeugt einen einmaligen Zeilenumbruch. Mit +n wird der Cursor um n Spalten bewegt. Der Operand kann entweder eine Variable oder eine Zeichenkette sein. Format ermöglicht eine Formatangabe für die Ausgabe. Als Feldoptionen sind PROTECT und COLOR zugelassen, deren Bedeutung der in der Macrosprache entspricht. DISPLAY <name<.gruppenname <gruppenotionen>>> <...name<.gruppenname <gruppenotionen>>> Die Gruppenoptionen sind NOINPUT, REPEAT und BELL, die wieder denen der Macrosprache entsprechen. Beispiel: PROC IML; START einlesen; WINDOW menu GROUP=top #1 "Geben Sie die gewünschten Werte ein !" #2 "Nach Eingabe werden die Werte mit SUBMIT (F8) übergeben " #3 "Abruch mit wert=999 und SUBMIT" #4 @2 "Sorte=" sorte #5 @2 "Wert =" wert ; DO UNTIL (wert=999); DISPLAY menu.top; sorte_sp=sorte_sp//sorte; wert_sp=wert_sp//wert; END; FINISH; wert =0; wert_sp=0; sorte =" "; sorte_sp=" "; RUN einlesen; r=NROW(sorte_sp); IF(r>=3) THEN DO; sorte_sp=sorte_sp[2:r-1]; wert_sp=wert_sp[2:r-1]; print sorte_sp wert_sp; END;

Page 91: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

ELSE PRINT "Es wurden keine gültigen Daten eingegeben !"; QUIT;

9. Literatur Dufner, J.; Jensen, U.; Schumacher, E. (1992): Statistik mit SAS. Teubner, Stuttgart. Göttsche, T. (1992): SAS kompakt für die Version 6. G. Fisher, Stuttgart. SAS Institute Inc. (1993): SAS/STAT User´s Guide, Version 6. Cary. Searle (1971) Linear models, Wiley New York Searle (1987) Linear model for unbalanced data, Wiley New York 10. Einige Tips für Anfänger • Benutzen Sie zunächst dieses Handbuch und die beiden (A5-Format)-Referenzbüchlein. Erst wenn dies

nicht ausreicht, benutzen Sie die umfangreiche SAS Dokumentation • Legen Sie ein persönliches Unterverzeichnis für Ihre Daten-, Programm- und Outputfiles an, möglichst auf

einem anderem Laufwerk. Achten Sie dort auf Ordnung. • Drucken Sie entweder die Rohdaten aus, z.B. mit PROC PRINT (für umfangreiche Daten reicht mitunter ein

Teil aus, z.B.: PROC PRINT DATA=name (obs=20); oder sehen Sie sich diese im Dir-Fenster mit „l“ an. • Sichern Sie immer die Daten- und Programmlistfiles, am besten auf Festplatte und auf einer Diskette • Benutzen Sie die RUN-Anweisung zwischen DATA- und PROC-Schritten • Löschen Sie regelmäßig veraltete Fensterinhalte und schließen Sie unnötige Fenster • Lernen Sie im Editormode: cut & paste (Ausschneiden und Einfügen) • Benutzen Sie die Optionen: PAGESIZE=60 LINESIZE=78 • Benutzen Sie die SAS Sample Library zum Ausprobieren von Verfahren im Analogieschluß • Nutzen Sie beim Testen größerer Datensätze zunächst nur einen kleineren Subsatz (z.B. mittels Editor

kopiert) • Benutzen Sie Datensatz- und Variablennamen, die sinnvoll zum Problem und kurz sind • Labeln Sie die Variablen • Benutzen Sie einen standardisierten Programmkopf, der in neue Programme einfach kopiert werden kann • Benutzen Sie Leerzeilen und /* */ zur Übersichtlichkeit des Programms • Benutzen Sie Kommentare • Achten Sie auf die Befehlsbeendung mit ; • Wenn möglich benutzen Sie die CLASS-Anweisung

Page 92: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau

• Bei der Fehlermeldung „word > 200 characters“ stellt eine häufige Fehlerursache ein vergessenes ‘ Zeichen dar.

11. Fehlermeldungen 155: THE VARIABLE NAME IS NOT ON THE DATA SET Variable name is misspelled. A procedure is referenced without the DATA=option and the most recently created data set was used. 180: STATEMENT IS NOT VALID OR IT IS USED OUT OF PROPER ORDER. Semicolon omitted. SAS keyword is misspelled. Specified a DATA step statement outside the DATA step or a PROC step statement outside of a PROC step. Failed to specify the MACRO option and then used a SAS macro facility statement. Included CARDS or PARMSCARDS statement in a macro Entered invalid characters in columns 73-80 of the statement in error. 183: THE PROCEDURE NAME IS NOT KNOWN TO THE SYSTEM. Check the spelling of the name. Make sure that library is installed. We have SAS/Basics, Access, AF, Assist, Connect, Insight, OR, QC, Stat, Graph, ETS, IML, and FSP. 620: OBSOLETE FORM OF STATEMENT OR TEXT82 OPTION INCORRECT. Put text strings for Titles and Footnotes in quotes. Common problem with older SAS programs. Creates a warning message. 107: CHARACTER LITERAL HAS MORE THAN 200 CHARACTERS Omitted a closing quote mark title 'Client's calendar for 1989'; Used a single quote mark within a quoted stringtitle 'Client's calendar for 1989'; should be title "Client's calendar for 1989"; Notizen

Page 93: SAS FOR WINDOWS -   · PDF file→ SAS/IML ° interaktive Matrixsprache in der SAS-Umgebung → SAS/INSIGHT ° hoch-interaktiver Modul zur multivariaten Datenanalyse 2 Grundlagen

SAS for Windows (PC-Version ) Universität Hannover/FB Gartenbau