local
) a=1
und einen Makro b=2
und addieren Sie die beiden Locals
local a = 1
local b = 2
di `a' + `b'
kontrollvariablen
, der eine Liste von zwei Variablen enthält (alter sex
). Schätzen Sie eine Regression mit bmi
als AV und einkommen
als UV und fügen Sie die zwe Kontrollvariablen in Form des Macros ein.
local kontrollvariablen alter sex
reg bmi einkommen `kontrollvariablen'
local men30 sex==1 & alter > 30
reg bmi einkommen `kontrollvariablen' if `men30'
foreach
) Sie über eine Liste (einkommen bmi
) von abhängigen Variablen. Schätzen Sie innerhalb des Loops eine Regression mit den Kontrollvariablen als erklärende Variablen.
foreach AV in einkommen bmi {
reg `AV' `kontrollvariablen'
}
in
verweist hier auf eine allgemeine Liste. Besser ist unter umständen eine “strukturierte” Liste macro of varlist vars
:
foreach AV of varlist einkommen bmi {
reg `AV' `kontrollvariablen'
}
da dann die Syntax für varlist
verwendet werden kann, z.B. Abkürzungen x*
oder Blöcke von Variablen x-z
.
bjahre
(levelsof
). Schätzen Sie innerhalb des Loops den Zusammenhang zwischen Einkommen und BMI für die jeweilige Bildungsgruppe.
levelsof bjahre, local(bildungsgruppe)
foreach gruppe in `bildungsgruppe' {
display _newline(2) "Bildungsgruppe = `gruppe' Jahre"
reg bmi einkommen if bjahre==`gruppe'
}
program define
). Als Input soll das Programm zwei Parameter annehmen: Die Unter- und die Obergrenze für das Alter. Das Programm soll dann eine Regression reg bmi einkommen
schätzen für ein Subsample der Befragten, deren Alter innerhalb der Altersspanne liegt. Testen Sie das Programm für ein paar Alterswerte.
capture program drop subreg
program define subreg
syntax anything [if] [in]
marksample touse
local lower: word 1 of `anything'
local upper: word 2 of `anything'
assert `lower' <= `upper'
reg bmi einkommen if inrange(alter,`lower',`upper')
end
subreg 30 40
subreg 65 100
Zu Beginn der Syntax wird das Programm gelöscht, da es nicht definiert werden kann, wenn es schon existiert (z.B. falls man in derselben Arbetissession etwas am Code des Programms ändert). Falls das Programm nicht existieren würde, würde program drop
einen Fehler werfen subreg not found
. Diesen Fehler widerum kann capture
abfangen. Allgemein “probiert” Stata den Code hinter capture
, bei einem Fehler wird jedoch nicht das Ausführen des do-Files abgebrochen. assert
prüft Bedingungen auf Wahrheit und gibt ggf. eine Fehlermeldung zurück. In diesem Fall muss upper
mindestens so gross sein wie lower
.