Chapter 3 Data Preparation

3.1 recode

  • Mit recode werden die Ausprägungen einer Variable rekodiert, beispielsweise um die Ausprägungen einer Variable zusammenzufassen
  • Vorsicht: Mit recode wird die Ausgangsvariable rekodiert! Mit der Option generate(new_variable) wird zusätzlich eine neue Variable generiert und die Ausgangsvariable bleibt unversehrt.
  • Zum Rekodieren kann die Option nolab genutzt werden, diese zeigt Ausprägungen anstelle von Labels an.
  • Im Stata Output werden die Werte der Variable foreign von 0 auf 1; bzw von 1 auf 0 rekodiert, beispielsweise um eine leichtere Interpretation der Dummy Variable zu erhalten.
sysuse auto, clear
tab foreign
tab foreign, nolab
recode foreign (0 = 1) (1 = 0), gen(foreign_recode)
tab2 foreign foreign_recode
(1978 Automobile Data)


   Car type |      Freq.     Percent        Cum.
------------+-----------------------------------
   Domestic |         52       70.27       70.27
    Foreign |         22       29.73      100.00
------------+-----------------------------------
      Total |         74      100.00


   Car type |      Freq.     Percent        Cum.
------------+-----------------------------------
          0 |         52       70.27       70.27
          1 |         22       29.73      100.00
------------+-----------------------------------
      Total |         74      100.00

(74 differences between foreign and foreign_recode)


-> tabulation of foreign by foreign_recode  

           |   RECODE of foreign
           |      (Car type)
  Car type |         0          1 |     Total
-----------+----------------------+----------
  Domestic |         0         52 |        52 
   Foreign |        22          0 |        22 
-----------+----------------------+----------
     Total |        22         52 |        74 
  • Bitte bei der Erstellung oder Rekodierung einer Variable stets nach der Datenaufbereitung prüfen ob dies fehlerfrei funktioniert hat (bspw. über tab Befehl)

3.2 generate und replace

  • Mit generate wird eine neue Variable erstellt und je nach Angabe werden spezifische Werte (auch missings) vergeben
  • Mit replace können diese Werte ausgetauscht werdem, also beispielsweise nach der Ausprägung einer zu recodierenden Variablen ersetzt werden
  • Beispiel: Die Variable foreign zeigt an, ob ein Auto ausländisch (1) ist
  • Mit generate und replace können wir eine neue Variable (domestic) erzeugen die auf 1 springt, wenn ein Auto ausländisch ist anstelle der alten Codierung
gen domestic = 1
replace domestic = 0 if foreign == 1

tab2 foreign domestic
(22 real changes made)


-> tabulation of foreign by domestic  

           |       domestic
  Car type |         0          1 |     Total
-----------+----------------------+----------
  Domestic |         0         52 |        52 
   Foreign |        22          0 |        22 
-----------+----------------------+----------
     Total |        22         52 |        74 

3.3 egen

  • egen bedeutet: Extensions to generate
  • Beispielsweise lässt sich so der Mean einer Variable berechnen und dieser kann direkt als neue Variable gespeichert werden
egen mean_price = mean(price)
list mean_price in 1/4, table
 . egen mean_price = mean(price)

. list mean_price in 1/4, table

     +----------+
     | mean_p~e |
     |----------|
  1. | 6165.257 |
  2. | 6165.257 |
  3. | 6165.257 |
  4. | 6165.257 |
     +----------+
  • Zur Generierung von Summary statistics können eine Reihe an Funktionen: count(), iqr(), kurt(), mad(), max(), mdev(), mean(), median(), min(), mode(), pc(), pctile(), sd(), skew(), and total() genutzt werden.
  • Häufig muss der Datensatz noch entsprechend sortiert werden. Beispielweise bei einer zeitlicher Struktur und mehrere Wellen in den Daten. Dies zeigt der folgende Output exemplarisch:
by sortier_var, sort: egen new_var = median(var)

3.4 label

  • Your variables need some nice labels?
  • Der Befehl lab var gibt der Variable ein Label
  • Der Befehl lab def definiert die Labels für die Ausprägungen der Variable
  • Der Befehl lab val fügt die definierten Labels der Variablen hinzu
*Einer Variable einen Namen, Label geben
label variable domestic "Inländische Autos" 

*Ausprägungen müssen definiert werden und können so für mehrere Variablen genutzt werden
label define car_label 0 "Ausländische Autos" 1 "Inländische Autos"  

*Ausprägungen müssen der Variable zugeordnet werden
label values domestic car_label

*Did it work?
tab domestic
 Inländische Autos |      Freq.     Percent        Cum.
-------------------+-----------------------------------
Ausländische Autos |         22       29.73       29.73
 Inländische Autos |         52       70.27      100.00
-------------------+-----------------------------------
             Total |         74      100.00

3.5 Mathematische Transformationen

Hier eine erste kurze Sammlung zentraler mathematischer Transformationen in Stata:

  • Logarithmus von Variable(n) erstellen
  • Polynome
  • Variable am Mean zentrieren
gen ln_age = ln(age)        // Logarithmus
gen quad_age = (age*age)    // Quadratischer Term
center age , gen (zent_age) // Variable zentrieren