*************************************************************** *************************************************************** *** Titel des Projekts: Estimating the causal effect of collective bargaining on the wage distribution *** Datengrundlage: Gehalts- und Lohnstrukturerhebung (GLS) 2001 *** *** Dateiname des Programmcodes: 00b_Datenaufbereitung2001.do *** von: Katrin Sommerfeld *** E-Mail: sommerfeld@zew.de *** Tel: 0621-1235 216 *** *** Dateiname des Log-Files: 00b_Datenaufbereitung2001.log *** *** Grundriss des Programms: *** *** *************************************************************** *** 01 DATENAUFBEREITUNG *************************************************************** * * ** A1) Angestellte-Datensatz ** * 1. Generiere Stunden --> Lohn und andere Variablen * a) Arbeitsstunden im Monat Oktober * b) Stundenlohn * 2. Generate and recode more variables * 3. Vorbereitung der Beschränkung des Sample * * ** A2) Analog für Arbeiter-Datensatz ** * * ** B) Betriebs-Datensatz ** * 1. Datenaufbereitung Betriebsdatensatz * 2. Merge mit Arbeitnehmer-Datensatz * 3. Generiere neue Variablen im gemeinsamen Datensatz * a) Wirtschaftszweige + Korrektur * b) Tarifbindung individuell angepasst an Firmenniveau * 4. Beschränkung des Sample * * ** C) Describe ** * * *************************************************************** * Bildschirmanzeige steuern: clear set more off set mem 1g ***************************************************************** *** A1) Nur Angestellte 2001 *** use "Angestellte2001_rel_v2.dta", clear describe count *********************************************** *** 1. Define variables correctly *** *********************************************** gen use=1 label define use 1"to be used" label values use use *********************************************** *** a) HOURS = Working hours per MONTH *** *********************************************** * inklusive Mehrarbeit capture gen hours=. label var hours "DN: Working hours per MONTH" * für Nicht-Stundenlöhner, also hauptsächlich Angestellte: replace hours = (ef20*4.345)+ef22 replace hours = ef21 + ef22 if hours==0 * Teilzeit-Dummy: gen teilzeit=0 replace teilzeit=1 if ef17u2==8|hours<(18*4.345) replace teilzeit=2 if ef17u2==9|(hours>=18*4.345&hours<30*4.345) replace teilzeit=0 if hours>=30*4.345 *********************************************** *** b) Stundenlohn *** *********************************************** gen wage = ef25/hours if hours>0 count replace use=10 if hours<5 // 2200 replace use=11 if hours>304 // entspricht 70 bezahlten Stunden pro Woche // 500 replace use=12 if ef25==0 // 0 replace use=13 if wage>70 // 600 label var wage "DN: Hourly wage with overtime pay" // enthält Verdienst aus Mehrarbeit(szeit) gen lnwage=log(wage) label var lnwage "DN: Log hourly wage with overtime pay" *********************************************** *** 2. Generate and recode more variables *** *********************************************** *** Tarifart *** tab ef10, m gen tarifart=0 replace tarifart=1 if ef10==1 replace tarifart=2 if ef10==2|ef10==3 label define tarif 0"Individuell" 1"Flächentarifvertrag" 2"FirmenTV + Betriebsvereinbarung" label values tarifart tarif gen no = (tarifart==0) gen general = (tarifart==1) gen firm = (tarifart==2) * beruf müsste bereits "beruf" heißen capture rename ef17u1 beruf *SEX* rename ef12 sex recode sex (1=0) (2=1) label define sex2 1"weiblich" 0"männlich" label values sex sex2 *** Age *** gen age=2001-ef13u2 label var age "Age" gen age2 = age^2 *** Unternehmenszugehörigkeit *** gen tenure=2001-ef14u2 gen tenure2=tenure^2 *** Region *** *rename ef1u1 region capture destring region, replace describe region gen east = (region>=8 & region<.) gen west = (region<8) label var east "Ost mit Berlin" label var west "West ohne Berlin" tab region, gen(region) *** Education *** gen educ_low = (ef17u3==1|ef17u3==3) //Keine Berufsausbilidung, auch ABi ohne Ausbildung gen educ_med = (ef17u3==2|ef17u3==4) // gen educ_high = (ef17u3==5|ef17u3==6) //Uni oder FH gen educ_na = (ef17u3==7) label var educ_low "DN from ef17u3: educ low" label var educ_med "DN from ef17u3: educ med" label var educ_high "DN from ef17u3: educ high" label var educ_na "DN from ef17u3: educ n/a" gen educ=0 replace educ=1 if educ_low==1 replace educ=2 if educ_med==1 replace educ=3 if educ_high==1 replace educ=4 if educ_na==1 * Interaktionen * gen age_low = age*educ_low gen age_med = age*educ_med gen age_high= age*educ_high gen age_na = age*educ_na *** Hochrechnungsfaktor = Gewicht *** rename ef44 weight ***gen weight = b_ef30*b_ef31 gen extra = ( (ef28>0 & ef28<.) | (ef29>0 & ef29<.) | (ef30>0 & ef30<.) ) label var extra "Dummy für Nacht-/ Schicht-/ Sonntagsarbeit" capture gen year=2001 *********************************************** * 3. Beschränkung des Sample vorbereiten *********************************************** count * Lösche Personen in Ausbildung und Praktikanten replace use=2 if ef17u2==0 | ef18==4 // * Lösche Personen in Altersteilzeit replace use=3 if ef18==3 // * Lösche Personen über 55 bzw. unter 25 replace use=4 if age>55 & age<. & use!=3 // replace use=5 if age<25 // replace use=7 if hours==0 & use==1 replace use=8 if wage==. & use==1 replace use=9 if teilzeit!=0 * Hier erst Niedriglohn raus! disp "Hier Beschränkung auf >= 4 Euro" replace use=14 if wage<4 & use==1 label define use 2 "Ausbildung/ Praktikum", add label define use 3 "Altersteilzeit", add label define use 4 ">55 Jahre" 5"<25 Jahre", add label define use 6 "East", add label define use 7 "hours=0", add label define use 8 "wage=.", add label define use 9 "Teilzeit", add label define use 10"hours<5" 11"hours>304" 12"Monatslohn=0" 13"wage>70", add label define use 14 "wage<4", add tab use compress sort betr_id fallnr describe count save "Angestellt2001_neu2012.dta", replace *** Ende Teil A): Nur Angestellte 2001 *********************************************** ***************************************************************** *** A2) Nur Arbeiter 2001 *** use "Arbeiter2001_rel_v2.dta", clear describe count *********************************************** *** 1. Define variables correctly *** *********************************************** gen use=1 label define use 1"to be used" label values use use *********************************************** *** a) HOURS = Working hours per MONTH *** *********************************************** * inklusive Mehrarbeit capture gen hours=. label var hours "Working hours per MONTH" replace hours = ef21 replace hours = ef20+ef22 if hours==0 * Teilzeit-Dummy: gen teilzeit=0 replace teilzeit=1 if ef17u2==8|hours<(18*4.345) replace teilzeit=2 if ef17u2==9|(hours>=18*4.345&hours<30*4.345) replace teilzeit=0 if hours>=30*4.345 *********************************************** *** b) Stundenlohn *** *********************************************** gen wage = ef25/hours if hours>0 count replace use=10 if hours<5 replace use=11 if hours>304 // entspricht 70 bezahlten Stunden pro Woche replace use=12 if ef25==0 replace use=13 if wage>70 label var wage "DN: Hourly wage with overtime pay" // enthält Verdienst aus Mehrarbeit(szeit) gen lnwage=log(wage) label var lnwage "DN: Log hourly wage with overtime pay" // enthält Verdienst aus Mehrarbeit(szeit) *********************************************** *** 2. Generate and recode more variables *** *********************************************** *** Tarifart *** tab ef10, m gen tarifart=0 replace tarifart=1 if ef10==1 replace tarifart=2 if ef10==2|ef10==3 label define tarif 0"Individuell" 1"Flächentarifvertrag" 2"FirmenTV + Betriebsvereinbarung" label values tarifart tarif gen no = (tarifart==0) gen general = (tarifart==1) gen firm = (tarifart==2) * beruf müsste bereits "beruf" heißen capture rename ef17u1 beruf *SEX* rename ef12 sex recode sex (1=0) (2=1) label define sex2 1"weiblich" 0"männlich" label values sex sex2 *** Age *** gen age=2001-ef13u2 label var age "Age" gen age2 = age^2 *** Unternehmenszugehörigkeit *** gen tenure=2001-ef14u2 gen tenure2=tenure^2 *** Region *** *rename ef1u1 region capture destring region, replace describe region gen east = (region>=8 & region<.) gen west = (region<8) label var east "Ost mit Berlin" label var west "West ohne Berlin" tab region, gen(region) *** Education *** gen educ_low = (ef17u3==1|ef17u3==3) //Keine Berufsausbilidung, auch ABi ohne Ausbildung gen educ_med = (ef17u3==2|ef17u3==4) // gen educ_high = (ef17u3==5|ef17u3==6) //Uni oder FH gen educ_na = (ef17u3==7) label var educ_low "DN from ef16u2: educ low" label var educ_med "DN from ef16u2: educ med" label var educ_high "DN from ef16u2: educ high" label var educ_na "DN from ef16u2: educ n/a" gen educ=0 replace educ=1 if educ_low==1 replace educ=2 if educ_med==1 replace educ=3 if educ_high==1 replace educ=4 if educ_na==1 * Interaktionen * gen age_low = age*educ_low gen age_med = age*educ_med gen age_high= age*educ_high gen age_na = age*educ_na *** Hochrechnungsfaktor = Gewicht *** rename ef44 weight ***gen weight = b_ef30*b_ef31 gen extra = ( (ef28>0 & ef28<.) | (ef29>0 & ef29<.) | (ef30>0 & ef30<.) ) label var extra "Dummy für Nacht-/ Schicht-/ Sonntagsarbeit" capture gen year=2001 *********************************************** * 3. Beschränkung des Sample vorbereiten *********************************************** count * Lösche Personen in Ausbildung und Praktikanten replace use=2 if ef17u2==0 | ef18==4 // * Lösche Personen in Altersteilzeit replace use=3 if ef18==3 // * Lösche Personen über 55 bzw. unter 25 replace use=4 if age>55 & age<. & use!=3 // replace use=5 if age<25 // replace use=7 if hours==0 & use==1 replace use=8 if wage==. & use==1 replace use=9 if teilzeit!=0 * Hier erst Niedriglohn raus! disp "Hier Beschränkung auf >= 4 Euro" replace use=14 if wage<4 & use==1 label define use 2 "Ausbildung/ Praktikum", add label define use 3 "Altersteilzeit", add label define use 4 ">55 Jahre" 5"<25 Jahre", add label define use 6 "East", add label define use 7 "hours=0", add label define use 8 "wage=.", add label define use 9 "Teilzeit", add label define use 10"hours<5" 11"hours>304" 12"Monatslohn=0" 13"wage>70", add label define use 14 "wage<4", add tab use compress sort betr_id fallnr describe count save "Arbeiter2001_neu2012.dta", replace *** Ende Teil A2): Nur Arbeiter 2001 *********************************************** append using "Angestellt2001_neu2012.dta" compress sort betr_id fallnr describe count /*droppe nettojahresverdients*/ cap drop ef36 save "AN2001_neu2012.dta", replace ************************************************************************************* *** B) Betriebe 2001 use "Betriebe2001_roh3.dta", clear describe count ********************************************************************** * 1. Datenaufbereitung Betriebsdatensatz ********************************************************************** /*Variablen umbennen, analog zum Datensat Betriebe (<-Datensatz ohne Betriebsgweichte) */ *rename ef1u1 region *rename EF7 ef7 *rename EF12 ef12 *rename EF13 ef13 *rename EF14 ef14 *rename EF15 ef15 *rename EF16 ef16 *rename EF17 ef17 *rename EF30 ef30 *rename EF36 ef36 gen male=(ef14+ef16)/(ef14+ef15+ef16+ef17) replace male=male/100 if male>1 label var male "Anteil Männer an Beschäftigten des Betriebes" gen female=(ef15+ef17)/(ef14+ef15+ef16+ef17) label var female "Anteil Frauen an Beschäftigten des Betriebes" rename ef12 public rename ef13 size recode public (1=0) (2=0) (3=1) recode size (1/99=1) (100/199=2) (200/999=3) (1000/1999=4) (2000/9999=5), gen(sizeclass) tab sizeclass, gen(size) drop ef7 ef18* ef19* ef20* ef21* ef22* ef23* ef24* ef25* sort betr_id compress save "Betriebe2001_neu2012.dta", replace ********************************************************************** *** 2. merge zusammen *** ********************************************************************** merge betr_id using "AN2001_neu2012.dta" tab _merge keep if _merge==3 drop _merge count label var tarifart "Tarifvertrag individuell von ef10" ********************************************************************** *** 3. Variablen generieren im gemeinsamen Datensatz *** ********************************************************************** cap gen year=2001 gen help=teilzeit recode help (2=1) bysort betr_id: egen shareTZ=mean(help) drop help label var shareTZ "Anteil TZ-AN im Betrieb" bysort betr_id: egen meanwage = mean(wage) gen diff = meanwage-wage label var diff "Difference between mean betriebs wage and individual wage" ************************* *** Wirtschaftszweige *** ************************* rename ef11 wz capture destring wz, replace capture label var wz "Nicht-korrigierter Wirtschaftszweig" describe wz drop if wz==70 // Grundstücksvermietung etc. tab wz, gen(wz) forvalues t=1/21{ gen w`t' = (wz`t'==1) } gen w22 = (wz22==1|wz23==1) gen w23 = (wz24==1) gen w24 = (wz25==1) gen w25 = (wz26==1|wz27==1) gen w26 = (wz28==1|wz29==1) gen w27 = (wz30==1) gen w28 = (wz31==1|wz32==1|wz33==1) gen wzgruppe=0 label var wzgruppe "Korrigierte Wirtschaftszweige" forvalues w=1/28{ replace wzgruppe=`w' if w`w'==1 } drop wz1-wz33 tab wzgruppe, m ******************************************************************* *** 3.b Tarifvertrag - angepasst für Rate of coverage on firm level *** ******************************************************************* bysort betr_id: egen share_ind = mean(no) bysort betr_id: egen share_col = mean(general) bysort betr_id: egen share_firm = mean(firm) gen indcontract=1 replace indcontract=0 if (share_col>0.01|share_firm>0.01) gen colcontract=0 replace colcontract=1 if (share_col>0.01) replace colcontract=0 if (share_col0.01) replace firmcontract=0 if (share_firm