Das Datenanalysesystem SAS Einführung in die Blockkurs, SS 2005 Dr. Carina Ortseifen, URZ Heidelberg Kursaufbau Montag, 18.07. Freitag, 22.07.2005 Kurs 09:00-12:00 R 118 Pause 12:00 13:00 Kurs 13:00-16:00 R 118 C. Ortseifen 1
Literatur Kursunterlagen (über URZ-Homepage Software > Statistik > Kurse > SAS anklicken) SAS Online-Hilfe (Hilfe-Menü) SAS Online-Doku im WWW http://support.sas.com/documentation/ onlinedoc/index.html SAS Language, Reference, SAS Procedures Guide, SAS/STAT, SAS/FSP, SAS/INSIGHT, SAS Makros Weitere Literatur Das SAS-Anwenderhandbuch im Netz www.urz.uni-heidelberg.de/statistik/sas-ah Dort im Kapitel 5: Carina Ortseifen: Der SAS-Kurs Weitere Lehrbücher über die URZ-Homepage www.urz.uni-heidelberg.de: Software > Statistik > SAS > Weitere Hinweise/Literatur > Lehrbücher zu SAS C. Ortseifen 2
Warum sind Sie heute hier? Aus welchen Gründen haben Sie sich für den Besuch dieses Kurses entschieden? Was wollen Sie hier alles lernen? Warum haben Sie sich für die SAS-Software entschieden? Es gibt doch auch SPSS. Themen 1. Die Oberfläche von SAS Version 9 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung 10. Weitere SAS Prozeduren: Fsedit, Insight C. Ortseifen 3
Voraussetzungen Gültige Benutzerkennung fürs URZ und Besuch des Kurses Das Datenanalysesystem SAS Einführung mit dem SAS Enterprise Guide oder gleichwertige Kenntnisse Teilnahmebescheinigung bei regelmäßiger Anwesenheit (80 %) Begriffe SAS-Tabelle Variable, Beobachtung, Wert Format, Informat, Label (Etikett) Bibliothek Datenschritt Prozedurschritt Anweisung, global, lokal C. Ortseifen 4
Themen 1. Die Oberfläche von SAS Version 9 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung 10. Weitere SAS Prozeduren: Fsedit, Insight SAS Version 9 Installiert ist: SAS 9.1.3 Englisch und Deutsch Programmierumgebung (Code-Fenster) mit Windows-Elementen: Menüleiste Icons Editor-, Log- und Outputfenster Explorer und Resultfenster C. Ortseifen 5
Menüleiste SAS- Explorer Kommando -zeile Editorfenster (Code) Symbolleiste (Tools) Protokollfenster (Log) Ausgabefenster (Output) Arbeitsweise SAS-Programme in den Editor laden (oder neu schreiben), ausführen und Ergebnisse betrachten Programm ausführen über Menü (Run > Submit), Icon, Funktionstaste F3, RM Submit All oder Kommando Submit Hilfe zu einzelnen Prozeduren Kommando help Prozedurname Beispiel: help Print C. Ortseifen 6
Bibliotheken verwalten (Libname) über den SAS Explorer Doppelklick auf Explorer zeigt die aktuellen Bibliotheken an. Zurück mit Rechte Maustaste (RM) - auf einer Bibliothek: Anzeige der Eigenschaften, Löschen u.a.m. - auf Libraries: Anlegen einer neuen Bibliothek SAS-Bibliotheken sind (Unter-) Ordner, die SAS-Tabellen enthalten. Um nicht immer den gesamten Pfad schreiben zu müssen, vergibt SAS Kürzel für die Ordner: Bibliotheksname (oder libref). Zur Definition Anweisung Libname Fenster: Neue Bibliothek im Explorer SAS/EG vergibt eigene Bibliotheksnamen. (Anzeige zur Ziehen der Tabelle ins Code-F.) C. Ortseifen 7
Neue SAS-Bibliothek anlegen Name der Bibliothek Schalter für permanente Bibliotheken Ordner- Angabe SAS Explorer Ähnlich wie Windows-Explorer viele Funktionalitäten auf rechter Maustaste (RM) Anzeige und Bearbeiten von Tabellen, Bibliotheken und Katalogen Erzeugen neuer Bibliotheken, Filerefs, Tabellen und Katalogen Kopieren und Export von Dateien C. Ortseifen 8
Menü View (Ansicht) Zum Ändern der Explorer Darstellung (Explorer Fenster ist das aktive Fenster.): View > Show tree öffnet Baumstruktur, die Drill-Down erlaubt, um einzelne Dateien zu öffnen View > Details zeigt Details der Bibliotheken, Dateien.. an. Tabelleninformationen Tabelle anklicken, RM > Properties liefert: Allgemeine Optionen Details Indizes Spalten (= Variablenfenster) Eintragungen, die sich ändern lassen, haben Popup-Menü. C. Ortseifen 9
Variablenfenster (auch über RM > View columns) Anzeige der Variablen samt Eigenschaften Name, Etikett, Ausgabe- und Einleseformat können über das RM-Menü geändert werden Tabellenansicht und zurück Doppelklick auf die Tabelle öffnet sie mit dem Viewtable Tabelle umbenennen: Tabelle markieren, RM > Rename Mit View > Up one level kehrt man eine Ebene im Explorer zurück (oder dem Icon ). C. Ortseifen 10
Tabellen kopieren Mittels Drag and Drop können Tabellen von einer Bibliothek in eine andere kopiert werden. Beispiel: SPSS-Transportfile O:\KURS\SAS\Daten\iris.por (apps auf "winfile") Umbenennen geht über RM Rename Zeit für die Übungen zu Kapitel 1 C. Ortseifen 11
Themen 1. Die Oberfläche von SAS Version 9 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung 10. Weitere SAS Prozeduren: Fsedit, Insight Erzeugen von SAS-Tabellen: Wie und wo liegen die Daten vor? SAS Tabelle EG: Einfügen > Daten Datenschritt mit Set Prozedur SQL Fremdformat von anderer Anwendung (Excel) EG: Daten einfügen EG: Extras > Daten importieren ASCII-Datei (Rohwerte) EG: Extras > Daten importieren Datenschritt mit Infile Anmerkung: Auf dem Papier EG: Enterprise Guide Datenschritt mit Datalines (oder Nicht EG: nur mit normalem Cards) SAS ausführbar Nicht EG: Prozedur Fsedit mit ohne: im Code-Fenster vom Option New= EG C. Ortseifen 12
Aufbau von SAS-Programmen Globale Anweisungen Datenschritte Prozedurschritte LIBNAME lib 'C:\'; Data lib.abc; Set lib.abc; y=x+10; Proc Freq Data=lib.abc; TABLES a*b; SAS-Anweisungen Daten- und Prozedurschritte bestehen aus Anweisungen. Anweisungen werden durch ein Schlüsselwort eingeleitet (z.b. Data, Proc, Run, Title) und enden mit einem Semikolon (;). Proc Sort... ; Optionen wählen Aktionen aus oder ändern Voreinstellungen ab. Proc Print Data=sasuser.adressen; C. Ortseifen 13
Meldungen im Protokollfenster Note Hinweis zur Abfolge des Programms (Dauer, welche Datei(en) wurde(n) angelegt/gelöscht) Warning SAS ist auf einen behebbaren Fehler gestoßen. Der Daten- oder Prozedurschritt wurde vollständig ausgeführt. Error Der Fehler konnte nicht behoben werden. Der Programmschritt wurde abgebrochen. Programm1.sas Data sasuser.adressen; Input name $ vorname $ ort $ alter; Datalines; Meier Hans Walldorf 25 Schulze Karin Mannheim 27 Müller Horst Nußloch 31 Was macht dieses Programm, wenn man es ausführt? Was ist die Aufgabe des Datenschritts? Was tun die einzelnen Anweisungen? C. Ortseifen 14
Programm2.sas Data kurs.neu; Set sasuser.adressen; gruppe=1; land= D ; If alter<30 Then typ= junior ; Else typ= senior ; Was macht dieses Programm? Was ist die Aufgabe des Datenschritts? Was tun die einzelnen Anweisungen? Aufgabe des Datenschritts ist die Erzeugung von SAS-Tabellen 1. Entweder aus Rohwerten/ASCII-Dateien: Input + Datalines + Datenwerte Input + Cards + Datenwerte Infile + Input (Datalines und Cards sind synonyme Anweisungen.) oder 2. aus vorhandenen SAS-Tabellen: Set C. Ortseifen 15
Die Anweisung Data ist die erste Anweisung im Datenschritt. Dem Schlüsselwort Data folgt der Name der zukünftigen SAS-Tabelle. Data sasuser.adressen; Data kurs.neu; Data work.firma; Ende des Datenschritts Der Datenschritt ist beendet, wenn ein neuer Daten- oder Prozedurschritt beginnt d.h. Data- oder Proc-Anweisung, eine Run-Anweisung auftritt oder nach den Datenzeilen nach einer Datalinesoder Cards-Anweisung C. Ortseifen 16
Anweisungen und Zuweisungen Jede Anweisung beginnt mit einem Schlüsselwort (Data, Set, Run) und endet mit einem Semikolon (;). Bei einer Zuweisung steht links vom Gleichheitszeichen der Name der neuen Variablen, rechts die Rechenvorschrift. Zuweisungen im SAS EG mit Extras > Abfragen > > Auswählen, Neu Anweisung Set bezeichnet die SAS-Tabelle, die in die neue kopiert wird. Diese Tabelle muss existieren. Die Tabelle in der Data-Anweisung kann mit der in der Set-Anweisung übereinstimmen: Data kurs.neu; Set kurs.neu; alter_klasse=alter/10; C. Ortseifen 17
Programm2 - Die Zuweisung Data kurs.neu; Set sasuser.adressen; gruppe=1; land= D ; If alter<30 Then typ= junior ; Else typ= senior ; Es werden zwei neue Variablen, gruppe und land, gebildet durch Zuweisung eines konstanten Wertes - für alle Beobachtungen in der SAS-Tabelle. Programm2 - Bedingte Zuweisung Data kurs.neu; Set sasuser.adressen; gruppe=1; land= D ; If alter<30 Then typ= junior ; Else typ= senior ; Der Wert der Variable typ wird in Abhängigkeit von einer Bedingung bestimmt (hier abhängig vom Alter). C. Ortseifen 18
Hinweis Die Anweisungen im Datenschritt werden von oben nach unten für jede einzelne Beobachtung der SAS-Tabelle ebenfalls sequentiell von oben nach unten abgearbeitet. Vorsicht! Was passiert hier: Data kurs.neu; Set sasuser.adressen; If alter>=30 Then alter=2; If alter<30 Then alter=1; Programm3 Data kurs.neu; Set kurs.neu; If typ= senior Then Delete; Welche SAS-Tabelle wird erzeugt? Wird sie aus Rohwerten oder einer SAS-Tabelle erzeugt? Wie heißt diese? Was macht die Anweisung Delete? C. Ortseifen 19
Zuweisung von Konstanten Numerische Variablen Variable=Wert; x=3; y=0.2; z=.; Text- (Alphanumerische, Character-) Variablen Variable='Zeichenkette'; oder Variable="Zeichenkette"; status='ohne Befund'; sex="männlich"; wort=''; wort=' '; Arithmetische Operatoren Addition + a=b+c; a=b-10; a=10+20; Subtraktion - a=b-c; a=b-10; a=20-10; Multiplikation * a=b*c; a=b*10; a=10*20; Division / a=b/c; a=b/2; a=5/2; Potenzierung ** a=b**c; a=b**2; a=3**2; Es gilt dabei: Punkt- vor Strichrechnung. C. Ortseifen 20
SAS-Funktionen Funktionsname(Argument<,Argument2<,..>>) Arithmetische Funktionen Sqrt(x) Exp(x) y=sqrt(x); y=sqrt(2); y=exp(x); y=exp(0); Quantilfunktionen, z.b. t-verteilung Tinv(alf,df) x=tinv(0.05,10); SAS-Funktionen (2) Wahrscheinlichkeitsfunktionen, z.b. t- Verteilung Probt(x,df,<nc>) p=probt(1.96,10); Stichprobenfunktionen Mean(x,y) Std(x,y,z) y=mean(a,b,c); y=std(1,2,3); C. Ortseifen 21
Funktionen Verwendung der Funktionen ausschließlich im Datenschritt (oder Prozedur SQL): Data work.meinedatei; Set urz.iris; sum1=sl+sw+pl+pw; * "zu Fuß" ; sum2=sum(sl,sw,pl,pw); * Funktion ; Vorteil der Funktionen meistens schneller im Vergleich zur 'Zu Fuß'- Methode, zum anderen können sie adäquat mit fehlenden Werten umgehen (vgl. Aufgabe 10). Vollständige Liste der verfügbaren Funktionen SAS Language Guide oder Hilfe > SAS Hilfe und Dokumentation > SAS Produkte > Base SAS > SAS Language Dictionary > Dictionary of Language Elements > Functions and CALL Routines C. Ortseifen 22
Data eins; a=1; b=2; c=3; Eine Übung für alle Data zwei; Set eins; a=4; Data drei; a=1; a=2; a=3; Data vier; Fragen 1. Welche SAS-Tabellen werden erzeugt? 2. Wie viele Variablen haben diese? 3. Wieviele Beobachtungen? 4. Welche Werte? Rohwert-Typen Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger. 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz 19 Jens Pfluger St. Ilgen 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Liste/frei Spalten (1-5) Format (:$10.) Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 Liste/Format + MISSOVER Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg Spalten + PAD C. Ortseifen 23
Programm1.sas Data sasuser.adressen; Input name $ vorname $ ort $ alter; Datalines; Meier Hans Walldorf 25 Schulze Karin Mannheim 27 Müller Horst Nußloch 31 Zum Programm1.sas Datenwerte stehen in einer Liste durch Leerzeichen getrennt. => Listengesteuert Die Anweisung Input definiert die vier Variablen: Name, Vorname usw.. Alphanumerische Variablen werden durch $ (nach dem Variablennamen) gekennzeichnet. Nach der Anweisung Datalines (inkl. ;) folgen die Datenwerte. beendet den Datenschritt. C. Ortseifen 24
Hinweise zur Liste Zwischen zwei Datenwerten muss (mindestens) ein Leerzeichen stehen. Werte von Textvariablen (z.b. die Namen) dürfen nicht länger als 8 Zeichen sein und kein Leerzeichen enthalten. Fehlende Werte müssen durch einen Punkt gekennzeichnet werden. Anweisung Datalines (Cards) ist eine Anweisung des Datenschritts teilt dem SAS-System mit, dass im Anschluss die Datenwerte folgen ist die letzte Anweisung des Datenschritts Die Datenwerte werden durch ein Semikolon beendet, das in einer neuen Zeile stehen muss. C. Ortseifen 25
Rohwert-Typen Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger. 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz 19 Jens Pfluger St. Ilgen 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Liste/frei Spalten (1-5) Format (:$10.) Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 Liste/Format + MISSOVER Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg Spalten + PAD Spaltengesteuertes Einlesen ist angezeigt, wenn Textwerte Leerzeichen enthalten: Data sasuser.adressen; Input name $ 1-10 vorname $ 11-16 wohnort $ 17-26 alter 28-29; Datalines; Meier Hans St. Leon 25 van SchulzKarin Heidelberg 27 Karl Helmut 51 C. Ortseifen 26
Hinweise zu Spalten Die Position der Variablen wird als Bereich von-bis angegeben. Keine Leerzeichen zwischen Werten notwendig Die Datenwerte müssen exakt in Spalten positioniert sein. Die Spalten müssen so breit angelegt sein, daß der längste Wert Platz hat. Rohwert-Typen Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger. 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz 19 Jens Pfluger St. Ilgen 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Liste/frei Spalten (1-5) Format (:$10.) Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 Liste/Format + MISSOVER Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg Spalten + PAD C. Ortseifen 27
Formatgesteuertes Einlesen ist angezeigt bei Textwerten länger als 8 Zeichen oder anderen Nicht-Standardwerten, wie Datumsangaben und Zahlen mit Kommas: Format Data kurs.firma; Input name :$50. gebdatum :Ddmmyy10. zahl1 :Comma10.2 zahl2 :Commax10.2; Datalines; Meier 01.01.1960 10,000.00 12,45 Leuthäuser-Schnarrenberger. 1.00 13,50 Karl 29.02.2000 1,000,000 100,50 Zahl, Text bis zu... Zeichen Rohwert-Typen Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger. 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz 19 Jens Pfluger St. Ilgen 24 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Liste/frei Spalten (1-5) Format (:$10.) Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24 Mehrere Zeilen pro Beobachtung (#1, /) Mehrere Beobachtungen pro Zeile (@@) INFILE + Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31 Uwe Schulz Jens Pfluger Heidelberg 24 Liste/Format + MISSOVER Hans Müller Walldorf Jutta Schreiner Mannheim Uwe Schulz Nussloch Jens Pfluger Heidelberg Spalten + PAD C. Ortseifen 28
Werte in externen Dateien Anstelle der Anweisung Datalines verwendet man dann INFILE vor Input Data kurs.klasse; Infile 'd:\klasse.dat'; Input name $ alter; Direkt von einem Meßgerät, mit einem externem Editor erfaßt oder z.b. WinWord (Umwandlung in Ascii (als 'nur Text') nicht vergessen!) PAD und MISSOVER sind Optionen der Anweisung INFILE Infile 'd:\text.dat Pad; Infile 'd:\text.dat Missover; Allgemein Infile Pfad\Datei <Missover> <Pad>; C. Ortseifen 29
Zeit für die Übungen zu Kapitel 2 Themen 1. Die Oberfläche von SAS Version 9.1 (8.2) 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung 10. Weitere SAS Prozeduren: Fsedit, Insight C. Ortseifen 30
Prozedur Print Darstellen der Datenwerte einer SAS-Tabelle im Ausgabefenster Der einfachste Aufruf Proc Print Data=sasuser.adressen; gibt die SAS-Tabelle sasuser.adressen vollständig mit allen Variablen und Beobachtungen aus. Einschränkungen / Änderungen Nur bestimmte Variablen Anweisung Var Nur bestimmte Beobachtungen / Teilmenge Dateioptionen Obs= und Firstobs= Anweisung Where Beobachtungen in einer anderen Reihenfolge Prozedur Sort Listen getrennt nach bestimmten Gruppen Anweisung By C. Ortseifen 31
Anweisung Var Sollen nicht alle Variablen ausgegeben oder die Variablen in anderer Reihenfolge dargestellt werden, verwendet man die Anweisung Var. Proc Print Data=sasuser.adressen; Var name alter; Variablenbereiche Benennung einzelner Variablen: Var name alter; mit geänderter Reihenfolge: Var wohnort alter name; Gleicher Präfix und numerische Endung: Var tag1-tag5; Variablenbereiche innerhalb der Datei: Var name--alter; C. Ortseifen 32
Variablen ausschließen - Drop= Sollen alle Variablen bis auf wenige dargestellt werden, verwendet man die Dateioption Drop=: Proc Print Data=sasuser.adressen(Drop=sex); Die Dateioptionen folgen dem Tabellennamen in Klammern: (Drop=Variable Variablenliste) Teilmengen Normalerweise werden Prozedurschritte für alle Beobachtungen ausgeführt. Bei großen Tabellen testet man den Prozedurschritt zunächst mit wenigen Fällen. Manchmal teilt man die Beobachtungen auf und führt Prozedurschritte nur für ausgewählte Beobachtungen aus. Einsatz der Dateioptionen Obs= und Firstobs= Anweisung Where! C. Ortseifen 33
Firstobs=, Obs= Die Dateioptionen folgen in Klammern dem Tabellennamen: Proc Print Data=sasuser.adressen(Firstobs=11 Obs=15); Firstobs= Nummer der ersten Beobachtung, die verarbeitet wird Obs= Nummer der letzten Beobachtung, die verarbeitet wird Firstobs <= Obs Where-Anweisung Beschränkung auf Untergruppen durch Formulierung einer logischen Bedingung, die von den Beobachtungen erfüllt werden muss. Proc Print Data=sasuser.adressen; Where alter>15; Where ist eine lokale Anweisung, die für fast jede Prozedur verwendet werden kann. C. Ortseifen 34
Logische Bedingungen Numerische Variablen Where wert=1; Where wert>1; Textvariablen Where id= DORLE ; Where ort in('hd','ma','ka'); Vergleichsoperatoren = eq gleich ^= ne ungleich > gt größer < lt kleiner >= ge größer oder gleich <= le kleiner in in der Liste enthalten oder gleich Kombinierte Bedingungen Kombination Where sex=1 and alter>20; Where alter<20 or wohnort="heidelberg"; Logische Operatoren & and sowohl als auch or mindestens eins von beiden ^ not nicht (oder auch ~) Klammern können die Lesbarkeit erhöhen Where (sport>2 or sport=.) and alter>20; C. Ortseifen 35
Weitere Operatoren Between-And Where x between 1 and 5; Contains Where a contains 'Dr.'; Is null Is missing Like Genaue Hinweise und Beispiele im SAS-Anwenderhandbuch im Netz unter dem Stichwort Selektion Andere Reihenfolge der Fälle Um die Beobachtungen (=Zeilen) der SAS- Tabelle in einer anderen Reihenfolge darzustellen, muß die Tabelle zunächst mit der Prozedur Sort sortiert werden. Anschließend kann die sortierte Tabelle mit der Prozedur Print im Ausgabefenster angezeigt werden. 1. Proc Sort... ; 2. Proc Print...; C. Ortseifen 36
Prozedur Sort Sortieren erfolgt nach bestimmten Kriterien, die mit der BY-Anweisung formuliert werden. Proc Sort Data=sasuser.adressen; By alter; sortiert die Beobachtungen nach Alter (in aufsteigender Reihenfolge) Prozedur erzeugt keine Ausgabe. Mehrfache Sortierkriterien Beispiel: Telefonbuch Innerhalb einer By-Gruppe wird weiter nach dem nächsten Kriterium sortiert: Proc Sort Data=sasuser.adressen; By wohnort alter name; Die Reihenfolge der Variablen entscheidet über die Anordnung der Beobachtungen. C. Ortseifen 37
Sortierung in neuer Tabelle Soll eine SAS-Tabelle zwar sortiert, das Resultat aber in einer neuen Tabelle gespeichert werden, um die Ausgangstabelle nicht zu verändern, setzt man die Option Out= ein. Proc Sort Data=sasuser.adressen Out=kurs.sp; By alter; Getrennte Liste Anweisung By Mit einem Prozeduraufruf erhält man getrennte Listen für Untergruppen. Die Anweisung By benennt die Variable(n), die die Untergruppen definiert. Voraussetzung: SAS-Tabelle ist nach der oder den BY-Variablen sortiert. Proc Print Data=sasuser.adressen; Var name alter; By sport; C. Ortseifen 38
Häufiger Fehler mit By ERROR: Data Set... is not sorted in ascending sequence. The current by-group has Min. =... and the next by-group has Min. =... Abhilfe: Einen Prozedur SORT-Schritt vorneweg ausführen. Proc Sort Data=sasuser.adressen; By sport; Proc Print Data=sasuser.adressen;... Beschriftungen Jede Seite im Ausgabefenster kann Titel- und Fußzeilen enthalten. Standardtitel: The SAS System Eigene Titel- und Fußzeilen machen die Ergebnisdarstellungen für Außenstehende verständlicher. TITLE und FOOTNOTE sind globale Anweisungen, d.h. sie werden außerhalb von Daten- und Prozedurschritten definiert. C. Ortseifen 39
Beispiele Title1 Experiment von Fisher ; Title2 Vergleich von 3 Irisarten'; Footnote Umfang: je 50 Blüten ; Proc Print Data=kurs.iris; Hinweise Es können bis zu 10 Titel- und Fußzeilen definiert werden. Als globale Anweisungen gelten sie so lange, bis sie geändert oder zurückgesetzt werden. Zurücksetzung: Title ; Footnote ; C. Ortseifen 40
Globale Einstellungen - Optionen Beim Start der SAS-Sitzung belegt das SAS- System viele Schalter vor durch Konfigurationsfile Sasv9.cfg Anweisungen, die zu Beginn der SAS-Sitzung ausgeführt werden (Datei Autoexec.sas) Nachträgliche Änderung von Einstellungen durch den Benutzer ist möglich durch Titel- und Fußzeilen Optionen (z.b. Seitennumerierung) Einige globale Einstellungen Ausgabe des Datums Date Nodate Anzeige der Seitennummern Number / Nonumber Verändern der Seitennummer Pageno=n C. Ortseifen 41
Änderung der Einstellungen auf zwei Arten Options-Fenster: Tools > Options > System.. Anweisung Options Options Nodate Nonumber; Options Nodate Pageno=5; Options ist eine globale Anweisung. SAS System Options Kommando Option Menü Tools > Options > System C. Ortseifen 42
Spezialitäten Zum Schluß noch zwei Spezialitäten der Prozedur Print: Darstellung der Labels Berechnung von Spaltensummen Die Prozedur Print und Labels Die Prozedur Print zeigt standardmäßig keine Labels an. Zur Erinnerung: Labels sieht/definiert man mit der Anweisung Label oder im Variablenfenster. Erst durch Hinzunahme der Option Label werden sie angezeigt: Proc Print Data=sasuser.adressen Label; C. Ortseifen 43
Spaltensummen mit Sum Werte von numerischen Variablen können mit der Anweisung Sum spaltenweise summiert werden. Proc Print Data=sasuser.adressen; Sum alter; Zusammenfassung der Syntax Proc Sort Data=SAS-Tabelle <out=sas-tabelle>; By Variable Variablenliste; Proc Print Data=SAS-Tabelle <label>; <Var Variable Variablenliste;> <sum Variable Variablenliste;> <Where Logische Bedingung;> title...; footnote...; (Drop=...) options...; C. Ortseifen 44
Literatur Prozeduren Print und Sort sind Bestandteil von SAS Base: SAS Procedures Guide Globale Anweisungen und Dateioptionen SAS Language Guide Zeit für die Übungen zu Kapitel 3 C. Ortseifen 45
Themen 1. Die Oberfläche von SAS Version 9.1 (8.2) 2. SAS-Tabellen: Datenschritt I 3. SAS-Basisprozeduren Print, Sort 4. Statistik am Beispiel von Means und Ttest 5. Tabellen verknüpfen: Datenschritt II 6. Schleifenprogrammierung: Datenschritt III 7. Weitere SAS/Base Prozeduren: Transpose, Tabulate 8. Output Delivery System (Ods) 9. SAS-Makroprogrammierung 10. Weitere SAS Prozeduren: Fsedit, Insight Prozedur Means Means (neben Freq und Univariate) ist eine grundlegende Prozedur für die deskriptive Statistik. Sie berechnet wichtige Kennwerte (=statistische Maßzahlen), die in direktem Zusammenhang mit dem Mittelwert stehen, für quantitative Merkmale. Z.B. Mittelwert, Median, Maximum, Minimum, Standardabweichung, Konfidenzintervalle... C. Ortseifen 46
Einfachster Aufruf Proc Means Data=urz.iris; berechnet für alle numerischen Variablen (auch für blume!) die Kennwerte N Anzahl der nichtfehlenden Werte Mean Mittelwert Std Dev Standardabweichung Min/Max kleinster/größter Wert und stellt diese im Ausgabefenster in Form einer Tabelle dar. Anweisung Var beschränkt die Liste der Variablen, für die Kennwerte berechnet werden. Proc Means Data=urz.iris; Var sl pl sw pw; Alternative Lösung: Proc Means Data=kurs.iris(Drop=blume); C. Ortseifen 47
Anweisung Class Berechnung der Kennwerte getrennt für die durch die Class-Variablen definierten Gruppen Proc Means Data=urz.iris; Var sl; Class blume; Tabelle braucht nicht sortiert (nach blume) vorliegen. Anweisung Output Übertragung der Kennwerte in eine neue SAS-Tabelle Proc Means Data=urz.iris; Var sl; Output out=iris_sl; Die Kennwerte werden im Ausgabefenster angezeigt, gleichzeitig wird die SAS-Tabelle iris_sl angelegt. C. Ortseifen 48
Mit Output erzeugte Tabelle iris_sl hat - 5 Beobachtungen für die fünf Kennwerte (N, Mean, Std, Min, Max) und - 4 Variablen _Type_, _Freq_, _Stat_ und die eigentliche Variable sl, die die Kennwerte enthält. Option Noprint Die Option Noprint unterdrückt die Darstellung der Kennwerte im Ausgabefenster. Proc Means Data=urz.iris Noprint; Var sl; Output out=iris_sl; Das Ergebnis ist die neue SAS-Tabelle iris_sl. C. Ortseifen 49
Prozedur Ttest Vergleich von zwei Gruppen hinsichtlich deren Erwartungswerte t-test für gleiche und ungleiche Varianzen für unabhängige u. abhängige Gruppen Varianzen F-Test Zur Statistik Wie lautet die Null- und wie die Alternativhypothese für den t-test? Wie wird der Test durchgeführt? Und lautet die Testentscheidung? Und jetzt das ganze für den F-Test! C. Ortseifen 50
Beispiel: Unabhängiger t-test Teststatistik T wo s T x 1 2 = ~ tn + n 1 n x i Mittelwerte, s i Standardabweichungen, n i Fälle Testentscheidung: Wenn T >t n 1+n2-2,1-α/2 ist, wird H 0 verworfen. s p 1 x + 1 n ( n 1) s + ( n 1) s n + n 2 2 1 1 2 2 2 2 p = 1 2 2 1 2 2 Einfachster Aufruf Proc Ttest Data=urz.blutbild; Class pille; Var calcium; C. Ortseifen 51
The TTEST Procedure Kennwerte Statistics Lower CL Upper CL Lower CL Upper CL Variable PILLE N Mean Mean Mean Std Dev Std Dev Std Dev Std Err CALCIUM 1 90 98.818 99.878 100.94 4.4124 5.0588 5.929 0.5332 CALCIUM 2 92 98.077 99.098 100.12 4.3045 4.9282 5.7649 0.5138 CALCIUM Diff (1-2) -0.681 0.78 2.2407 4.5264 4.9932 5.5683 0.7403 t-test mit Freiheitsgrad, Teststatistik, Irrtumswahrscheinlichkeit (=Ws. unter Nullhypothese) T-Tests Variable Method Variances DF t Value Pr > t CALCIUM Pooled Equal 180 1.05 0.2935 CALCIUM Satterthwaite Unequal 180 1.05 0.2936 F-Test Equality of Variances Variable Method Num DF Den DF F Value Pr > F CALCIUM Folded F 89 91 1.05 0.8039 Interpretation t-test Was sagt Pr > t 0.2935 aus? Wenn Pr> t kleiner gleich dem vorgegebenen Signifikanzniveau α ist, kann die Nullhypothese H 0 abgelehnt werden. Wenn Pr> t α, dann H 0 ablehnen. C. Ortseifen 52
Abhängiger t-test Proc Ttest Data=us_sozialerhebung_91; Paired mausbild*vausbild; The TTEST Procedure Statistics Kennwerte Lower CL Upper CL Lower CL Upper CL Std Difference N Mean Mean Mean Std Dev Std Dev Std Dev Err mausbild - vausbild 974-0.189 0.0072 0.2031 2.9825 3.115 3.2598 0.0998 t-test mit Freiheitsgrad, Teststatistik, Irrtumswahrscheinlichkeit (=Ws. unter Nullhypothese) T-Tests Difference DF t Value Pr > t mausbild - vausbild 973 0.07 0.9426 C. Ortseifen 53
Zusammenfassung der Syntax Proc Means Data=SAS-Tabelle <Noprint>; <Var Variable Variablenliste;> <Output out=sas-tabelle;> <Class Variable Variablenliste;> Proc Ttest Data=SAS-Tabelle; Class Variable Variablenliste; <Var Variable Variablenliste;> <Paired Variable1*Variable2;> <Where Logische Bedingung;> <By Variable Variablenliste;> C. Ortseifen 54