Gerne beraten wir Sie auch telefonisch & geben Ihnen eine kostenfreie persönliche Auskunft zu Ihrem Projekt.

X

Die besten Tipps für einen schlanken Stata-Code

Das beliebte Statistikprogramm hat Stata im Vergleich zu seinem Konkurrenten SPSS zwar einige Vorteile, eine gut entwickelte grafische Oberfläche gehört jedoch nicht dazu. Die Bedienung erfolgt fast ausschließlich über den selbst geschriebenen Code in den sogenannten Do-Files. Bei umfangreicheren Vorhaben kann die Länge an Code sehr schnell wachsen, man verliert den Überblick und die Fehler schleichen sich ein. Hier folgt eine Stata Anleitung mit vier Tipps, wie man mit einer sehr kurzen Einarbeitung eigene Do-Files prägnanter machen kann.

Sie brauchen Unterstützung bei der Auswertung mit Stata? Unsere Experten helfen Ihnen gerne weiter! Kontaktieren Sie uns und lassen Sie sich unverbindlich von uns beraten!

Lassen Sie uns Ihre Anforderungen wissen & wir erstellen Ihnen innerhalb weniger Stunden ein kostenfreies Angebot.


Jetzt unverbindlich anfragen

Tipp 1: Stata Locals und Globals als Platzhalter verwenden

Stata kennt zwei Arten von Platzhaltern: Local Macros und Global Macros. Ihre Funktionsweise ist identisch: sie speichern eine Zeichenfolge, auf die schnell und wiederholt zurückgegriffen werden kann. Bei Locals löscht Stata den Arbeitsspeicher nach der Beendigung des Do-Files. Globals löscht Stata erst, wenn man die Ausführung von Stata beendet. Allgemein wird es empfohlen, auf Locals zurückzugreifen, um unnötige Fehler zu vermeiden. Es sei denn man arbeitet in mehreren Do-Files parallel und möchte die Platzhalter nicht bei jedem Durchlauf neu definieren.

Platzhalter empfehlen sich, wenn bestimmte Ausdrücke mehrmals unverändert im Code vorkommen. Ein typischer Fall ist die Eingabe von Arbeitspfaden, auf denen die Arbeitsdateien liegen bzw. gespeichert werden sollen. Diese muss man normalerweise erst über viele Befehle spezifizieren. Ändert sich die Pfadadresse, weil man zum Beispiel einen Ordner umbenannt hat, muss man alle Angaben mühsam korrigieren. Legt man den Pfad jedoch per Platzhalter fest, muss man nur diesen korrigieren.

Hier ein Beispiel, wie man einen Arbeitspfad mit einem Local und einem Global festlegt:

local mydir "C:\Musterordner\Musterunterordner"
use `mydir'\mydata
save `mydir'\mydata, replace 
…
global mydir "C:\Musterordner\Musterunterordner" 
use $mydir\mydta
save $mydir\mydta
…

Ein anderer beliebter Anwendungsfall sind Variablenlisten, zum Beispiel, wenn man mehrere Modellspezifikationen mit denselben Variablen durchprobieren möchte.  Entscheidet man sich dafür, die Auswahl der Modellvariablen anzupassen, müsste man jedes einzelne Modell anpassen. Oder man macht das nur einmal in dem Platzhalter: 

local mavarlist "Dependent Independent_1 Independent_2 Independent_3 "
reg `mavarlist’
reg `mavarlist’, robust 
…
global mavarlist "Dependent Independent_1 Independent_2 Independent_3 "
reg $mavarlist 
reg $mavarlist, robust

Zu weiteren sinnvollen Anwendungsfällen gehören aufwendige Befehlspezifikationen, zum Beispiel für Grafiken, die man an mehreren Stellen identisch anwenden möchte.

Sie möchten brauchen Unterstützung bei der Auswertung Ihrer Daten in Stata? Unsere Statistiker sind bestens vertraut mit professioneller statistischer Programmierung in Stata. Kontaktieren Sie uns für eine kostenlose Beratung & ein unverbindliches Angebot!

Tipp 2: Vermeiden von sich wiederholenden Befehlen mittels Schleifen

Während Platzhalter sinnvoll sind, um Variablenlisten, Pfade oder längere Befehlsoptionen zu verkürzen, kommt in Stata ein Loop (zu Deutsch Schleifen) da zum Einsatz, wo ganze Befehle mehrmals mit nur einer kleinen Abweichung wiederholt werden. Stata bietet mehrere Varianten von Loops: für numerische Listen, Variablenlisten oder Strings. Auch lassen sich Listen direkt einbinden, die zuvor per Platzhalter definiert wurden. Sagen wir, man hat mehrere Datensätze, die zusammengespielt werden müssen. Sie alle haben dieselbe Bezeichnung my_data_, sind aber von 0 bis 10 durchnummeriert. Anstatt den Befehl zum Zuspielen dann zehnmal zu wiederholen, sollte man lieber einen Stata Loop verwenden:

