URZ-Blockkurs SS 2005 SAS - Einführung in die Programmierung C

Werbung
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Literatur
„
Das Datenanalysesystem SAS
„
Einführung in die Programmierung
„
Blockkurs, SS 2005
Dr. Carina Ortseifen, URZ Heidelberg
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 …
Kursaufbau
Weitere Literatur
Montag, 18.07. – Freitag, 22.07.2005
„
Kurs
09:00 - 12:00
Pause
12:00 – 13:00
Kurs
13:00 - 16:00
C. Ortseifen
R 118
„
„
R 118
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
1
URZ-Blockkurs SS 2005
Warum sind Sie heute hier?
Aus welchen Gründen haben Sie sich für den
Besuch dieses Kurses entschieden?
SAS - Einführung in die
Programmierung
Voraussetzungen
„
„
n
o
Was wollen Sie hier alles lernen?
Warum haben Sie sich für die SAS-Software
entschieden? Es gibt doch auch SPSS.
„
Themen
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Die Oberfläche von SAS Version 9
SAS-Tabellen: Datenschritt I
SAS-Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Tabellen verknüpfen: Datenschritt II
Schleifenprogrammierung: Datenschritt III
Weitere SAS/Base Prozeduren: Transpose, Tabulate …
Output Delivery System (Ods)
SAS-Makroprogrammierung
Weitere SAS Prozeduren: Fsedit, Insight …
C. Ortseifen
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
2
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Themen
Die Oberfläche von SAS Version 9
SAS-Tabellen: Datenschritt I
SAS-Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Tabellen verknüpfen: Datenschritt II
Schleifenprogrammierung: Datenschritt III
Weitere SAS/Base Prozeduren: Transpose, Tabulate …
Output Delivery System (Ods)
SAS-Makroprogrammierung
Weitere SAS Prozeduren: Fsedit, Insight …
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SAS Version 9
„
„
Installiert ist: SAS 9.1.3 Englisch und Deutsch
Programmierumgebung (Code-Fenster) mit
Windows-Elementen:
Menüleiste
SASExplorer
„
„
„
C. Ortseifen
Menüleiste
Icons
Editor-, Log- und Outputfenster
Explorer und Resultfenster
Symbolleiste
(Tools)
Protokollfenster
(Log)
Editorfenster
(Code)
Ausgabefenster
(Output)
Arbeitsweise
„
„
„
Kommando
-zeile
„
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
3
URZ-Blockkurs SS 2005
Bibliotheken verwalten (Libname)
„
„
„
„
„
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
„
C. Ortseifen
Anweisung Libname
Fenster: Neue Bibliothek im Explorer
Schalter für
‚permanente‘
Bibliotheken
Name der
Bibliothek
Rechte Maustaste (RM)
- auf einer Bibliothek: Anzeige der
Eigenschaften, Löschen u.a.m.
- auf Libraries: Anlegen einer neuen
Bibliothek
„
„
Neue SAS-Bibliothek anlegen
über den SAS Explorer
Doppelklick auf Explorer zeigt die aktuellen
Bibliotheken an.
Zurück mit
SAS-Bibliotheken
„
SAS - Einführung in die
Programmierung
OrdnerAngabe
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
SAS/EG vergibt eigene Bibliotheksnamen.
(Anzeige zur Ziehen der Tabelle ins Code-F.)
4
URZ-Blockkurs SS 2005
Menü View (Ansicht)
SAS - Einführung in die
Programmierung
Variablenfenster
(auch über RM > View columns)
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
„
„
Anzeige der Variablen samt Eigenschaften
Name, Etikett, Ausgabe- und Einleseformat
können über das RM-Menü geändert werden
View > Details
zeigt Details der Bibliotheken, Dateien .. an.
Tabelleninformationen
„
„
„
„
Tabelle anklicken, RM > Properties
liefert:
Allgemeine Optionen
Details
Indizes
Spalten (= Variablenfenster)
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
).
Eintragungen, die sich ändern lassen, haben
Popup-Menü.
C. Ortseifen
5
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Tabellen kopieren
„
Mittels Drag and Drop können Tabellen von
einer Bibliothek in eine andere kopiert
werden.
Themen
1.
2.
3.
4.
Beispiel: SPSS-Transportfile
O:\KURS\SAS\Daten\iris.por
(apps auf "winfile")
5.
6.
7.
8.
„
Umbenennen geht über RM Rename
9.
10.
Die Oberfläche von SAS Version 9
SAS-Tabellen: Datenschritt I
SAS-Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Tabellen verknüpfen: Datenschritt II
Schleifenprogrammierung: Datenschritt III
Weitere SAS/Base Prozeduren: Transpose, Tabulate …
Output Delivery System (Ods)
SAS-Makroprogrammierung
Weitere SAS Prozeduren: Fsedit, Insight …
Erzeugen von SAS-Tabellen:
Wie und wo liegen die Daten vor?
Zeit für die
SAS Tabelle
„ EG: Einfügen > Daten
„ Datenschritt mit Set
„ Prozedur SQL
Übungen zu Kapitel 1
Anmerkung:
EG: Enterprise Guide
Nicht EG: nur mit ‚normalem‘
SAS ausführbar
ohne: im Code-Fenster vom
EG
C. Ortseifen
Fremdformat von anderer
Anwendung (Excel)
„ EG: Daten einfügen
„ EG: Extras > Daten importieren
ASCII-Datei (Rohwerte)
„ EG: Extras > Daten importieren
„ Datenschritt mit Infile
Auf dem Papier
„ Datenschritt mit Datalines (oder
Cards)
„ Nicht EG: Prozedur Fsedit mit
Option New=
6
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Aufbau von SAS-Programmen
„
Globale Anweisungen LIBNAME lib 'C:\';
„
Datenschritte
„
Prozedurschritte
Data lib.abc;
Set lib.abc;
y=x+10;
Run;
Proc Freq Data=lib.abc;
TABLES a*b;
Run;
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
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
Run;
Was macht dieses Programm, wenn man es ausführt?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
7
URZ-Blockkurs SS 2005
Programm2.sas
Data kurs.neu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
Was macht dieses Programm?
Was ist die Aufgabe des Datenschritts?
Was tun die einzelnen Anweisungen?
SAS - Einführung in die
Programmierung
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;
Aufgabe des Datenschritts
Ende des Datenschritts
… ist die Erzeugung von SAS-Tabellen
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
1.
Entweder aus Rohwerten/ASCII-Dateien:
Input + Datalines + Datenwerte
Input + Cards + Datenwerte
„
Infile + Input
(Datalines und Cards sind synonyme
Anweisungen.) oder
„
„
2.
C. Ortseifen
aus vorhandenen SAS-Tabellen: Set
8
URZ-Blockkurs SS 2005
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;
Run;
C. Ortseifen
SAS - Einführung in die
Programmierung
Programm2 - Die Zuweisung
Data kurs.neu;
Set sasuser.adressen;
gruppe=1;
land=‘D‘;
If alter<30 Then typ=‘junior‘;
Else typ=‘senior‘;
Run;
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‘;
Run;
Der Wert der Variable typ wird in Abhängigkeit von
einer Bedingung bestimmt (hier abhängig vom Alter).
9
URZ-Blockkurs SS 2005
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:
SAS - Einführung in die
Programmierung
Zuweisung von Konstanten
„
x=3;
„
Data kurs.neu;
Set sasuser.adressen;
If alter>=30 Then alter=2;
If alter<30 Then alter=1;
Run;
Programm3
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
y=0.2;
z=.;
Text- (Alphanumerische, Character-)
Variablen
Variable='Zeichenkette'; oder
Variable="Zeichenkette";
status='ohne Befund';
sex="männlich";
wort='';
wort=' ';
Arithmetische Operatoren
„
Data kurs.neu;
Set kurs.neu;
If typ=‘senior‘ Then Delete;
Run;
Numerische Variablen
Variable=Wert;
„
„
„
„
„
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.
10
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
SAS-Funktionen
Funktionen
Funktionsname(Argument<,Argument2<,..>>)
„
„
Arithmetische Funktionen
Sqrt(x)
Exp(x)
„
Quantilfunktionen, z.B. t-Verteilung
x=Tinv(0.05,10);
SAS-Funktionen (2)
„
Wahrscheinlichkeitsfunktionen, z.B. tVerteilung
Probt(x,df,<nc>)
„
Data work.meinedatei;
Set urz.iris;
sum1=sl+sw+pl+pw;
* "zu Fuß" ;
sum2=Sum(sl,sw,pl,pw); * Funktion ;
Run;
y=Sqrt(x); y=Sqrt(2);
y=Exp(x); y=Exp(0);
Tinv(alf,df)
Verwendung der Funktionen ausschließlich im
Datenschritt (oder Prozedur SQL):
Vorteil der Funktionen
„
p=Probt(1.96,10);
Stichprobenfunktionen
„
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
„
Mean(x,y)
Std(x,y,z)
C. Ortseifen
y=Mean(a,b,c);
y=Std(1,2,3);
„
SAS Language Guide oder
Hilfe > SAS Hilfe und Dokumentation > SAS
Produkte > Base SAS > SAS Language
Dictionary > Dictionary of Language Elements
> Functions and CALL Routines
11
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Eine Übung für alle
Data eins;
a=1;
b=2;
c=3;
Run;
Programm1.sas
Data drei;
a=1;
a=2;
a=3;
Run;
Data zwei;
Set eins;
a=4;
Run;
Data vier;
Run;
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
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
Data sasuser.adressen;
Input name $ vorname $ ort $ alter;
Datalines;
Meier Hans Walldorf 25
Schulze Karin Mannheim 27
Müller Horst Nußloch 31
Run;
Zum Programm1.sas
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
„
Format (:$10.)
„
Spalten (1-5)
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 (@@)
„
„
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
C. Ortseifen
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
„
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.
Run; beendet den Datenschritt.
Spalten + PAD
12
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Rohwert-Typen
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.
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
Spalten (1-5)
„
„
„
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
Format (:$10.)
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
INFILE + Liste/Format + MISSOVER
„
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
Anweisung Datalines (Cards)
25
31
19
24
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
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
Run;
13
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Hinweise zu „Spalten“
„
„
„
„
Formatgesteuertes Einlesen
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
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
C. Ortseifen
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
Mehrere Zeilen pro Beobachtung (#1, /)
Mehrere Beobachtungen pro Zeile (@@)
INFILE + Liste/Format + MISSOVER
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
Run;
... Zeichen
Rohwert-Typen
Hans Müller Walldorf 25 Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19 Jens Pfluger Heidelberg 24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
ist angezeigt bei Textwerten länger als 8 Zeichen
oder anderen Nicht-Standardwerten, wie
Datumsangaben und Zahlen mit Kommas:
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger . 24
Liste/frei
Hans Müller
Walldorf 25
Jutta Schreiner
Mannheim 31
Uwe Schulz
Nussloch 19
Hans
Jutta
Uwe
Jens
Müller
Walldorf
Schreiner Mannheim
Schulz
Pfluger
St. Ilgen
25
31
19
24
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz Nussloch 19
Jens Pfluger Heidelberg 24
Spalten (1-5)
Format (:$10.)
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 (@@)
Hans Müller Walldorf 25
Jutta Schreiner Mannheim 31
Uwe Schulz
Jens Pfluger Heidelberg 24
INFILE + Liste/Format + MISSOVER
Hans
Jutta
Uwe
Jens
Müller
Schreiner
Schulz
Pfluger
Walldorf
Mannheim
Nussloch
Heidelberg
Spalten + PAD
14
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Werte in externen Dateien
„
Anstelle der Anweisung Datalines verwendet
man dann INFILE vor Input
Zeit für die
Data kurs.klasse;
Infile 'd:\klasse.dat';
Input name $ alter;
Run;
„
Übungen zu Kapitel 2
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
Themen
1.
2.
Infile 'd:\text.dat‘ Pad;
Infile 'd:\text.dat‘ Missover;
3.
4.
5.
„
Allgemein
Infile ‘Pfad\Datei‘ <Missover> <Pad>;
6.
7.
8.
9.
10.
C. Ortseifen
Die Oberfläche von SAS Version 9.1 (8.2)
SAS-Tabellen: Datenschritt I
SAS-Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Tabellen verknüpfen: Datenschritt II
Schleifenprogrammierung: Datenschritt III
Weitere SAS/Base Prozeduren: Transpose, Tabulate …
Output Delivery System (Ods)
SAS-Makroprogrammierung
Weitere SAS Prozeduren: Fsedit, Insight …
15
URZ-Blockkurs SS 2005
Prozedur Print
„
„
Darstellen der Datenwerte einer SAS-Tabelle im
Ausgabefenster
SAS - Einführung in die
Programmierung
Anweisung Var
„
Der einfachste Aufruf
Proc Print Data=sasuser.adressen;
Run;
Proc Print Data=sasuser.adressen;
Var name alter;
Run;
gibt die SAS-Tabelle sasuser.adressen
vollständig mit allen Variablen und
Beobachtungen aus.
Einschränkungen / Änderungen
„
„
„
„
C. Ortseifen
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
Sollen nicht alle Variablen ausgegeben oder
die Variablen in anderer Reihenfolge
dargestellt werden, verwendet man die
Anweisung Var.
Variablenbereiche
„
Benennung einzelner Variablen:
Var name alter;
mit geänderter Reihenfolge:
Var wohnort alter name;
„
Gleicher Präfix und numerische Endung:
„
Variablenbereiche innerhalb der Datei:
Var tag1-tag5;
Var name--alter;
16
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Variablen ausschließen - Drop=
„
Sollen alle Variablen bis auf wenige
dargestellt werden, verwendet man die
Dateioption Drop=:
Proc Print
Data=sasuser.adressen(Drop=sex);
Run;
Firstobs=, Obs=
„
Proc Print
Data=sasuser.adressen(Firstobs=11 Obs=15);
Run;
„
„
„
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
„
„
C. Ortseifen
Dateioptionen Obs= und Firstobs=
Anweisung Where!
Die Dateioptionen folgen in Klammern dem
Tabellennamen:
„
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;
Run;
Where ist eine lokale Anweisung, die für fast
jede Prozedur verwendet werden kann.
17
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Logische Bedingungen
„
Numerische Variablen
„
Textvariablen
Weitere Operatoren
Between-And
Where x between 1 and 5;
Contains
Where a contains 'Dr.';
Is null|Is missing
Like
Where wert=1; Where wert>1;
Where id=‘DORLE‘;
Where ort in('HD','MA','KA');
„
Vergleichsoperatoren
= eq gleich
> gt größer
>= ge größer oder gleich
in in der Liste enthalten
^= ne ungleich
< lt kleiner
<= le kleiner
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
Genaue Hinweise und Beispiele im
SAS-Anwenderhandbuch im Netz
unter dem Stichwort Selektion
Andere Reihenfolge der Fälle
„
„
1.
2.
Um die Beobachtungen (=Zeilen) der SASTabelle 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.
Proc Sort ... ; Run;
Proc Print ...; Run;
18
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Sortierung in neuer Tabelle
Prozedur Sort
„
Sortieren erfolgt nach bestimmten Kriterien,
die mit der BY-Anweisung formuliert werden.
Proc Sort Data=sasuser.adressen;
By alter;
Run;
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;
Run;
„
C. Ortseifen
Die Reihenfolge der Variablen entscheidet
über die Anordnung der Beobachtungen.
„
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;
Run;
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;
Run;
19
URZ-Blockkurs SS 2005
Häufiger Fehler mit By
SAS - Einführung in die
Programmierung
Beispiele
ERROR: Data Set ...... is not sorted in
ascending sequence.
The current by-group has Min. = ... and
the next by-group has Min. = ...
Title1 ’Experiment von Fisher’;
Title2 ’Vergleich von 3 Irisarten';
Footnote ’Umfang: je 50 Blüten’;
Abhilfe:
Einen Prozedur SORT-Schritt vorneweg ausführen.
Proc Print Data=kurs.iris;
Run;
Proc Sort Data=sasuser.adressen;
By sport;
Proc Print Data=sasuser.adressen;
...
Beschriftungen
„
„
„
„
C. Ortseifen
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.
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 ;
20
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Globale Einstellungen - Optionen
„
Beim Start der SAS-Sitzung belegt das SASSystem viele Schalter vor durch
„
„
„
Konfigurationsfile Sasv9.cfg
Anweisungen, die zu Beginn der SAS-Sitzung
ausgeführt werden (Datei Autoexec.sas)
„
„
„
Ausgabe des Datums
Date
Nodate
„
Anzeige der Seitennummern
Number /
Nonumber
„
Verändern der Seitennummer
Pageno=n
Options-Fenster: Tools > Options > System ..
Anweisung Options
Options Nodate Nonumber;
Options Nodate Pageno=5;
Titel- und Fußzeilen
Optionen (z.B. Seitennumerierung)
Einige globale Einstellungen
C. Ortseifen
auf zwei Arten
Nachträgliche Änderung von Einstellungen
durch den Benutzer ist möglich durch
„
„
Änderung der Einstellungen
Options ist eine globale Anweisung.
SAS System Options
„
„
Kommando Option
Menü Tools > Options > System …
21
URZ-Blockkurs SS 2005
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;
Run;
C. Ortseifen
SAS - Einführung in die
Programmierung
Spaltensummen mit Sum
„
„
Werte von numerischen Variablen können
mit der Anweisung Sum spaltenweise
summiert werden.
Proc Print Data=sasuser.adressen;
Sum alter;
Run;
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 ...;
22
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Literatur
„
Prozeduren Print und Sort sind Bestandteil
von SAS Base:
Themen
Die Oberfläche von SAS Version 9.1 (8.2)
SAS-Tabellen: Datenschritt I
SAS-Basisprozeduren Print, Sort
Statistik am Beispiel von Means und Ttest
Tabellen verknüpfen: Datenschritt II
Schleifenprogrammierung: Datenschritt III
Weitere SAS/Base Prozeduren: Transpose, Tabulate …
Output Delivery System (Ods)
SAS-Makroprogrammierung
Weitere SAS Prozeduren: Fsedit, Insight …
1.
2.
3.
SAS Procedures Guide
4.
5.
„
Globale Anweisungen und Dateioptionen
6.
7.
SAS Language Guide
8.
9.
10.
Prozedur Means
„
Zeit für die
Übungen zu Kapitel 3
„
„
C. Ortseifen
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 ...
23
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Einfachster Aufruf
Anweisung Class
Proc Means Data=urz.iris;
Run;
„
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
Berechnung der Kennwerte getrennt für die
durch die Class-Variablen definierten Gruppen
Proc Means Data=urz.iris;
Var sl;
Class blume;
Run;
Tabelle braucht nicht sortiert (nach blume)
vorliegen.
und stellt diese im Ausgabefenster in Form
einer Tabelle dar.
„
Anweisung Var
Anweisung Output
„
„
beschränkt die Liste der Variablen, für die
Kennwerte berechnet werden.
Proc Means Data=urz.iris;
Var sl pl sw pw;
Run;
Alternative Lösung:
„
C. Ortseifen
Proc Means Data=kurs.iris(Drop=blume);
Run;
„
„
„
Übertragung der Kennwerte in eine neue
SAS-Tabelle
Proc Means Data=urz.iris;
Var sl;
Output out=iris_sl;
Run;
Die Kennwerte werden im Ausgabefenster
angezeigt, gleichzeitig wird die SAS-Tabelle
iris_sl angelegt.
24
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Mit Output erzeugte Tabelle
Prozedur Ttest
iris_sl hat
„
Vergleich von zwei Gruppen hinsichtlich deren
„
- 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
„
„
„
C. Ortseifen
Die Option Noprint unterdrückt die Darstellung der Kennwerte im Ausgabefenster.
„
Erwartungswerte
t-Test
für gleiche und ungleiche Varianzen
für unabhängige u. abhängige Gruppen
Varianzen
F-Test
Zur Statistik
Proc Means Data=urz.iris Noprint;
Var sl;
Output out=iris_sl;
Run;
„
„
Wie lautet die Null- und wie die
Alternativhypothese für den t-Test?
Wie wird der Test durchgeführt?
Und lautet die Testentscheidung?
Das Ergebnis ist die neue SAS-Tabelle iris_sl.
„
Und jetzt das ganze für den F-Test!
„
25
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Beispiel: Unabhängiger t-Test
„
Teststatistik T
wo
T =
s 2p =
| x1 − x 2 |
~ t n1 + n 2 − 2
sp 1 + 1
n1
n2
( n 1 − 1) s 12 + ( n 2 − 1 ) s 22
n1 + n 2 − 2
Statistics
Variable
CALCIUM
CALCIUM
CALCIUM
PILLE
Testentscheidung:
Wenn |T|>tn1+n2-2,1-α/2 ist, wird H0 verworfen.
Einfachster Aufruf
N
Diff (1-2)
1
2
Lower CL
Mean
Mean
Upper CL
Mean
Lower CL
Std Dev
Std Dev
Upper CL
Std Dev
Std Err
98.818
98.077
-0.681
99.878
99.098
0.78
100.94
100.12
2.2407
4.4124
4.3045
4.5264
5.0588
4.9282
4.9932
5.929
5.7649
5.5683
0.5332
0.5138
0.7403
90
92
t-Test mit Freiheitsgrad, Teststatistik,
Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
xi Mittelwerte, si Standardabweichungen, ni Fälle
„
Kennwerte
The TTEST Procedure
T-Tests
Variable
Method
Variances
CALCIUM
CALCIUM
Pooled
Satterthwaite
Equal
Unequal
F-Test
DF
t Value
Pr > |t|
180
180
1.05
1.05
0.2935
0.2936
Equality of Variances
Variable
Method
CALCIUM
Folded F
Num DF
Den DF
F Value
Pr > F
89
91
1.05
0.8039
Interpretation t-Test
Was sagt Pr > |t| 0.2935 aus?
Proc Ttest Data=urz.blutbild;
Class pille;
Var calcium;
Run;
Wenn Pr>|t| kleiner gleich dem vorgegebenen
Signifikanzniveau α ist, kann die Nullhypothese
H0 abgelehnt werden.
Wenn Pr>|t| ≤ α, dann H0 ablehnen.
C. Ortseifen
26
URZ-Blockkurs SS 2005
SAS - Einführung in die
Programmierung
Abhängiger t-Test
Zusammenfassung der Syntax
Proc Means Data=SAS-Tabelle <Noprint>;
<Var Variable|Variablenliste;>
<Output out=SAS-Tabelle;>
<Class Variable|Variablenliste;>
Proc Ttest
Data=us_sozialerhebung_91;
Paired mausbild*vausbild;
Run;
Proc Ttest Data=SAS-Tabelle;
Class Variable|Variablenliste;
<Var Variable|Variablenliste;>
<Paired Variable1*Variable2;>
<Where Logische Bedingung;>
<By Variable|Variablenliste;>
The TTEST Procedure
Kennwerte
Statistics
Difference
mausbild - vausbild
N
974
Lower CL
Mean
Mean
-0.189
0.0072
Upper CL Lower CL
Mean
Std Dev Std Dev
0.2031
2.9825
3.115
Upper CL Std
Std Dev Err
3.2598
0.0998
t-Test mit Freiheitsgrad, Teststatistik,
Irrtumswahrscheinlichkeit
(=Ws. unter Nullhypothese)
T-Tests
Difference
mausbild - vausbild
C. Ortseifen
DF
t Value
Pr > |t|
973
0.07
0.9426
27
Herunterladen