SAS Skript
SAS Skript
D IE S TATISTIKSOFTWARE
SAS
E INE BEGLEITENDE E INFÜHRUNG ZUM M ODUL G RUNDLAGEN DER S TATISTIK
A PRIL 2014
Inhaltsverzeichnis
1 Einführung 1
1.1 SAS-Oberfläche und ihre Funktionen . . . . . . . . . . . . . . . . . 1
1.2 SAS-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Prozeduren in SAS 7
3.1 Proc Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Proc Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Proc Freq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4 Proc Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.5 Proc Univariate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.6 Proc Corr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6 Aussicht 18
1 Einführung
Die Theorie der Statistik auf einen Datensatz anzuwenden, kann rechnerisch sehr
aufwendig sein. Somit ist die Nutzung von Computern als Hilfsmitteln oft un-
verzichtbar. Mittlerweile gibt es viele Programme, welche eine breite Palette an
Funktionen und Möglichkeiten haben, Datensätze auszuwerten. Zu den am meis-
ten verbreiteten zählen Programme wie SAS, SPSS und R. Welches Programm man
nutzt, hängt natürlich von vielen Faktoren wie zum Beispiel den Kosten und der
Benutzerfreundlichkeit ab. Die Wahl des Moduls ’Grundlagen der Statistik’ fällt
auf SAS, da die meisten (und vor allem größten) Unternehmen SAS benutzen -
unter anderem P&G, Boeing, Amazon, Intel und Google. Somit sind Vorkenntnisse
in SAS gern gesehen und nicht selten auch ausschlaggebend für die Vergabe von
Arbeitsplätzen. Man bedenke dabei, dass die Schulung von Personal in SAS eine
kostspielige Angelegenheit (bzgl. Zeit und Geld) werden kann.
Dieses Skript soll einen anschaulichen und grundlegenden Zugang zu SAS bieten.
Der prüfungsrelevante Umfang ist mit dem Inhalt des Verzeichnisses ’Statistik I’ auf
der Ilias-Plattform identisch. Themen die darüber hinaus gehen, sind als Optional
gekennzeichnet.
1
Um sich in der Masse der Symbole und Reiter zurechtzufinden, wird im Folgenden
das Nötigste erklärt:
1. Menüleiste
In der Menüleiste sind Befehle, die vergleichbare Schritte ausführen, zu ei-
nem Menü zusammengefasst. Beispielsweise kann man unter Datei Program-
me speichern, öffnen oder neue erstellen. Hinter jedem Menü befindet sich
eine Pull-Down-Liste, die die zugeordneten Befehle enthält. Die meisten hier
benötigten Befehle sind auch noch einmal in der Symbolleiste dargestellt.
2. Symbolleiste
Da die meisten Symbole (wie für das Öffnen und Speichern von Program-
men) weit verbreitet sind, wird nur auf die 4 Symbole rechts eingegangen.
Durch Klicken auf das erste Symbol wird ein SAS-Programm, das im Editor-
Fenster eingegeben wurde, gestartet. Das zweite Symbol löscht den Inhalt
des aktivierten Editor- oder Textausgabe-Fenster. Das Ausrufezeichen in dem
Kreis unterbricht ein laufendes SAS-Programm (dies ist sehr wichtig, falls
SAS nicht mehr reagiert und nicht regelmäßig gespeichert wurde). Das letz-
te Symbol ganz rechts (das Buch mit dem Fragezeichen) ruft die SAS-Hilfe
auf, welche später erklärt wird.
5. Pfadangabe
Hier erscheint die Pfadangabe, die angibt, wo das aktuelle SAS-Programm
gespeichert wurde.
6. Zeilen-/Spaltenangabe
An dieser Stelle wird angezeigt, an welcher Stelle im Editor-Fenster sich der
Curser befindet. Da sich Fehlermeldungen meist auf solche Positionen bezie-
hen, kann diese Angabe sehr hilfreich sein.
2
1.2 SAS-Hilfe
Die SAS-System-Hilfe ermöglicht eine Schnellsuche nach Begriffen, Anweisungen,
Prozeduren und Ähnlichem. Durch einen Klick auf das entsprechende Symbol in
der Symbolleiste erscheint ein neues Fenster. Anschließend kann oben links in das
Feld Quick Search ein Suchbegriff eingegeben werden (siehe Punkt 1 in Abbildung
2). Als Beispiel werden Informationen zu der Prozedur proc freq gesucht. Nach
Eingabe erhält man das folgende Fenster.
Unter dem Reiter Results werden alle Ergebnisse der Suche angezeigt. Im Grun-
de ist es egal, ob wir in unserem Fall auf das Ergebnis 5, 6, 10, 11, 12 oder 13
klicken (siehe Punkt 2 in Abbildung 2), denn jeder Beitrag in der Hilfe zu einer
Prozedur besteht aus 6 Teilen: Overview, Getting Started, Syntax, Details, Examples,
References (wenn man im rechten Teil des Fensters etwas nach oben scrollt, sieht
man die Reiter). Somit verweisen die verschiedenen Suchergebnisse nur auf ver-
schiedene Reiter.
Um einen schnellen Überblick bezüglich der Prozedur zu bekommen, kann man
den Reiter Syntax wählen. Dort wird zum einen kurz erklärt, was der gesuchte Be-
fehl macht. In diesem Fall wird eine Häufigkeitstabelle für jede Variable der Daten
erstellt (siehe Schritt 3 in Abbildung 2). Zum anderen wird der minimale Code für
das Editor-Fenster (siehe Punkt 4 in Abbildung 2) und eine kleine Übersicht der
grundlegenden Statements angezeigt. Dabei sind Statements gewissermaßen Ein-
stellungsoptionen - zum Beispiel, welche Variablen man im Datensatz benutzen
möchte.
3
2 Daten erzeugen, lesen & bearbeiten
Es gibt verschiedene Möglichkeiten, Daten in SAS zu erzeugen. Wir werden zu-
erst auf den Data-Befehl (in Weiteren Data-Step genannt) eingehen. Mit diesem
können Daten ’quasi per Hand’ in Tabellen eingetragen werden. Zudem wird das
Infile-Statement des Data-Steps eingeführt, mit dem Text-Dateien eingelesen wer-
den können. Anschließend wird die Prozedur proc import vorgestellt, mit der es
möglich ist, Excel-Dateien einzulesen. Des Weiteren wird sich mit der Speicherung
von SAS-Dateien durch Ausnutzung von Verzeichnissen/Bibliotheken beschäftigt.
Am Ende dieses Kapitels werden außerdem Möglichkeiten zur Bearbeitung von
bereits vorhandenen Daten erläutert.
1 data student;
2 input MatNr Name$ Vorname$ Geschlecht$ Alter Note 3.1;
3 cards;
4 3128 Schmitz Henrik m 20 17
5 4391 Schmidt Annika w 23 17
6 1298 Meier Anna w 20 23
7 7317 Mueller Peter m 23 23
8 3248 Reinhard Henry m 27 23
9 1239 Baier Helene w 25 33
10 1203 Schultz Arne m 24 50
11 ;
12 run;
In diesem Beispiel wird eine Tabelle mit dem Namen student erstellt und im Ar-
beitsverzeichnis work gespeichert (dies geschieht standardmäßig, wenn kein Ver-
zeichnis angegeben wird - aber dazu später mehr).
Dabei wird mit dem input-Statement angegeben, welche Variablen in den Daten,
bzw. der Tabelle vorkommen sollen. Das Dollarzeichen hinter einem Variablen-
namen gibt an, dass die Variable alphanumerisch ist (also aus Buchstaben und
anderen Zeichen besteht). Ohne dieses Zeichen ist die Variable immer numerisch
(Zahlen). Die anschließende Zahl (wie 3 bei der Variable Note) gibt die Länge der
Eingabe an. In diesem Fall werden nur 3 Zeichen für einen eine Note gespeichert,
die an der zweiten Stelle durch einen Punkt getrennt wird.
Mit dem cards-Statement wird die eigene Eingabe gesteuert. Dabei ist zu beach-
ten, dass jede Daten-/Tabellenzeile in einer separaten Code-Zeile stehen muss.
Jede Eingabe wird dabei mit einem Leerzeichen getrennt. Fehlende Eingaben wer-
den mit einem Punkt gekennzeichnet. Diese Einstellungen lassen sich verändern,
aber der Leser sei hierfür auf die SAS-Hilfe verwiesen.
Der run-Befehl in der Code-Zeile 8 gibt SAS die Anweisung, den davorstehenden
Code auszuführen. Die Setzung der Semikola ist besonders wichtig, weil diese für
4
SAS das Signal für das Ende einer Befehlszeile bedeutet. Die im Beispiel erzeugten
Daten, können in der nachfolgenden Tabelle betrachtet werden.
5
löscht wird. Um Daten in einem anderen Verzeichnis permanent zu speichern, wird
der libname-Befehl genutzt. Dies kann zum Beispiel folgendermaßen geschehen.
1 libname a ’R:\Profile\Desktop\Ilias\’;
Hier wurde das Verzeichnis a erstellt, welche Dateien in den Ordner Ilias auf dem
Desktop speichert. Der angegebene Ordner muss bereits existieren! Der Inhalt des
Ordners bleibt natürlich über die aktuelle Sitzung hinaus bestehen, aber die er-
zeugte Verbindung (also das/die jeweilige Verzeichnis/Bibliothek) muss jede Sit-
zung neu gesetzt werden. Beispiele für die Nutzung des Verzeichnisses sind im
nächsten Abschnitt gegeben.
<Optional>
Wenn einzelne Werte/Ausprägungen von Daten geändert werden sollen, kann dies
im Edit-Modus geschehen. Um diesen zu nutzen, öffnet man links im Explorer
einen Datensatz und klickt entsprechend in die Symbolleiste (siehe Abbildung 3).
6
1. Edit-Modus
Durch dieses Symbol oder den gleichnamigen Unterpunkt in dem Menü Be-
arbeiten gelangt man in den Edit-Modus. In diesem Modus kann durch Ankli-
cken der jeweiligen Zelle der Wert individuell verändert werden.
2. Browse-Modus
Durch dieses Symbol oder den gleichnamigen Unterpunkt in dem Menü Bear-
beiten gelangt man in den Browse-Modus, also wieder zurück zum ursprüng-
lichen Modus. Außerdem ist somit der neue Wert gespeichert.
3 Prozeduren in SAS
Nachdem die Daten zur Verfügung stehen, werden die passenden Prozeduren be-
nötigt, um diese zu analysieren. Im Folgenden wird auf die Prozeduren proc print,
proc contents, proc frec, proc means, proc univariate und proc corr eingegangen.
Im Fall, dass der Datensatz für bestimmte Variablen ausgegeben werden soll, kön-
nen nach einem var-Statement die Variablennamen geschrieben werden. Zusätz-
lich kann man den Datensatz durch ein by-Statement nach den verschiedenen
Ausprägungen einer Variable getrennt darstellen. Der folgende Code zeigt dies am
Beispiel.
7
1 proc print data=student;
2 var MatNr Note;
3 by Note;
4 run;
Hier werden also nur die Variablen Nummer und Wert ausgegeben. Zudem wird
der Datensatz nach den Ausprägungen der Variable Nummer ausgegeben.
<Optional>
Sofern weitere Optionen gewünscht sind, werden diese vor dem Semikolon in
Code-Zeile 1 eingefügt und jeweils mit einem Leerzeichen getrennt. Die folgende
Tabelle gibt einen kleinen Überblick gängiger Optionen. Weitere sind in der SAS-
Hilfe vorhanden.
Option Erklärung
label Verwendet die Bezeichnungen für Variablen als Spaltenüber-
schriften anstatt Variablennamen
N Gibt die Länge des Datensatzes aus
noobs Verhindert die Ausgabe einer Spalte, in der die Zeilennummer
der betreffenden Merkmalswerte im Datensatz (engl.: observa-
tion number) angegeben ist
round Rundet numerische Werte auf zwei Nachkommastellen
width= Legt die Spaltenbreite für die Ausgabe fest, mögliche Werte
sind u. a. FULL, MINIMUM und UNIFORM
8
Abbildung 5: Alphabetische Liste der Variablen
9
Option chisq, welche unter anderem den χ2 -Kontingenz- und den Φ-Koeffizienten
ausgibt (siehe Übungsserie 3). In der 3. Codezeile wird mit dem where-Statement
die Bedingung angegeben, dass nur Daten betrachtet werden, bei denen die Note
kleiner bzw. besser als 3.0 ist.
<Optional>
Da die Optionen für das table-Statement sehr umfangreich sind, folgt eine Tabelle
mit den häufiger Verwendeten.
Option Erklärung
out=<xyz> Schreibt die Ausgabe in die Tabelle mit Name <xyz>
nofreq Unterdrückt die Ausgabe von gemeinsamen absoluten Häufig-
keiten
nopercent Unterdrückt die Ausgabe von gemeinsamen relativen Häufig-
keiten
noprint Unterdrückt die Ausgabe (sinnvoll mit out=)
expected Gibt zusätzlich die erwarteten Häufigkeiten bei Unabhängig-
keit aus
plot= Gibt zusätzlich eine grafische Darstellung aus
Optional können die Daten auch als Häufigkeitsverteilung dargestellt werden. Bei-
spielsweise kann dies wie folgt geschehen.
1 ods graphics on;
2 proc freq data=student;
3 table Note*Geschlecht /plots=freqplot(twoway=stacked);
4 run;
5 ods graphics off;
Damit Grafiken ausgegeben werden können, muss ods graphics auf on gestellt wer-
den. Der eigentliche Plot erfolgt dann über eine Option des table-Statements. Für
die verschiedenen Darstellungsmöglichkeiten sei auf die Hilfe verwiesen. Die Aus-
gabe des Beispielcodes ist in Abbildung 7 dargestellt.
10
3.4 Proc Means
Die Prozedur Means bietet eine schnelle Möglichkeit für eine univariate Analy-
se. Die Optionen für die Prozedur werden zwischen das data-Statement und das
Semikolon geschrieben. Zusätzlich kann mit dem var-Statement die zu analysie-
rende Variable festgelegt werden. In dem folgenden Beispiel werden einige Lage-
und Streuungsparameter der Variable Note für den Datensatz student berechnet.
1 proc means data=student n mean median mode var std min max maxdec=2;
2 var Note;
3 run;
Dieser Befehl erzeugt folgende Ausgabe.
11
<Optional>
Option Erklärung
all Ausgabe aller Ergebnisse, die die Univariate-Prozedur durch all
ihre Optionen erzeugen kann
alpha= Bestimmt das Konfidenzniveau (sonst ist alpha=0.05). Dieser
Wert muss zwischen 0 und 1 liegen
cibasic Konfidenzintervalle für Mittelwert, Standardabweichung, Vari-
anz unter der Annahme der Normalverteilung
freq Gibt eine Häufigkeitstabelle aus
mu0= Legt den Wert für µ0 der Nullhypothese H0 : µ = µ0 fest (sonst
ist µ0 = 0)
outtable= Speichert die Ergebnisse in einer neuen Tabelle unter der an-
gegebenen SAS-Datei
12
In der Ausgabe (siehe Abbildung 9) erscheint neben dem Korrelationskoeffizien-
ten nach Spearman, auch eine Tabelle mit Statistiken, die schon aus proc means
bekannt sind. Durch die Optionen nosimple wird Letztere nicht ausgegeben. Zu-
sätzlich kann mit der Option cov die Kovarianz zwischen den beiden Variablen be-
stimmt werden. Außerdem wird mit der Option plots=scatter ein Streudiagramm
erzeugt.
Die grundlegende Verwendung von proc reg wird anhand einer linearen Einfach-
regression erklärt. Dabei stellt umsatz die abhängige und flaeche die unabhängige
Variable dar. Der SAS-Code für dieses Beispiel hat folgende Gestalt:
1 ods output "Parameter estimates"=Reg_ergeb;
2 proc reg data=daten;
3 model umsatz=flaeche / CLB COVB;
4 plot umsatz*flaeche;
5 run;
6 ods output close;
Die Codezeilen 1 und 6 sind für die grafische Ausgabe des Streudiagramms nötig,
welches durch die 4. Codezeile mittels plot ausgeführt wird. Die Kopfzeile der Pro-
zedur (Codezeile 2) ist analog zu den anderen Prozeduren aufgebaut. Das Model
für die Regressionsanalyse wird in der 3. Codezeile festgelegt. Dabei werden links
von dem Gleichheitszeichen die abhängige und rechts die unabhängigen Variablen
geschrieben. Anschließend können Optionen angegeben werden. Hier wurden die
Konfidenzintervalle für die Parameterschätzer (CLB) sowie die Kovarianzmatrix
der Schätzer (COVB) ausgegeben.
13
Die Ausgabe für den obigen Code ist in Abbildung 11 dargestellt:
1. Das erste Feld der Ausgabe befasst sich mit der Varianzanalyse. Hier wird
dargestellt, wie gut die Regression prinzipiell gepasst hat. In der Spalte DF
(engl. Degrees of Freedom) ist die Anzahl der Freiheitsgerade dargestellt.
Die dritte Spalte enthält die Quadratsummen SQE, SQR und SQT. Die Va-
rianzschätzungen (Quotient aus Quadratsummen und Freiheitsgraden) sind
in der Spalte Mittlere Quadratsummen abgebildet. Die Spalte F-Statistik gibt
den Wert für die Teststatistik zur Hypothesenprüfung an, ob das Bestimmt-
heitsmaß gleich 0 ist. Die Signifikanz des Wertes der Teststatistik wird in Pr
> F dargestellt. Ist α größer als dieser Wert, wird die Nullhypothese abge-
lehnt.
2. Das zweite Feld enthält die Schätzung der Standardabweichung der Residu-
en (Root MSE), den Mittelwert der abhängigen Variable (Dependent Mean),
14
den Variationskoeffizienten (Coeff Var), das Bestimmtheitsmaß (R-Square)
und ein angepasstes Bestimmtheitsmaß (Adj R-Sq), welches zusätzliche Pa-
rameter mit Straftermen versieht (für Mehrfachregression sinnvoll).
15
5 Varianzanalyse mit SAS <Optional>
Die Varianzanalyse kann in SAS mit dem Befehl proc anova durchgeführt werden.
Als Beispiel können 6 Studenten in 4 Semestern betrachtet werden die folgende
Literaturausgaben haben:
Studenten
Semester 1 2 3 4 5 6
1 0 10 0 10 20 20
2 40 30 10 20 10 70
3 20 10 20 30 20 20
4 30 30 40 30 40 10
Für die Ausführung einer Varianzanalyse zum Test, ob die Literaturausgaben sich
pro Semester unterscheiden, genügt bereits der folgende Code:
1 proc anova data=analyse;
2 class semester;
3 model ausgaben=semester;
4 run;
Dabei wird wie gewöhnlich in Codezeile 1 angegeben, welcher Datensatz genutzt
werden soll (data=). Zudem wird in Zeile 2 mit dem class-Statement die Variable
angegeben, welche die Stichprobenindizierung beinhaltet. Hier werden 4 Stich-
proben (1 je Semester) verglichen. Die Werte der Variable Semester sind soge-
nannte Dummywerte. Wichtig ist, dass sie innerhalb der Stichprobe einheitlich
und je Stichprobe unterschiedlich ist. Beispielsweise würden die ersten 6 Beob-
achtungen (0, 10, 0, 10, 20, 20) den Wert 1 für die Variable Semester haben.
Die eingelesenen Daten müssen für eine Varianzanalyse also die folgende Form
haben:
16
Anschließend wird mit model wieder das Modell angegeben. In diesem Fall sollen
die Ausgaben auf den Einfluss des Faktors Semester überprüft werden. Als Output
erhält man folgendes Ergebnis:
1. Diese Tabelle stellt ebenso wie die Darstellung auf S. 47 in der Formelsamm-
lung von Bleymüller/Gehlert die Anzahl der Freiheitsgerade, die Summen
der Abweichungsquadrate (SQA, SQR und SQT), die Mittleren Quadratsum-
men (MQA und MQR) und die Prüfgröße/Teststatistik (fe) dar. Die Signifi-
kanz des Wertes der Teststatistik wird in Pr > F dargestellt. Ist α größer als
dieser Wert, wird die Nullhypothese abgelehnt.
3. Das dritte Feld zeigt die erste Zeile der Tabelle aus dem ersten Feld und gibt
somit keine neuen Erkenntnisse.
17
6 Aussicht
Natürlich umfasst dieses Skript nur einen kleinen Teil dessen, was mit SAS möglich
ist. Das Ziel dieser Schrift und der zugehörigen Tutorien ist, dass das gelernte
Wissen aus der Vorlesung und Übung in SAS angewandt werden kann. Für ein
etwaiges Selbststudium mit SAS empfehlen wir das Buch:
– N OTIZEN –
18