/* 6. Vorlesung: Beschreibende Statistik, Grafiken und Tests mit SAS */ /*###################################################################*/ GOPTIONS RESET=global; /* I. Allgemeines */ /*Für den PROC-Step in SAS gibt es eine Reihe von Prozeduren. Diese können jeweils durch Optionen und Statements angepasst werden. Die allgemeine Form eines PROC-Steps ist somit: PROC Option1 Option2 ...; Statement1; Statement2; ... RUN; /* /* Erzeugen wir uns eine Datei vorlesung, an der wir verschiedene Prozeduren kennenlernen */ DATA vorlesung(DROP=I); INFILE "~/SASPraktikum/Vorlesung/Termin 06/lehre.dat" FIRSTOBS=2 DLM="09"x; INPUT Name$ Benotung Punkte1 Punkte2; Gesamtpunkte = Punkte1+Punkte2; M = MEAN(Punkte1, Punkte2); Bestanden = 1; ARRAY P (*) Punkte1-Punkte2 Gesamtpunkte; DO I = 1 TO DIM(P); IF P(I) < 10 THEN Bestanden = 0; END; SELECT (Benotung); WHEN(1) Kommentar = 'Sehr gut'; WHEN(2) Kommentar = 'Gut'; WHEN(3) Kommentar = 'Befriedigend'; WHEN(4) Kommentar = 'Ausreichend'; END; RUN; PROC PRINT; RUN; /* II. Sortieren */ /* Zum Sortieren von Daten steht die Prozedur SORT zur Verfügung Durch BY wird angegeben, nach welcher Spalte sortiert wird. */ PROC SORT DATA=vorlesung; BY Gesamtpunkte; RUN; PROC PRINT DATA=vorlesung; RUN; PROC SORT DATA=vorlesung; BY Benotung; RUN; PROC PRINT DATA=vorlesung; RUN; /* Per default wird der ursprüngliche Datensatz mit dem sortierten überschrieben. Soll die sortierte Datei statt dessen in einer neuen Datei gespeichert werden, so gibt man nach "OUT=" deren Namen an. */ PROC SORT DATA=vorlesung OUT=vorlesung2; BY DESCENDING Bestanden DESCENDING Name; RUN; PROC PRINT DATA=vorlesung; RUN; PROC PRINT DATA=vorlesung2; RUN; /* III. Ausgabe (PRINT) */ /* Die PRINT-Prozedur haben wir schon letztes Mal kennengelernt. Jetzt besprechen wir die zahlreichen Möglichkeiten, sie anzupassen.*/ /* Auswahl von Variablen, Gruppierung */ PROC PRINT DATA=vorlesung(WHERE=(Bestanden = 1)); BY Benotung; /* gibt für jede Benotung (1-4) eine separate Tabelle aus */ VAR Name Gesamtpunkte M; RUN; /* Titel und Fussnote */ TITLE1 "Ergebnisse der Stochastik III, WS 2018/19" ; TITLE2 "Dozent: N.N., Übungsleiter: N.N."; FOOTNOTE "Mehrere Jahre im voraus verhergesagt." ; /* Ab jetzt werden bei allen Ausgaben diese Titel und die Fußnote hinzugefügt. /* Löschen der Titel und der Fußnoten */ TITLE2; /* Nur die zweite */ TITLE; /* Alle */ FOOTNOTE; /* Abspeichern der Ausgabe */ /*ODS PDF file="~/SASPraktikum/Vorlesung/Termin 06/vorlesung2.pdf"; PROC PRINT DATA=vorlesung(WHERE=(Bestanden = 1)); BY Benotung; VAR Name Gesamtpunkte M; RUN; ODS PDF CLOSE; */ /* IV. Analyse eindimensionaler Daten (MEANS und UNIVARIATE) */ PROC MEANS DATA=vorlesung; /* Variable, N, Mittelwert, Std.abweichung, Minimum, Maximum */ RUN; /* Festlegen von berechneten Kennzahlen, Anzahl der angezeigten Nachkommastellen, Auswahl der betrachteten Variablen, Gruupierung*/ PROC MEANS DATA=vorlesung MAXDEC=3 N MEAN STD VAR MIN SKEWNESS /* zusätzlich noch Varianz, Schiefe */ KURTOSIS MODE MEDIAN P5 P95 Q1 QRANGE CLM ALPHA=0.07; /* Kurtosis, Modalwert, Median, 5tes Perzil, 95. Perzil, Unteres Quartil, Quartilsabstand, Untere und obere 93% KG für Mittelwert */ BY Benotung; /* für jede Benotung (1-4) eine Tabelle */ CLASS Bestanden; /* wird innerhalb der Tabelle nochmals unterteilt */ VAR Punkte1 Punkte2 Gesamtpunkte; /* Means wird auf Punkte1, Punkte2 und Gesamtpunkte angewendet */ RUN; /* Abspeichern eines Ergebnis zur weiteren Bearbeitung; */ PROC MEANS DATA=vorlesung; CLASS Benotung Bestanden; VAR Punkte1 Punkte2 Gesamtpunkte; OUTPUT OUT=vorlesung_stat; RUN; PROC PRINT data=vorlesung_stat; RUN; PROC UNIVARIATE DATA=Vorlesung; /* Momente, Grundlegende Statistikmaße, Tests auf Lageparameter, Quantile, Extreme Beobachtungen */ VAR Gesamtpunkte; RUN; PROC UNIVARIATE DATA=Vorlesung MU0=11.5 NEXTROBS=8 NORMALTEST; VAR Gesamtpunkte; RUN; /* V. Analyse zweidimensionaler Daten (CORR) */ PROC CORR DATA=vorlesung; VAR Punkte1; WITH Punkte2 ; RUN; /* Für mehrere Variablen simultan; Sowohl empirischer Korrelationkoeffizient (Pearson) als auch Rangkorrelationskoeffizient (Spearman); Einfache Statistiken weglassen; dafür Kovarianzmatrix hinzufügen. */ PROC CORR DATA=vorlesung NOSIMPLE PEARSON SPEARMAN COV; VAR Punkte1 Punkte2; WITH Punkte2 Bestanden; RUN; /* VI. Graphische Darstellung eindimensionaler Daten */ PROC GCHART DATA= vorlesung; VBAR Benotung; RUN; HBAR Punkte1; RUN; QUIT; /* Erst mit QUIT wird die Prozedur GCHART beendet. */ /* Verschönern des Histogramms */ PATTERN VALUE=X2 COLOR=GREEN; PROC GCHART DATA=vorlesung; VBAR Benotung/ DISCRETE; RUN; QUIT; /* Alternative zu DISCRETE: MIDPOINTS=1 TO 4 Es werden Mittelpunkte der Klassen, keine Grenzen, angegeben. Nur äquidistante Klassen möglich */ /* Tortendiagramm */ PROC GCHART DATA=vorlesung; PIE Kommentar; RUN; QUIT; /* Eindimensionale Daten lassen sich auch mit UNIVARIATE graphisch darstellen */ PROC UNIVARIATE DATA=vorlesung NOPRINT; /* NOPRINT: Die üblichen Ausgaben werden weggelassen */ HISTOGRAM Punkte1 /NORMAL MIDPOINTS=2 TO 24 BY 3; /* Die Option Normal fügt die Dichte eine Normalverteilung mit geschätzten Parametern hinzu. Außerdem werden diese Schätzwerte ausgegeben und es wird untersucht, wie gut die Normalverteilungsanname passt. */ CDFPLOT Punkte1 / NORMAL NCOLS=2; /* Empirische Verteilungsfunktion und Verteilungsfunktion der Normalverteilung mit geschätzen Parametern; NCOLS=Zahl der Spalten */ CLASS Bestanden; QQPLOT Punkte1 / NORMAL; /*QQ-Plot empirische Quantile gegen Quantile der Normalverteilung */ RUN; /* VI. Graphische Darstellung zweidimensionaler Daten */ GOPTIONS RESET=GLOBAL; TITLE HEIGHT=3 "MY PLOT"; TITLE2 HEIGHT=2 COLOR=RED "Made by me"; SYMBOL1 VALUE=DOT INTERPOL=RL; /* INTERPOL verbindet normalerweise die verschiedenen Datenpunkte. wird es aber auf RL gesetzt, so wird die Regressionsgerade eingezeichnet. */ PROC GPLOT DATA=vorlesung; PLOT Punkte1*Punkte2=1; /*y-Koordinate * x-Koordinate = Symbol */ RUN; QUIT; AXIS1 LABEL=("Name des Studenten"); AXIS2 LABEL=(ANGLE=90 "Bestanden: ja oder nein") ORDER=(-0.2 to 1.2 by 0.1); PROC GPLOT DATA=vorlesung; BUBBLE Bestanden*Name=Gesamtpunkte / BLABEL BCOLOR=RED BSIZE=10 BFILL=GRADIENT HAXIS=AXIS1 VAXIS=AXIS2; RUN; QUIT; /* BUBBLE: Scatterplot mit unterschiedlich großen Symbolen y-Koordinate * x-Koordinate = Größe BLABEL fügt Ballgröße als Index hinzu BSIZE vorgrößert alle Bälle BFILL füllt diese */ SYMBOL1 COLOR=GREEN VALUE=DOT INTERPOL=NONE; SYMBOL2 COLOR=BROWN VALUE==; SYMBOL3 COLOR=ORANGE VALUE=HASH; SYMBOL4 COLOR=GREY INTERPOL=SPLINE WIDTH=2; AXIS3 LABEL=(JUSTIFY=LEFT HEIGHT=2 "Niedrig" JUSTIFY=RIGHT "Hoch") ORDER=(0 TO 40 BY 5) MINOR=NONE; AXIS4 LABEL=(JUSTIFY=LEFT HEIGHT=2 ANGLE=80 "Punkte1") MINOR=NONE; PROC GPLOT DATA=vorlesung; PLOT Punkte1*Gesamtpunkte=Benotung / HAXIS=AXIS3 VAXIS=AXIS4; RUN; QUIT; /* VII. Tests in SAS */ PROC TTEST DATA=vorlesung(WHERE=(Benotung<3)) ALPHA=0.1 H0=37 DIST=NORMAL; VAR Gesamtpunkte; CLASS Benotung; RUN;