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