Einfuhrung in STATA¨ - uibk.ac.at · Bevor Daten in STATA eingelesen werden k¨onnen, muss...
Transcript of Einfuhrung in STATA¨ - uibk.ac.at · Bevor Daten in STATA eingelesen werden k¨onnen, muss...
Einfuhrung in STATA
Stefan Lang
Universitat Innsbruck
Institut fur Statistik
Universitatsstraße 15, A-6020 Innsbruck
E-mail: [email protected]
Internet: http://www.uibk.ac.at/statistics/personal/lang/index.html
3. Oktober 2007
INHALTSVERZEICHNIS i
Inhaltsverzeichnis
1 Hinweise zur Verwendung dieser Einfuhrung 1
2 Illustrierender Beispieldatensatz 1
3 Struktur von STATA 3
3.1 Die Fenster von STATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Die Speicherverwaltung von STATA . . . . . . . . . . . . . . . . . . . . . . 3
4 Einlesen und Ausgeben von Datensatzen 3
4.1 Einlesen von ASCII Datensatzen . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 Einlesen von Daten im STATA-Format . . . . . . . . . . . . . . . . . . . . . 5
4.3 Abspeichern von Daten im ASCII-Format . . . . . . . . . . . . . . . . . . . 5
4.4 Abspeichern von Daten im STATA-Format . . . . . . . . . . . . . . . . . . 6
5 Datenhandling 6
5.1 Erzeugen und Verandern von Variablen . . . . . . . . . . . . . . . . . . . . 6
5.2 Labeln von Werten und Variablen . . . . . . . . . . . . . . . . . . . . . . . 7
6 Deskriptive Statistiken 9
7 Grafik mit STATA 13
7.1 Grafische Veranschaulichung univariater Verteilungen . . . . . . . . . . . . . 13
7.2 Grafische Veranschaulichung von Funktionen . . . . . . . . . . . . . . . . . 15
7.3 Scatterplotmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.4 Kombination mehrerer Grafiken . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.5 Mehrere Grafiktypen in einer Grafik . . . . . . . . . . . . . . . . . . . . . . 19
7.6 Allgemeine Grafikoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.7 Abspeichern von Grafiken als eps-Files . . . . . . . . . . . . . . . . . . . . . 20
INHALTSVERZEICHNIS ii
8 Regression in STATA 21
9 Programmieren in STATA 23
9.1 Batch-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.3 Schleifenprogrammierung und if-Abfragen . . . . . . . . . . . . . . . . . . . 24
9.3.1 While-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.3.2 forvalues-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.3.3 if-Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Index 27
1 HINWEISE ZUR VERWENDUNG DIESER EINFUHRUNG 1
1 Hinweise zur Verwendung dieser Einfuhrung
Dieses Skript gibt eine kurze Einfuhrung in die Benutzung des Statistik Programms STA-
TA. Die Einfuhrung ist an die Inhalte des Moduls Statistische Datenanalyse fur Studieren-
de des Bachelorstudiengangs Wirtschaftswissenschaften in Innsbruck ausgelegt. Sie erhebt
daher keinerlei Anspruch auf Vollstandigkeit. Eine vollstandige Ubersicht uber die Moglich-
keiten von STATA findet man in den STATA Handbuchern. Diese konnen im Institut fur
Statistik fur kurze Zeit zum Kopieren ausgeliehen werden (wahrend der Sekretariatsoff-
nungszeiten). Weitere Literaturhinweise findet man auf den Internetseiten www.stata.com
des Herstellers.
2 Illustrierender Beispieldatensatz
Die meisten Befehle in diesem Skript werden Anhand eines Beispieldatensatzes zur Un-
terernahrung in Zambia erlautert. Ziel der Untersuchung ist die Bestimmung von Deter-
minanten der Unterernahrung von neugeborenen Kindern im Alter von 0 bis 5 Jahren
in Zambia. In Abstimmung mit der WHO werden in Entwicklungslandern regelmaßig
DHS (Demographic and Health Surveys)–Erhebungen mittels reprasentativer Stichproben
durchgefuhrt. Sie enthalten insbesondere Informationen zu Unterernahrung, Sterblichkeit
und Krankheitsrisiken fur Kinder. Unter mehreren moglichen anthropometrischen Indi-
katoren zur Messung von Unterernahrung wird im vorliegenden Datensatz die Maßzahl
,,Z–Score” fur chronische Unterernahrung (,,Stunting”) verwendet. Sie ist fur ein Kind i
definiert durch
ZScorei =AIi − MAI
σ
Dabei wird als anthropometrischer Indikator AI die altersstandardisierte Große des Kindes
verwendet, MAI ist der Median dieses Indikators fur eine internationale Referenzpopu-
lation, und σ die entsprechende Standardabweichung in dieser Referenzpopulation. Als
erklarende Variablen kommen in der DHS-Erhebung enthaltene Merkmale zum sozio–oko-
nomischen Status der Mutter bzw. des Haushalts sowie zur hygienischen und gesundheitli-
chen Situation in Frage. Tabelle 1 beschreibt die im Datensatz enthaltenen Variablen bzw.
Merkmale.
Der Datensatz ist uber den e-campus als zambia.raw erhaltlich.
2 ILLUSTRIERENDER BEISPIELDATENSATZ 2
Variable Beschreibung Mittelwert/
rel. Haufigkeit
zscore Z–Score des Kindes
bmi Body Mass Index der Mutter des Kindes 21.94435
alter Alter des Kindes in Monaten 26.66887
erw Erwerbsstatus der Mutter
1 = Mutter arbeitet 54.82
0 = Mutter arbeitet nicht 45.18
edu Ausbildungsstatus der Mutter
1 = keine Ausbildung 17.83
2 = incomplete primary education 29.67
3 = complete primary education 32.85
4 = incomplete secondary education 15.74
5 = complete secondary education 2.27
6 = higher education 1.65
sta Stadt/Land
1 = Mutter lebt in der Stadt 43.37
0 = Mutter lebt auf dem Land 56.63
sex Geschlecht des Kindes
1 = mannlich 49.43
0 = weiblich 50.57
reg Wohnort der Mutter
1 = Central 8.75
2 = Copperbelt 21.97
3 = Eastern 9.06
4 = Luapula 8.56
5 = Lusaka 14.32
6 = Northern 9.28
7 = North-Western 5.74
8 = Southern 14.96
9 = Western 7.37
dist Wohnort der Mutter
(genauere geographische Unterteilung)
Tabelle 1: Variablenbeschreibung des Datensatzes zambia.dta zur Unterernahrng in Zam-
bia.
3 STRUKTUR VON STATA 3
3 Struktur von STATA
3.1 Die Fenster von STATA
Nach dem Start von STATA erscheint ein Hauptfenster mit vier Unterfenstern. Es handelt
sich um ein STATA Results Fenster, ein STATA Command Fenster, ein Review Fenster
und ein Variables Fenster. Im STATA Results Fenster werden Resultate von Berechnungen,
aufgerufene Befehle und Fehlermeldungen dargestellt. Das STATA Command Fenster dient
zur Eingabe von Befehlen. Im Review Fenster findet man die letzten 100 eingegebenen
Befehle. Durch Anklicken einer der Befehle erscheint dieser wieder im STATA Command
Fenster und kann (in eventuell modifizierter Form) wieder aufgerufen werden. Schließlich
gibt das Variables Fenster einen Uberblick uber alle Variablen eines Datensatzes. Man
beachte, dass jeweils nur ein Datensatz gleichzeitig in STATA bearbeitet werden kann.
3.2 Die Speicherverwaltung von STATA
Nach dem Start von STATA sind standardmaßig 10 MB fur die Speicherung von Daten
reserviert. Fur Datensatze mit großerem Speicherplatzbedarf kann man mit Hilfe des me-
mory Befehls mehr Speicherplatz zuweisen. Die Hohe des Speicherplatzes ist dabei nur
durch den Hauptspeicher des Computers limitiert, auf dem STATA ausgefuhrt wird. Bei-
spielsweise wird durch Eingabe des Befehls
set memory 20m
der zur Verfugung stehende Speicherplatz auf 20 MB erhoht. Die Erhohung des Spei-
chers ist dabei auf die aktuelle Sitzung beschrankt. Eine permanente Veranderung des
zur Verfugung gestellten Speichers erhalt man durch die zusatzliche Angabe der Option
permanently:
set memory 20, permanently
4 Einlesen und Ausgeben von Datensatzen
4.1 Einlesen von ASCII Datensatzen
Zum Einlesen von ASCII Datensatzen kommen zwei Befehle in Frage: der infile Befehl und
der insheet Befehl. Beim infile Befehl wird immer dann verwendet, wenn der einzulesende
4 EINLESEN UND AUSGEBEN VON DATENSATZEN 4
Datensatz in der ersten Zeile keine Variablennamen enthalt. Beim insheet Befehl geht das
Programm davon aus, dass in der ersten Zeile des ASCII Files die Variablennamen stehen.
Bevor Daten in STATA eingelesen werden konnen, muss allerdings sichergestellt werden,
dass nicht bereits ein anderer Datensatz in STATA eingelesen wurde. STATA kann namlich
nur mit jeweils einem Datensatz gleichzeitig arbeiten. Befinden sich also noch Daten im
Speicher, mussen diese (gegebenenfalls nach Sicherung auf Festplatte) zuerst geloscht wer-
den. Dies geschieht mit dem einfachen Befehl
clear
Infile-Befehl
Der infile Befehl besitzt folgende allgemeine Struktur:
infile varlist using myfile
Dabei wird von STATA angenommen, dass die Variablen (in varlist) in der ASCII-Datei
spaltenweise angeordnet sind. Die Spezifizierung einer Variable in varlist hat folgende
allgemeine Syntax:
newvarname
Als Variablentypen sind ganze Zahlen (byte, int und long), reelle Zahlen (float und double)
und Strings (str1 - str80) zugelassen.
Beispielsweise werden mit dem folgenden Befehl die Variablen X, Y und Z in STATA
eingelesen:
infile X Y Z using myfile
Der folgende Befehl liest die Variablen X1 – X200 in STATA ein:
infile X1-X200 using myfile
Nach dem Einlesen der Daten konnen die Variablen im STATA-Format (Dateiendung
dta) durch Anklicken des Menupunktes File–SaveAs abgespeichert werden. Durch Offnen
des Datenbrowsers oder des Dateneditors (Window–Data Editor) konnen die Daten
visualisiert werden. Der Editor erlaubt auch das Editieren (Verandern) der Daten.
4 EINLESEN UND AUSGEBEN VON DATENSATZEN 5
Insheet-Befehl
Der insheet-Befehl wird ahnlich benutzt wie der infile-Befehl, jedoch mussen die Variablen-
namen nicht angegeben werden, da STATA davon ausgeht, dass in der ersten Zeile des
Files die Variablennamen (durch Leerzeichen getrennt) stehen. Die Zambia-Daten werden
beispielsweise mit dem Befehl
insheet using d:\daten\zambia.raw
eingelesen. Der nach using angegebene Pfad muss gegebenenfalls angepasst werden.
4.2 Einlesen von Daten im STATA-Format
Befinden sich Daten bereits im STATA-Format (Dateiendungen dta) konnen diese mit
Hilfe des Befehls use eingelesen werden. Die Zambia-Daten werden beispielsweise durch
Angabe des Befehls
use d:\daten\zambia.dta
eingelesen. Der angegebene Pfad muss gegebenenfalls angepasst werden. Befindet sich
bereits ein Datensatz im Speicher von STATA, so muss dieser durch vorherige Angabe des
Befehls
clear
zunachst geloscht werden.
4.3 Abspeichern von Daten im ASCII-Format
Daten im STATA-Format lassen sich mit Hilfe des outfile Befehls als ASCII Datensatz
abspeichern. Der Befehl hat folgende allgemeine Struktur:
outfile [varlist] using filename [if exp] [in range] [, replace]
Die Option replace gibt an, dass eine bereits existierende Datei uberschrieben werden darf.
Neben der replace Option sind noch einige weitere Optionen zugelassen, vergleiche hierzu
die Handbucher bzw. die STATA Hilfe. Der folgende Befehl speichert die Variablen X, Y
und Z im ASCII-Format:
outfile X Y Z using myfile
5 DATENHANDLING 6
4.4 Abspeichern von Daten im STATA-Format
In STATA eingelesene Daten werden im STATA-Format fur die spatere Weiterverwendung
mit dem Befehl save gespeichert. Die Zambia Daten werden beispielsweise durch
save d:\daten\zambia.dta
gespeichert. Falls der angegebene Datensatz bereits existiert, muss zusatzlich die Option
replace spezifiziert werden, um dem Programm das Uberschreiben der existierenden Datei
zu ermoglichen. Der Befehl lautet dann
save d:\daten\zambia.dta , replace
Sind haufig Daten einzulesen und abzuspeichern, kann es muhsam werden, immer den
gesamten Pfad anzugeben. Es empfiehlt sich dann, ein Standardverzeichnis anzulegen, das
zum Speichern und Einlesen verwendet wird. Dies geschieht mit dem Befehl cd.
Die Befehle
cd d:\dateninsheet using zambia.raw
save zambia.dta, replace
bewirken, dass der Datensatz zambia.raw im Verzeichnis d:\daten eingelesen und anschlie-
ßend im Stata-Format im selben Verzeichnis abgespeichert wird.
5 Datenhandling
5.1 Erzeugen und Verandern von Variablen
Neue Variablen werden mit Hilfe des Befehls
generate newvar = exp [if exp]
wobei type der Variablentyp ist. Beispielsweise wird mit
generate Y = X2
die bereits existierende Variable X quadriert und das Resultat der neuen Variable Y zu-
gewiesen. Auf dem Einheitsintervall gleichverteilte Zufallsvariablen werden durch
5 DATENHANDLING 7
generate Y = uniform()
erzeugt, standardnormalverteilte Zufallsvariablen werden durch
generate Y = invnorm(uniform())
erzeugt.
Beispiel: Zambia Daten
Der Befehl
generate alter2 = alterˆ2
erzeugt die neue Variable alter2, indem die bereits existierende Variable alter quadriert
wird.�
Sind in einem Datensatz noch keine Variablen vorhanden, so muss zunachst durch
set obs nrobs
die Anzahl der Beobachtungen nrobs festgelegt werden.
Bereits bestehende Variablen werden mit dem replace Befehl verandert. Der Befehl besitzt
folgende Syntax:
replace oldvar = exp [if exp]
Beispiel: Zambia Daten
Der Befehl
replace alter = alter/12
verandert nun die Variable alter so, dass das Alter jetzt in Jahren und nicht wie vorher in
Monaten gespeichert ist.�
5.2 Labeln von Werten und Variablen
Die Werte kategorialer Variablen wie beim Geschlecht (Variable sex) oder dem Bildungs-
stand der Mutter (Variable edu) im Zambia Datensatz werden haufig durch Zahlen kodiert.
Beim Geschlecht beispielsweise werden Jungen mit 1 und Madchen mit 0 kodiert. Bei Aus-
wertungen, die auf diesen Variablen basieren, erscheinen die Kodierungen wieder auf, so
5 DATENHANDLING 8
dass dem mit den Kodierungen nicht vertrauten Betrachter unklar ist, was sich dahinter
verbirgt. Beispielsweise wird durch Angabe des Befehls
tabulate sex
die folgende Haufigkeitstabelle erzeugt (zum tabulate Befehl vergleiche Abschnitt 6):
sex | Freq. Percent Cum.
------------+-----------------------------------
0 | 2,451 50.57 50.57
1 | 2,396 49.43 100.00
------------+-----------------------------------
Total | 4,847 100.00
Die Tabelle ware deutlich besser lesbar, wenn die Kodierung 0 und 1 durch die Bezeich-
nungen (labels) ”Madchen“ und ”Jungen“ ersetzt wurden. Das geschieht in STATA, indem
die Werte einer kategorialen Variable mit sogenannten Labels versehen werden. Fur die
Variable sex geschieht das durch die beiden folgenden Befehle:
label define sexlabel 0 “Madchen“ 1 “Jungen“
label values sex sexlabel
Der erste Befehl definiert ein Label mit dem Namen sexlabel und weist den Werten 0 und 1
die Bezeichnungen ”Madchen“und ”Jungen“ zu. Mit dem zweiten Befehl wird das soeben
definierte Label den Werten der Variable sex zugewiesen. Man beachte, dass ein definiertes
Label den Werten mehrerer Variablen zugewiesen werden kann. Wenn wir jetzt den Befehl
tabulate sex
eingeben erhalten wir den gewunschten Output:
sex | Freq. Percent Cum.
------------+-----------------------------------
Madchen | 2,451 50.57 50.57
Jungen | 2,396 49.43 100.00
------------+-----------------------------------
Total | 4,847 100.00
6 DESKRIPTIVE STATISTIKEN 9
In vielen Fallen kann es auch ubersichtlich sein, den Namen einer Variable zu labeln. Das
geschieht fur die Variable sex durch
label variable sex “Geschlecht“
Das Ergebnis des tabulate Befehls lautet dann
Geschlecht | Freq. Percent Cum.
------------+-----------------------------------
Madchen | 2,451 50.57 50.57
Jungen | 2,396 49.43 100.00
------------+-----------------------------------
Total | 4,847 100.00
6 Deskriptive Statistiken
Mit Hilfe des summarize Befehls werden deskriptive Maßzahlen (arithmetische Mittel,
Standardabweichungen, etc.) berechnet und ausgegeben. Der Befehl besitzt folgende all-
gemeine Syntax:
summarize [varlist] [if exp] [, detail ]
Die Angabe der Option detail bewirkt, dass zusatzliche Maßzahlen (etwa Quantile) be-
rechnet werden.
Beispiel: Zambia Daten
Mit dem Befehl
summarize zscore, detail
erhalt man folgenden STATA Output:
6 DESKRIPTIVE STATISTIKEN 10
zscore
-------------------------------------------------------------
Percentiles Smallest
1% -504 -600
5% -399 -596
10% -338 -593 Obs 4847
25% -256 -593 Sum of Wgt. 4847
50% -170 Mean -169.9251
Largest Std. Dev. 137.9834
75% -86 452
90% -8 466 Variance 19039.43
95% 44 468 Skewness .271389
99% 198 503 Kurtosis 4.352291
�
Fur kategoriale Variablen konnen Haufigkeitsauszahlungen mit dem Befehl tabulate ausgegeben
werden. Der Befehl besitzt die folgende Syntax:
tabulate varname [if exp] [, generate(varname) missing ]
Durch Angabe der missing Option werden zusatzlich Haufigkeiten fur fehlende Werte ausgegeben.
Mit Hilfe der Option generate(varname) werden automatisch Dummyvariablen fur die Werte der
Variable erzeugt.
Beispiel: Zambia Daten
Der Befehl
tabulate sta
tabelliert die absoluten und relativen Haufigkeiten der Variable sta und man erhalt folgende Tabelle
in STATA:
sta | Freq. Percent Cum.
------------+-----------------------------------
0 | 2,745 56.63 56.63
1 | 2,102 43.37 100.00
------------+-----------------------------------
Total | 4,847 100.00
6 DESKRIPTIVE STATISTIKEN 11
Der Befehl
tabulate edu, generate(edu)
erzeugt fur die kategoriale Variable edu Dummyvariablen, die dann im Variables Fenster erscheinen.
Als Output erhalt man eine Haufigkeitstabelle fur die Variable edu:
edu | Freq. Percent Cum.
------------+-----------------------------------
0 | 864 17.83 17.83
1 | 1,438 29.67 47.49
2 | 1,592 32.85 80.34
3 | 763 15.74 96.08
4 | 110 2.27 98.35
5 | 80 1.65 100.00
------------+-----------------------------------
Tabelliert man nun z.B. edu1, so erhalt man folgenden Output(edu1 entspricht edu=0):
tabulate edu1
edu== |
0.0000 | Freq. Percent Cum.
------------+-----------------------------------
0 | 3,983 82.17 82.17
1 | 864 17.83 100.00
------------+-----------------------------------
Total | 4,847 100.00
�
Kreuztabellen fur zwei Variablen konnen ebenfalls mit dem tabulate Befehl berechnet werden. Fur
zwei Merkmale besitzt der Befehl die folgende Struktur:
tabulate varname1 varname2 [if exp] [, cell chi2 column exact lrchi2 missing row ]
Mit Hilfe der Option cell werden zuatzlich die relativen Haufigkeiten (neben den absoluten) darge-
stellt. Durch Angabe der Option column bzw. row werden spaltenweise bzw. zeilenweise relative
Haufigkeiten ausgegeben. Die Optionen chi2 und lrchi2 berechnen Pearson’s χ2 Statistik und die
LQ-χ2 Statistik. Die Option exact fuhrt Fisher’s exakten Assoziationstest durch.
6 DESKRIPTIVE STATISTIKEN 12
Beispiel: Zambia Daten
Der Befehl
tabulate erw sta , cell
tabelliert den Zusammenhang der beiden kategorialen Variablen erw und sta. In STATA erhalt
man nun folgende Tabelle:
| sta
erw | 0 1 | Total
-----------+----------------------+----------
0 | 1,243 947 | 2,190
| 25.64 19.54 | 45.18
-----------+----------------------+----------
1 | 1,502 1,155 | 2,657
| 30.99 23.83 | 54.82
-----------+----------------------+----------
Total | 2,745 2,102 | 4,847
| 56.63 43.37 | 100.00
�
Mit dem Befehl
correlate [varlist] [if exp] [, options]
werden die Korrelationskoeffizienten nach Bravais-Pearson zwischen den in varlist angegebenen
Variablen berechnet. Spezifiziert man die Option covariance, werden die Kovarianzen ausgegeben.
Beispiel: Zambia Daten
Der Befehl
correlate zscore bmi
liefert den Output:
| zscore bmi
-------------+------------------
zscore | 1.0000
bmi | 0.1111 1.0000
Der Korrelationskoeffizient zwischen diesen beiden Variablen betragt 0.11.
7 GRAFIK MIT STATA 13
7 Grafik mit STATA
7.1 Grafische Veranschaulichung univariater Verteilungen
• Boxplot:
Einen Boxplot erhalt man durch folgenden Befehl:
graph box varname [if exp], [graph options]
Zu allgemeinen Grafikoptionen (z.B. Achsenbeschriftungen) siehe Abschnitt 7.6.
Beispiel: Zambia Daten
Mit dem Befehl
graph box zscore
erhalt man den in Abbildung 1 erscheinenden Boxplot.
−50
00
500
Abbildung 1: Boxplot der Variable zscore
Mit dem Befehl
graph box zscore, over (edu)
erhalt man Boxplots der Variable zscore stratifiziert nach den Kategorien der Variable edu.
Als Ergebnis erhalt man die Grafik in Abbildung 2.�
• Histogramm
Die Syntax zur Veranschaulichung einer stetigen Verteilung durch ein Histogramm ist
histogram varname [if exp], [bin(#)] [graph options]
7 GRAFIK MIT STATA 14
−50
00
500
0 1 2 3 4 5
Abbildung 2: Boxplot der Variable zscore stratifiziert nach den Kategorien der Variable edu
wobei bin(#) die Anzahl k der Intervalle angibt. Wird die Option bin nicht angegeben, so
wird die Anzahl der Intervalle automatisch unter Zuhilfenahme der Faustregel
k = min{√
(n), 10 · log10(n)}
gewahlt.
Beispiel: Zambia Daten
Mit dem Befehl
histogram zscore
wird ein Histogramm fur die Variable zscore in STATA erzeugt, vgl. Abbildung 3. �
• Saulendiagramm
Ein Saulendiagramm fur kategoriale Variablen erhalt man in STATA mit Hilfe des Befehls
histogram variable, discrete gap(20).
Durch Angabe der Option discrete geht das Programm von einer diskreten Variable aus,
so dass letztendlich ein Saulendiagramm gezeichnet wird. Die Option gap(20) bewirkt, dass
zwischen den einzelnen Saulen ein kleiner Abstand eingehalten wird. Durch Variation der
Zahl innerhalb der Klammer kann der Abstand variiert werden (zugelassene Werte liegen im
Bereich 0-100).
Beispiel: Zambia Daten
Mit dem Befehl
histogram reg, discrete gap(20)
erhalt man die Grafik in Abbildung 4. �
7 GRAFIK MIT STATA 15
0.0
01.0
02.0
03.0
04D
ensi
ty
−600 −400 −200 0 200 400zscore
Abbildung 3: Histogramm der Variable zscore
7.2 Grafische Veranschaulichung von Funktionen
Die allgemeine Syntax zur Veranschaulichung von Funktionen lautet:
scatter varlist varname x [if exp] [, msymbol(. . . ) clpattern(. . . ) connect(. . . )] [graph options]
Hier werden die Werte in varlist auf der y-Achse gegen die Werte in varname x auf der x-Achse
abgetragen. Mit msymbol(. . . ) wird festgelegt, welche Symbole zur Kennzeichnung der Punkte
verwendet werden. Mit connect(. . . ) und clpattern wird festgelegt, wie die Punkte verbunden
werden. Als Symbole sind unter anderem zugelassen: O (großer ausgefullter Kreis), o (kleiner
ausgefullter Kreis), T (ausgefulltes Dreieck), Oh (großer Kreis), oh (kleiner Kreis), Th (Dreieck),
point (sehr kleiner Punkt), und i (unsichtbar). Die Voreinstellung ist das O Symbol. Zum Verbinden
der Punkte (Option connect) stehen unter anderem folgende Symbole zur Verfugung: i (nicht
verbinden) und l (durchgezogene Linie). Fur die Option clpattern konnen folgende Werte verwendet
werden: l (durchgezogene Linie), (langer Strich), - (mittel langer Strich), . (kurzer Strich).
Beispiele:
• scatter y x zeichnet ein Streudiagramm zwischen y und x.
• scatter y1 y2 x , msymbol(i i) connect(l l)
zeichnet y1 gegen x und y2 gegen x, wobei die (unsichtbaren) Punkte durch Linien verbunden
werden.
• graph y1 y2 x , msymbol(i i) connect(l l) clpattern(l -)
zeichnet y1 gegen x durch Linien verbunden und y2 gegen x durch gestrichelte Linien ver-
bunden.
7 GRAFIK MIT STATA 16
0.0
5.1
.15
.2D
ensi
ty
0 2 4 6 8 10reg
Abbildung 4: Saulendiagramm der Variable reg
Beispiel: Zambia Daten
Der Befehl
scatter zscore alter
zeichnet ein Streudiagramm zwischen der Variable zscore und der Variable alter, vgl. Abbildung 5.
�
−50
00
500
zsco
re
0 20 40 60alter
Abbildung 5: Streudiagramm der Variablen zscore und alter
7 GRAFIK MIT STATA 17
Das folgende Beispiel zeigt wie man mehrere Linien in einer Grafik darstellen kann.
Beispiel: Zeichnen von Funktionen
Wir erzeugen zunachst die Variable x, die Werte im Intervall -3 und 3 annimmt.
set obs 100
generate x = -3 + 6*( n-1)/99
Anschließend erzeugen wir Werte fur die Funktionen sin(x) und cos(x):
generate s = sin(x)
generate c = cos(x)
Nun konnen mit dem Befehl
scatter s c x, msymbol(i i) connect(l l) clpattern(l -)
die beiden Funktionen visualisiert werden, vgl. Abbildung 6.�
−1
−.5
0.5
1
−4 −2 0 2 4x
s c
Abbildung 6: Visualisierung der Funktionen sinus und cosinus.
7.3 Scatterplotmatrix
Mit Hilfe einer Scatterplotmatrix werden fur eine Menge von (metrischen) Variablen alle moglichen
Streudiagramme gezeichnet. Der allgemeine Befehl lautet:
graph matrix varlist [if exp] [, options]
In der Matrix werden samtliche Kombinationen von Streudiagrammen fur die Variablen in varlist
veranschaulicht. Die Diagonale zeigt, welche Variablen in der Matrix in Beziehung gesetzt werden.
7 GRAFIK MIT STATA 18
Mit der Option half erscheint nur der untere Teil der Matrixdarstellung. Weiterhin sind die Op-
tionen msymbol(), mcolor() und msize() ahnlich wie bei einfachen Streudiagrammen anwendbar.
Weitere Optionen findet man in der STATA Hilfe.
Beispiel: Zambia Daten
Mit dem Befehl
graph matrix zscore alter bmi
wird in STATA die in Abbildung 7 abgedruckte Matrix erzeugt.�
zscore
alter
bmi
−500
0
500
−500 0 500
0
20
40
60
0 20 40 60
10
20
30
40
10 20 30 40
Abbildung 7: Scatterplotmatrix fur die Variablen zscore, alter und bmi.
7.4 Kombination mehrerer Grafiken
Es besteht die Moglichkeit sich mehrere Grafiken in einem Fenster anzeigen zu lassen. Dafur muss
zunachst jede Grafik mit dem Befehl
graph save “filename.gph“
abspeichert werden. Anschließend werden dann die Grafiken durch den Befehl
graph combine “filename1.gph“ “filename2.gph“ ...
in einem gemeinsamen Grafikfenster angezeigt.
Beispiel: Zambia Daten
Mit den Befehlen
histogram zscore
7 GRAFIK MIT STATA 19
graph save “histogramzscore.gph“, replace
kdensity zscore
graph save“kzscore.gph“ , replace
graph combine “histogramzscore.gph“ “kzscore.gph“
erhalt man in STATA die Grafik in Abbildung 8.�
0.0
01.0
02.0
03.0
04D
ensi
ty
−600 −400 −200 0 200 400zscore
0.0
01.0
02.0
03D
ensi
ty
−500 0 500zscore
Abbildung 8: Histogramm und Kerndichteschatzer fur die Variable zscore.
7.5 Mehrere Grafiktypen in einer Grafik
In STATA konnen auch mehrere Grafiktypen, etwa Histogramme und Kerndichteschatzer in einer
Grafik angezeigt werden.
Dazu muss der Befehl eingegeben
Grafik1 || Grafik2
werden.
Beispiel: Zambia Daten
Mit dem Befehl
histogram bmi || kdensity bmi
wird das Histogram sowie der Kerndichteschatzer fur die Variable bmi in einer Grafik kombiniert
(vgl Abb.9).�
7 GRAFIK MIT STATA 20
0.0
5.1
.15
10 20 30 40
Density kdensity bmi
Abbildung 9: Histogramm und Kerndichteschatzer fur die Variable bmi
7.6 Allgemeine Grafikoptionen
Die folgende (unvollstandige) Aufzahlung enthalt eine Reihe allgemeiner Grafikoptionen
(graph options), wobei nicht fur jeden Grafiktyp alle erlaubt sind:
• title(”text”) bzw. subtitle(”text”)
Fugt der Grafik eine Uberschrift bzw. Unteruberschrift hinzu.
• xtitle(”text”) bzw. ytitle(”text”)
Achsenbeschriftungen.
• xlabel bzw. ylabel
Labelt die x-Achse bzw. die y-Achse automatisch. Benutzerdefinierte Labels erhalt man
beispielsweise durch xlab(-3 -2 -1 0 1 2 3) oder xlab(-3(1)3).
• xsize(#) bzw. ysize(#)
Legt die Lange der x-Achse bzw. der y-Achse in Inches fest, wobei Werte zwischen 1 und 20
erlaubt sind. Voreinstellung: xsize(6) und ysize(4).
7.7 Abspeichern von Grafiken als eps-Files
In STATA konnen Grafiken auf dem Bildschirm leicht als eps-files abgespeichert werden und an-
schließend in Latex oder Word Dokumente eingebunden werden. Die Bildschirmgrafik wird mit
folgendem Befehl umgewandelt:
graph export filename.eps , as(eps) [replace]
8 REGRESSION IN STATA 21
Beispiel: Zambia Daten
Der Befehl
graph export ”boxplotzscore.eps“ , replace
speichert die Grafik der Abbildung 1 als eps-Datei.�
Die zusatzliche Option replace gibt an, ob eine bereits existierende Grafik uberschrieben werden
darf. Es sei darauf hingewiesen, dass neben eps-Grafiken auch andere Grafiktypen (etwa wmf oder
pdf) erlaubt sind. Beispielsweise erhalt man eine Grafik im wmf (Windows Metafile) Format durch:
graph export filename.wmf , as(wmf) [replace]
8 Regression in STATA
Lineare Modelle konnen mit dem regress Befehl geschatzt werden. Der Befehl hat folgende Syntax:
regress depvar [varlist] [if exp] [, level(#) noconstant ]
Mit Hilfe der Option ’level’ kann das gewunschte Konfidenzniveau fur Konfidenzintervalle angege-
ben werden. Beispielsweise erhalt man mit ’level(80)’ 80 % Konfidenzintervalle fur die unbekannten
Parameter (Voreinstellung 95 %). Die Option ’noconst’ verhindert das Mitschatzen eines Intercepts.
Gewichtete Regressionsmodelle konnen durch zusatzliche Angabe einer Gewichtsvariable geschatzt
werden. Sei Beispielsweise w eine Gewichtsvariable. Dann wird durch
regress y x [aweight=w]
eine gewichtete Regression zwischen y und x geschatzt.
Beispiel: Zambia Daten
Mit dem Befehl
regress zscore bmi
erhalt man folgenden Output des linearen Regressionsmodells fur den zscore in Abhangigkeit von
bmi in STATA:
8 REGRESSION IN STATA 22
Source | SS df MS Number of obs = 4847
-------------+------------------------------ F( 1, 4845) = 60.54
Model | 1138644.9 1 1138644.9 Prob > F = 0.0000
Residual | 91126414.9 4845 18808.3416 R-squared = 0.0123
-------------+------------------------------ Adj R-squared = 0.0121
Total | 92265059.8 4846 19039.4263 Root MSE = 137.14
------------------------------------------------------------------------------
zscore | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
bmi | 4.662031 .5991785 7.78 0.000 3.487369 5.836693
_cons | -272.2303 13.29532 -20.48 0.000 -298.2952 -246.1655
------------------------------------------------------------------------------
Mit dem Befehl
regress zscore bmi sta
erhalt man den folgenden Output in STATA:
Source | SS df MS Number of obs = 4847
-------------+------------------------------ F( 2, 4844) = 84.79
Model | 3120792.3 2 1560396.15 Prob > F = 0.0000
Residual | 89144267.5 4844 18403.028 R-squared = 0.0338
-------------+------------------------------ Adj R-squared = 0.0334
Total | 92265059.8 4846 19039.4263 Root MSE = 135.66
------------------------------------------------------------------------------
zscore | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
bmi | 3 .6139421 4.89 0.000 1.796394 4.203605
sta | 42.26869 4.072822 10.38 0.000 34.28411 50.25327
_cons | -254.0888 13.26695 -19.15 0.000 -280.0981 -228.0796
------------------------------------------------------------------------------
�
Nach Ausfuhrung des regress Befehls konnen mit dem predict Befehl geschatzte Werte,
Residuen usw. berechnet werden, siehe das folgende Beispiel und fur Details die STATA
Hilfe.
9 PROGRAMMIEREN IN STATA 23
Beispiel: Zambia Daten
Mit den Befehlen
predict zscoredach
predict residuen, residuals
werden die geschatzten Werte, in der neu erzeugten Variable zscoredach gespeichert.
Die Regressionsgerade und die wahren Werte konnen dann mit dem Befehl
scatter zscore zscoredach bmi, msymbol(o i) connect(i l)
in einer Grafik (Abbildung 10) veranschaulicht werden.�
−50
00
500
10 20 30 40bmi
zscore Fitted values
Abbildung 10: Streudiagramm der Variablen zscore und bmi inklusive geschatzter Regres-
sionsgerade
9 Programmieren in STATA
9.1 Batch-files
STATA Befehle konnen in batch-files (sogenannte do-files) gespeichert werden. Durch Auf-
ruf der entsprechenden Datei werden samtliche Befehle abgearbeitet. Ein do-file wird mit
dem Befehl
do myfile
9 PROGRAMMIEREN IN STATA 24
aufgerufen.
9.2 Macros
Macros haben in STATA eine ahnliche Aufgabe wie Variablen in hoheren Programmier-
sprachen(z.B. C++). Ein Macro besitzt einen Macronamen und einen Macroinhalt. STATA
unterscheidet lokale Macros, die nur innerhalb eines Programms bekannt sind, und globale
Makros. Die folgenden Befehle beinhalten einige gultige Macrodefinitionen:
local a =”myvar”
local a = 2+2
local a = ‘a’+1
Auf den Inhalt lokaler Macros wird mit ‘macroname’ zugegriffen und auf den Inhalt glo-
baler Macros mit $macroname. Das folgende Code Fragment definiert mehrmals einen
lokalen Macro ‘a’ und gibt den Inhalt aus:
local a = ”myvar”
display ‘a’
local a = 2+2
display ‘a’
Im folgenden Code Fragment wird einem Macro der Name einer Variable zugewiesen und
anschließend deskriptive Kennzahlen berechnet:
local a = ”var1”
summarize ‘a’
Ein Macro kann mit Hilfe des Befehls tokenize in seine Bestandteile zerlegt werden. Die
einzelnen Token werden nacheinander in den Macros ‘1’, ‘2’, usw. gespeichert. Folgendes
Code Fragment zerlegt den Macro ‘a’ in die Token ”Dies”, ”ist”, ”ein” und ”Test”:
local a = ”Dies ist ein Test”
tokenize ‘a’
9 PROGRAMMIEREN IN STATA 25
9.3 Schleifenprogrammierung und if-Abfragen
9.3.1 While-Schleifen
While-Schleifen besitzen folgende Syntax:
while exp {STATA Befehle
}
Folgendes Code Fragment ist ein Beispiel:
local i = 1
while ‘i’ < 10 {display ‘i’
local i = ‘i’+1
end
9.3.2 forvalues-Schleifen
forvalues-Schleifen besitzen folgende Syntax
forvalues lname = range {STATA Befehle, die auf ‘lname’ zugreifen
}
wobei range die Syntax #1 (#2) #3 besitzt. Mit forvalues wird beginnend mit #1 eine
Schleife mit einer Schrittweite von #2 durchlaufen solange die Bedingung ‘lname’ <= #3
zutrifft.
Folgendes Code Fragment ist ein Beispiel:
forvalues i = 1 (2) 10 {display ‘i’
}
Mit diesem Code Fragment werden nacheinander die Zahlen 1, 3, 5, 7 und 9 am Bildschirm
ausgegeben.
Im Vergleich zu while-Schleifen sind die entsprechenden forvalues-Schleifen schneller und
sollten daher bevorzugt eingesetzt werden.
9 PROGRAMMIEREN IN STATA 26
9.3.3 if-Abfragen
if-Abfragen besitzen folgende Syntax:
if exp {STATA Befehle
}else STATA Befehle
Als ein Beispiel betrachte folgendes Code Fragment:
if ‘x’ > 0 {display ”x > 0”
}else display ”x <= 0”
Index
Abspeichern von Daten, 5
ado-file, 23
Boxplot, 9
cell Option, 9
chi2 Option, 9
Cleveland’s loess Verfahren, 22
Clevelands trikubische Gewichtsfunktion, 22
column Option, 9
Command Fenster, 3
connect Option, 13
cplattern Option, 13
deskriptive Kennzahlen, 3
deskriptive Kennzahlen(zusatzlich), 6
detail Option, 7
do-file, 23
Dummyvariablen, 7
Einlesen von Datensatzen, 4
eps Format, 19
Erzeugen von Variablen, 5
exakt Option, 9
Fenster von STATA, 3
Fisher’s exakten Assoziationstest, 9
forvalues-Schleifen, 28
generalisierte Regression, 21
generate Befehl, 5
Gewichtete Regression, 19
Glattungssplines, 22
globaler Macro, 25
Grafikoptionen, 18
Grundstruktur Befehle, 3
Histogramm, 10
if-Abfragen, 28
infile Befehl, 4
kategoriale Regression, 21
kategoriale Variablen, 7
Kerndichteschatzer, 11
Kreuztabellen, 8
Lineare Regression, 19
lokaler Macro, 25
Lokalisierung von Fehlern, 27
LQ-χ2 Statistik, 9
lrchi2 Option, 9
Macro, 24
Macrodefinitionen, 24
memory Befehl, 4
missing Option, 7
msymbol Option, 13
outfile Befehl, 5
Pearson’s χ2 Statistik, 9
predict Befehl, 20
preserve Befehl, 29
Programme, 23
regress Befehl, 19
Regression, 19
Regressionsmodelle, 21
replace Befehl, 6
replace Option, 5, 19
Results Fenster, 3
Review Fenster, 3
row Option, 9
Saulendiagramm, 12
Scatterplotsmoother, 22
27
INDEX 28
selbst definierte Programme, 23
set trace off, 27
set trace on, 27
Speicherplatzerweiterung, 4
Streudiagramm, 13
Struktur von Programmen, 24
summarize Befehl, 6
Symbole in Grafiken, 13
syntax Befehl, 25
Syntaxelemente, 25
tabulate Befehl, 7
Temporare Variablen, 29
tokensize Befehl, 25
Variablentypen, 4
Variables Fenster, 3
Verandern von Variablen, 6
While-Schleifen, 27
Zerlegung von Macros, 25