foreach mynumlist numlist 1/10 {
    merge 1:1 my_id using my_data_`mynumlist’
    drop _merge
}

In Stata kann ein Loop mit anderen Loops verschachtelt sein. So hätte man im oberen Beispiel auch hundert Datensätze zuspielen müssen, mit einer etwas komplexen Nummerierung von 1_1 bis 10_10:

foreach mynumlist1 numlist 1/10 {
    foreach mynumlist2 numlist 1/10 {
        merge 1:1 my_id using my_data_`mynumlist1’_`mynumlist2’
    drop _merge
    }
}

Bei einem zweizeiligen Befehl haben wir nun zwei Hundert Zeilen Code gespart. Die Befehle, die man innerhalb einer Schleife behandelt, können aber (fast) unbegrenzt lang und unbegrenzt komplex sein. Es ist in Stata nur wichtig, den Loop richtig zu schließen und auf innere Logik zu achten.

TIPP 3: Dummies und Interaktionsvariablen dank Stata Faktorenschreibweise sparen

Als Faktoren in diesem Sinne bezeichnet man nichtmetrische Variablen, also kategoriale Variablen. In Stata gibt es einen Trick, wie man solche Variablen schnell in die Analysen integrieren kann, ohne dass man sie umständlich umwandeln muss.

Ein Beispiel: man erfasst Alter in Form von vier Alterskategorien: „20-30“; „31-40“; „51-60“; „60 und älter“. Die Variable ist somit ordinalskaliert. Möchte man das Alter also als unabhängige Variable in eine Regression verwenden, müsste man Dummy-Variablen bilden. Oder man kürzt es ab, indem man einfach mit  einem i. die Variable als kategorial spezifiziert:

reg einkommen i.alter

Stata integriert dann automatisch die nötigen Dummies in das Modell und wählt eine Referenzkategorie mit der niedrigsten Fallzahl aus. Möchte man eine bestimmte Referenzkategorie haben, zum Beispiel die „ältesten“ (=4), dann kann auch das spezifiziert werden:

reg einkommen ib4.alter

Mit der Faktorenschreibweise lässt sich auch die Berechnung von Interaktionsvariablen abkürzen, zumindest soweit eine kategoriale Variable Teil der Interaktion ist. Um eine Moderation zu untersuchen, muss normalerweise eine zusätzliche Variable in das Modell aufgenommen werden, die aus dem Produkt der in einer Interaktion stehenden Variablen gebildet wird. Oder man platziert # zwischen den beiden Faktoren bzw. ##, wenn auch die Haupteffekte in das Modell aufgenommen werden sollen:

reg einkommen ib4.alter##i.sex

Eine Interaktion mit einer metrischen Variablen ist auch möglich, diese muss dann mit c. gekennzeichnet werden:

reg einkommen ib4.alter##c.bildungsjahre

An dieser Stelle ist wichtig anzumerken, dass Faktorenschreibweise nicht nur bequem ist. Wichtige postestimation-Befehle wie margins funktionieren korrekt nur (!), wenn in dem Regressionsbefehl die Faktoren richtig spezifiziert wurden.

Tipp 4: Arbeitsschritte inhaltlich und physisch trennen

Besonders bei sehr langen Do-Files ist es sinnvoll, diese in mehrere Abschnitte zu unterteilen, zum Beispiel:  „Zusammenspielen und Aufbereiten der Daten“; „Berechnen der Variablen“; „Deskriptives“; „Modelle“ etc.

Wird dabei der Datensatz angepasst, kann man diesen zwischenspeichern und in den nächsten Schritten jeweils die aktuelle Version benutzen. Man sollte dabei darauf achten, niemals die Originaldaten zu überschreiben!  Denn sollte sich ein Fehler einschleichen, muss man ihn immer im Ausgangsdatensatz korrigieren können.

Mit der Trennung erübrigt sich die Notwendigkeit, jedes Mal die komplette Befehlsliste ausführen zu müssen. Einzelne inhaltliche Blöcke kann man in unterschiedlichen Do-Files speichern, was dann für einen besseren Überblick sorgt. Diese führt man dann entweder einzeln manuell aus oder man erzeugt einen „Meta“-Do-File, in dem auf die einzelne Blöcke zurückgegriffen wird. Das macht man dann mit dem Befehl do myfilename.Ein solches Baukastensystem kennt man aus Schreibprogrammen, wie zum Beispiel Latex. Diese Metadatei kann man auch dazu nutzen, um die generellen Einstellungen (Pfade, Platzhalter, Formatoptionen) zu definieren, damit man es nicht in jedem einzelnen Block erneut tun muss.

Fazit: schlanker Stata-Code dank vier einfachen Tipps

In diesem Artikel haben wir besprochen, wie man mit nur sehr kurzer Einarbeitung eigenen Stata-Code verfeinern kann. Dies dient vorrangig dazu, Fehler zu vermeiden, Zeit zu sparen und für mehr Übersicht zu sorgen. Der letztere Punkt ist vor allem dann relevant, wenn man Projekte in Kooperation erledigt. Denn ein schlanker Code ermöglicht allen Beteiligten einen leichteren Überblick über die bereits geschehenen Schritte. Abgesehen davon macht eine gut geschrieben Syntax einen professionelleren Eindruck

Wenn Sie unsere Auswertungshilfe in Anspruch nehmen möchten, werden unsere Statistiker darauf achten, Ihre Materialien so sauber wie möglich zu gestalten. Fragen Sie nach und lassen Sie sich Ihre Tricks erklären. So verbessern Sie auch Ihre eigenen Programmierfähigkeiten.