Stata-Einführung - Empirische Wirtschaftsforschung und Ökonometrie

Transcrição

Stata-Einführung - Empirische Wirtschaftsforschung und Ökonometrie
_
Prof. Bernd Fitzenberger, Ph.D.
Ute Leuschner
Katrin Sommerfeld
WS 2008/09
------------------------------
Einführung in die Empirische Wirtschaftsforschung
Kurze Einführung in Stata
1 Allgemeines
Stata ist ein Statistik-Programmpaket, dessen Einsatzmöglichkeiten von einfachen interaktiven Aufgaben zu sehr komplexen statistischen Programmierarbeiten reichen. Ausführliche
Informationen zu Stata gibt es im Internet unter: http://www.stata.com.
Stata besitzt eine eingebaute Hilfefunktion, in der die Beschreibung aller Stata-Befehle abrufbar ist (Menu > Help > Search). Diese enthält auch eine Einführung in die wichtigsten
Grundkonzepte (Menu > Help > Contents). Der Hilfetext der aktuellen Version ist auch über
das Internet verfügbar: http://www.stata.com/help.cgi?<Befehl>, d.h. für den Befehl list unter der Adresse http://www.stata.com/help.cgi?list.
Es gibt zahlreiche Stata Online-Tutorials, z.B.
http://www.ats.ucla.edu/stat/stata/
http://www.princeton.edu/~erp/stata/main.html
Neben den offiziellen Handbüchern, die eine noch ausführlichere Beschreibung aller StataBefehle und Programmiermöglichkeiten enthalten als die programminterne Hilfe, gibt es
auch einführende Bücher, wie z.B. das von Kohler/Kreuter: „Datenanalyse mit Stata“ (in der
Bibliothek vorhanden).
1
2 Erste Schritte in Stata
2.1 Die verschiedenen Stata-Fenster
Nach dem Start öffnet sich ein Hauptfenster mit vier Unterfenstern:
Das Results-Fenster hat einen schwarzen Hintergrund und zeigt die ausgeführten Befehle
und deren Resultate sowie Fehlermeldungen an.
Das Command-Fenster dient der Eingabe von Befehlen. Ein Befehl wird durch Drücken der
Eingabe-Taste abgeschickt.
Das Review-Fenster enthält eine Liste der zuletzt eingegebenen Befehle. Durch Anklicken
eines bestimmten Befehls wird dieser im Command-Fenster reaktiviert.
Das Variables-Fenster enthält eine Liste aller Variablen im Datensatz.
2
2.2 Die allgemeine Befehlsstruktur von Stata
Stata-Befehle haben die folgende Grundstruktur:
[by varlist:] command [varlist] [if exp] [in range] [using filename] [, options]
wobei varlist eine Liste von Variablen, command den Stata Befehl, exp einen mathematischen
Ausdruck, range einen Bereich von Beobachtungen, die filename einen Dateinamen und options
Befehlsoptionen darstellen. Das Präfix by varlist bedeutet, dass der Befehl wiederholt für alle
Teilstichproben, die durch die Kategorien der Variablen in varlist gebildet werden, ausgeführt
wird. Die Teile in eckigen Klammern müssen nicht bei allen Befehlen vorhanden sein bzw. sind
optional. Alle Stata Befehle und Variablennamen können soweit abgekürzt werden, wie keine
Missverständnisse entstehen.
Beispielsweise werden mit dem folgenden Befehl für die Variable var1 einige deskriptive Kennzahlen berechnet: summarize var1 if var1>0. Die Berechnung der Kennzahlen bezieht sich nur
auf Beobachtungen, für die var1>0 gilt. Abgekürzt lautet derselbe Befehl: su var1 if var1>0.
Achtung: Stata unterscheidet zwischen Groß- und Kleinbuchstaben.
3 Grundlegende Befehle und Funktionsweisen
3.1 Einlesen von Datensätzen
use für Daten im Stata-Format (Endung *.dta), Bsp.:
use musterdaten.dta
use var1 var2 var3 if region==1 in 1/100 using musterdaten.dta
insheet für Daten aus Tabellenkalulationsprogrammen, die als Tabulatoren getrennter Text
abgespeichert worden sind, Bsp.:
insheet using musterdaten.txt
infile für ASCII-Dateien im freien Format, d. h. die einzelnen Variablen des Datensatzes sind
durch Leerzeichen, Tabulatoren, Kommata, etc. und die Beobachtungen durch Zeilenumbrüche getrennt, Bsp.:
infile var1 var2 var3 using musterdaten.raw
3
infile mit dictionary oder infix gefolgt von den Namen und Spaltenpositionen der Variablen
für ASCII-Dateien im festen Format, d. h. mit festen Spaltenpositionen ohne Trennzeichen
zwischen den einzelnen Variablen, Bsp.:
infix var1 36-36 var2 150-160 var3 719-720 using musterdaten.txt
Kleinere Datenmengen können auch manuell oder per Kopieren und Einfügen aus einem
Tabellenkalkulationsprogramm in den Dateneditor eingegeben werden.
3.2 Ausgeben von Datensätzen
Save filename
Abspeichern im Stata-Format, Bsp:
save pfad/musterdaten.dta , replace
Outfile using filename Abspeichern als ASCII Datensatz, Bsp.:
outfile var1 var2 var3 using musterdaten.raw
3.3 Ansehen und Beschreiben der Daten
browse
Anschauen der Daten mit dem Datenbrowser
list
Anschauen der Daten (entspricht print in TSP)
describe
Beschreibung des Datensatzes
summarize
deskriptive Statistiken, i.e. Zahl der Beobachtungen, Mittelwert, Standardabweichung, Minimum, Maximum
summarize, detail
wie oben nur detaillierter. Es werden zusätzliche Statistiken ausgegeben, wie z.B. Perzentile, die vier größten und kleinsten Werte.
tabulate var1
Häufigkeitsverteilung von var1
tabulate var1 var2, row column Kreuztabelle von var1 und var2 mit Angabe der Zeilen- und
Spaltenprozente
4
3.4 Einschränken der Stichprobe
drop x y Löschen der Variablen x und y
drop in 1/100
Löschen der ersten 100 Beobachtungen
keep x y Behalten der Variablen x und y
keep if alter>15 & alter<=65
Eingrenzung auf Personen zwischen 16 und 65
3.5 Erstellen und Verändern von Variablen
Erstmaliges Erzeugen einer Variable mit dem Befehl generate:
generate newvar1 = var1 + ln(var2)
generate newvar2 = var1 * var2
generate newvar3 = var1/var2
Oder mit dem Befehl egen (=extended generate) Variablen bilden, die statistische Informationen über die Stichprobe (z.B. Mittelwert, Standardabweichung, Minimum, Maximum) beinhalten:
egen minc = mean(income)
Bestehende Variablen werden mit dem Befehl replace verändert:
generate var3 = ln(var2)
replace var3 = 0 if var2<=0
Erzeugen von Dummy-Variablen:
generate kind = alter<18
statt:
generate kind=0
replace kind=1 if alter<18
3.6 Arithmetische Operatoren
Symbol
+
*
/
^
Beschreibung
Addition
Subtraktion
Multiplikation
Division
Potenz
5
3.7 Logische und relationale Operatoren in if-Bedingungen
Symbol
~
!
|
&
>
<
>=
<=
~=
!=
==
Beschreibung
nicht
nicht
oder
und
größer als
kleiner als
größer oder gleich
kleiner oder gleich
ungleich
ungleich
gleich
3.8 Funktionen
Mit help functions kann man die vollständige Liste der Funktionen, die in Stata zur Verfügung
stehen, aufrufen. Hier einige Beispiele:
Funktion
abs(x)
sqrt(x)
ln(x)
exp(x)
Beschreibung
Absolutbetrag
Quadratwurzel
natürlicher Logarithmus
Exponentialfunktion
3.9 Interne Resultate
In vielen Fällen ist das Ergebnis einer ersten Analyse wichtig für weitere Analysen. So benötigt
man bspw. Mittelwert und Standardabweichung einer Variablen, um sie in einem zweiten
Schritt zu standardisieren. Stata speichert die Ergebnisse solcher “Statistik-Kommandos“ als
interne Resultate. So produziert der Befehl summarize automatisch folgende interne Resultate,
die für weitere Berechnungen verwendet werden können:
6
Name
r(N)
r(sum_w)
r(mean)
r(sd)
r(Var)
r(min)
r(max)
r(sum)
Beschreibung
Fallzahl
Summe der Gewichte
arithmetisches Mittel
Standardabweichung
Varianz
Minimum
Maximum
Summe
Stata speichert interne Resultate auch nach Modellanalysen, wie bspw. Regressionen. Diese
werden dann als e( ) gespeichert. Mit dem Befehl return list bzw. ereturn list kann man sich einen Überblick über die erzeugten internen Resultate verschaffen. Das folgende Beispiel zeigt,
wie man die Variable x standardisiert:
summarize x
generate x_s=(x-r(mean)) / r(sd)
3.10
Interne Variablen
In Stata gibt es außerdem eine Reihe von internen Variablen, deren Namen alle mit einem _
beginnen (vgl. help _variables). In Berechnungen kann man auf sie genauso wie auf die anderen
Variablen zugreifen. Die Variablen _n (=laufende Beobachtungsnummer) und _N (=Anzahl der
Beobachtungen im gegenwärtig gültigen Datenbereich) sind nützlich, um Beobachtungen zu
indizieren. Mit dem folgenden Beispiel kann man die Wachstumsrate der Variable x von einer
zur nächsten Periode berechnen, wenn die Daten chronologisch sortiert sind:
generate wr=(x[_n]-x[_n-1]) / x[_n-1] if _n>1
3.11
Stata als Taschenrechner
Der Befehl display kann sowohl für das Darstellen von Ergebnissen in Programmen als auch
interaktiv als Taschenrechner verwendet werden, Bsp.:
display 5*6+(ln(7)-2) oder abgekürzt: di 5*6+(ln(7)-2)
7
4 Arbeiten mit Stata: do- und log-Files
Grundsätzlich ist das Arbeiten mit Befehlsdateien dem interaktiven Arbeiten vorzuziehen, da die
Reproduzierbarkeit der Ergebnisse so gewährleistet ist und nachträgliche Korrekturen und Änderungen einfach durch Abändern des betreffenden Programmteils möglich sind. Befehlsdateien in Stata sind ASCII-Dateien mit der Endung *.do. Das Editieren eines Stata-Programms ist mit
jedem Texteditor oder direkt im do-File Editor von Stata möglich. Um ein do-File auszuführen
gibt man den Befehl do “pfad/dateiname.do“ im Befehlsfenster ein. Die do-Files sollten so konzipiert sein, dass bei jedem Durchlauf eine Ergebnisdatei (log-File, s.u.) angefertigt wird. Stata
beendet die Ausführung eines do-Files vorzeitig, wenn eine Fehlermeldung auftritt.
Damit do-Files auch noch nach längerer Zeit bzw. für andere Leser nachvollziehbar sind, sollte
man die Dateien mit Hilfe von Kommentaren und Leerzeilen gliedern und erläutern. Kommentare sind Textsequenzen, die von Stata nicht interpretiert, sondern einfach überlesen werden. Es
gibt folgende Möglichkeiten Kommentare zu kennzeichnen:
Kommentar
* Dies ist ein Kommentar
/*Dies ist ein Kommentar*/
// Dies ist ein Kommentar
/// Dies ist ein Kommentar
Beschreibung
Kommentar von * bis zum Zeilenende
Kommentar beginnt mit /* und endet nach */
Kommentar von // bis zum Zeilenende
Kommentar von /// bis zum Beginn der nächsten Zeile
Normalerweise markiert der Zeilenumbruch das Ende eines Befehls. Wenn man lange Befehle
der Übersichtlichkeit halber über mehrere Zeilen anordnen möchte, kann man entweder die
Zeilenumbrüche auskommentieren (mit /* */ oder ///) oder man definiert das Semikolon als
Befehlsendezeichen. Anschließend ist hinter jedem ein- oder mehrzeiligen Befehl ein Semikolon
zu setzen, Bsp.:
# delimit ; /*von nun an soll das Semikolon Befehlsende sein*/
generate newvar =
(var1+ var2) / (var4 + var5)^.5 in 1/867 if var6>0 ;
# delimit cr /*nun soll wieder der Zeilenumbruch als Befehlsende gelten*/
Stata protokolliert zwar alle Befehle und Ergebnisse im Ergebnisfenster, der Inhalt dieses Fensters kann jedoch nicht gespeichert werden, und es zeigt nur die letzten Befehle einer StataSitzung an. Mit Hilfe der log-Files lässt sich ein genaues Protokoll der ganzen Sitzung erstellen.
Sie protokollieren alle verwendete Befehle, Ergebnisse, Fehlermeldungen etc. In Stata gibt es
zwei Formate für log-Files: *.smcl und *.log. *.smcl-Dateien können nur mit Stata gelesen und
bearbeitet werden. Das Format *.log erzeugt eine ASCII-Datei, die mit jedem Texteditor gelesen
und bearbeitet werden kann. Ergebnisse in *.log-Dateien lassen sich leicht per Kopieren und
8
Einfügen in andere Dokumente (Word, Excel) übertragen. Das Öffnen und Schließen von logFiles erfolgt mit den Befehlen log using dateiname.log, um ein log-File zu beginnen, und log close, um das log-File zu schließen.
Typischer Aufbau eines do-files:
*
*Erläuterungen zu Inhalt, Datum und ggf. Autor des do-Files
*
cd “D:/Projekte/Lohn“ /* Arbeitsverzeichnis festlegen */
set more off /*Stata soll nicht stoppen, wenn das Ergebnisfenster voll ist*/
capture log close /*evtl. noch geöffnete log-Files schließen (der Befehl capture unterdrückt die Fehlermeldung, falls keine log-Files mehr offen sind)*/
clear /* Arbeitsspeicher leeren */
set memory 15m /* Größe des Arbeitsspeichers festlegen */
log using testlog.log, replace /*Ergebnisfile öffnen und altes ersetzen*/
use lohndaten.dta /* Daten einlesen */
describe /* Variablenbeschreibung */
summarize /* deskriptive Statistiken für alle Variablen */
* Stichprobe einschränken
keep if alter>=18 & alter<65
keep if lohn>0 & lohn<.
* Neue Variablen erzeugen und überprüfen
generate lnlohn = ln(lohn) /* logarithmierter Lohn */
generate erfahrung = alter – schuljahre – 6 /* potenzielle Berufserfahrung */
summarize lnlohn erfahrung , detail
list lohn lnlohn alter erfahrung in 1/20 , noobs clean
* Veränderten Datensatz abspeichern
save lohndaten2.dta , replace
log close /* Ergebnisfile schließen */
exit /* do-File verlassen */
9