* 2004_esec88.do EU-SILC * STATA Command Syntax File * Stata 13.0; * * Generates European Socio-economic Classification (ESEC) for EU-SILC Data * For details on ESeC please visit the homepage of Eric Harrison * http://ekharrison.weebly.com/european-socio-economic-classification-esec.html * * * EU-SILC P-File (personal data): * UDB_c04P_ver 2004-4 from 01-08-09.csv * * For transforming the CSV-data (as released by Eurostat) into Stata-data (*.dta), * please use the corresponding STATA Command Syntax File published at * http://www.gesis.org/missy/eu/setups/EU-SILC * * (c) GESIS 02/08/2015 * GESIS - Leibniz Institute for the Social Sciences * German Microdata Lab * Anika Herter; Heike Wirth * http://www.gesis.org/en/institute/ * * Contact: heike.wirth@gesis.org * /* Initialization commands */ clear capture log close set more off version 12.0 set linesize 250 set varabbrev off * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * CONFIGURATION SECTION - Start * The following command should contain the complete path and * name of the Stata log file. * Change LOG_FILENAME to your filename local log_file "LOG_FILENAME" * The following command should contain the complete path and * name of the STATA file, usual file extension "dta". * Change STATA_FILENAME to your filename use "STATA_FILENAME", clear * CONFIGURATION SECTION - End * There should be probably nothing to change below this line * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - log using "`log_file'", replace numlabel _all, add ************************************************************************************************ * Variables used * PB020: Country (alphanumeric) * PL050: ISCO88 (2-digit); MT: 1-digit; PT: coarsend * PL040: Status in employment * PL130: Number of Persons working at the local unit; Mt:grouped * PL150: managerial position * * ************************************************************************************************ * Good to know * (1) PL130 is only available for currently economic active persons * The ranges used in PL130 categories '14' (don't know but < 11) and '15' (don't know but > 10) * are slightly different to the ranges (< 10; >=10) used in ESEC * (2) In the so-called register countries, some information is available only for the * 'selected respondent' (= only one person per household is interviewed) * with respect to the variables needed for ESEC this is true PL130 (size ..) and * PL150 (managerial position) * * => ESEC can only be generated for persons currently economic active * => In register countries (DK, FI, IS, NL, NO, SE, SI) ESEC can only be generated for the * 'selected respondent'. In all other countries ESEC can be generated for all household * members currently economic active * * (3) There are country specific anonymisation rules in EU-SILC for PT * PT: ISCO08 sub-major groups 11, 12 are assigned to sub-major group 13 => * Thus forming the major group '10' * * => ESEC for PT is not fully consistent with ESEC for the other countries ************************************************************************************************ * ESEC 88 * Step 1: derive employment status categories (emplrel) * a) * need to know status in employment (self-employed or employed) * Variable name in EU Silc is PL040 * the newly generated variable is "emplrel" * Please note: family workers are treated as employees tab1 PL040, m gen emplrel=. replace emplrel=1 if (PL040==3) replace emplrel=1 if (PL040==4) replace emplrel=2 if (PL040==1) replace emplrel=2 if (PL040==2) label define emplrel_lbl 1 "employee" 2 "self-employed" label values emplrel emplrel_lbl tab2 emplrel PL040, m * b) * Self-employed were split according to the number of persons working at the local unit * adequate variable in EU-SILC is PL130 * generating new variable "emplno" gen emplno=. replace emplno=1 if (PL130<=9) replace emplno=2 if (PL130>=10 & PL130<=13) replace emplno=1 if (PL130==14) replace emplno=2 if (PL130==15) label define emplno_lbl 1 "<10" 2">=10" label values emplno emplno_lbl bysort emplno: tab PL130, m * c) * Next differentiation is based on the managerial position * adequate variable in EU-SILC is PL150 * generating new variable "jbspv" gen jbspv=2 replace jbspv=1 if PL150==1 replace jbspv=2 if PL150==2 label define jbspv_lbl 1 "supervisory" 2 "nonsupervisory" label values jbspv jbspv_lbl tab2 PL150 jbspv, m * d) * now combine the basic employment situation with the number of persons at the local * unit and the managerial position * generating new variable "empstat" gen empstat=. replace empstat=1 if (emplrel==2 & emplno==2) replace empstat=2 if (emplrel==2 & emplno==1) replace empstat=3 if (emplrel==1 & jbspv==1) replace empstat=4 if (emplrel==1 & jbspv==2) label define empstat_lbl 1 "se10+" 2 "se<=10" 3 "sup" 4 "emp" label values empstat empstat_lbl tab empstat, m ****************************************************************************************** *** Stage 2: creation of ESEC88 * for ISCO-88, the corresponding variable in EU-SILC is PL050 *PT: PL050 categories 11,12=13 => 10 (Major group) tab PL050 if PB020 =="PT" recode PL050 /// 13 =10 /// if PB020 == "PT" // only Portugal tab PL050,m gen ESEC88=PL050 ***blocks of syntax for each employment status variable*** *self-employed 10+ recode ESEC88 /// 1 10 11 12 12 13 21 22 23 24 31 32 33 34 41 42 51 52 61 71 72 73 74 81 82 83 91 92 93 20 30 40 50 60 70 80 90 =1 /// if empstat ==1 tab ESEC88, m * self-employed <=10 recode ESEC88 /// 1 11 20 21 22 24 =1 /// 23 31 32 =2 /// 10 12 13 30 33 34 40 41 42 50 51 52 70 71 72 73 74 80 81 82 83 90 91 93 =4 /// 60 61 92 =5 /// if empstat ==2 tab ESEC88, m * supervisors recode ESEC88 /// 1 10 11 12 20 21 22 24 =1 /// 13 23 30 31 32 33 34 40 41 42 =2 /// 50 51 52 60 61 70 71 72 73 74 80 81 82 83 90 91 92 93 =6 /// if empstat==3 tab ESEC88, m * employees recode ESEC88 /// 1 10 11 12 20 21 22 24 =1 /// 13 23 31 32 =2 /// 30 33 34 40 41 42 =3 /// 73 =6 /// 50 51 52 =7 /// 60 61 70 71 72 74 =8 /// 80 81 82 83 90 91 92 93 =9 /// if empstat==4 tab ESEC88, m lab def ESEC88 /// 1 "Large employers, higher mgrs/professionals" /// 2 "Lower mgrs/professionals, higher supervisory/technicians" /// 3 "Intermediate occupations" /// 4 "Small employers and self-employed (non-agriculture)" /// 5 "Small employers and self-employed (agriculture)" /// 6 "Lower supervisors and technicians" /// 7 "Lower sales and service" /// 8 "Lower technical" /// 9 "Routine" lab value ESEC88 ESEC88 ************************************************************************************** * check the new created variables tab ESEC88 empstat, m * not all variables needed for generating ESEC are available for all respondents. This is especially * true for countries using the concept of "selected respondents" (DK, FI, IS, NL, NO, SE, SI). In these countries * the variables PL130 (size ...) and PL150 (managerial status) are available only for selected respondents. * That is, in these countries ESEC can not be generated for PX040 = 3 (not selected respondent) because important * information is missing * tab PB020 PX040,m * tab PL130 PX040,m * tab PL150 PX040,m * tab ESEC88 PX040, m * ESEC for 'not selected respondent' is set to missing value * replace ESEC88=. if PX040==3 tab ESEC88,m * ESEC for people, there is no information about status in employment available is set to missing value * replace ESEC88=. if PL040>4 replace ESEC88=. if PL040==. tab ESEC88,m * Moreover, because PL130 is not asked for respondents currently not working, ESeC can not be assigned to these respondents replace ESEC88=. if PL130==. tab ESEC88,m numlabel, add tab ESEC88 *tab PB020 ESEC88, nof row *tab ESEC88 empstat, m log close