******************************************************************************** /* Citation: Oxford Poverty and Human Development Initiative (OPHI), University of Oxford. 2020 Global Multidimensional Poverty Index - Seychelles QLFS 2019 [STATA do-file]. Available from OPHI website: http://ophi.org.uk/ For further queries, contact: ophi@qeh.ox.ac.uk */ ******************************************************************************** clear all set more off set maxvar 10000 set mem 500m *** Working Folder Path *** global path_in "../rdta/Seychelles QLFS 2019" global path_out "cdta" global path_ado "ado" ******************************************************************************** *** SEYCHELLES QLFS 2019 *** ******************************************************************************** /*Note on microdata: The Seychelles Quarterly Labor Force Survey (QLFS) microdata is not available on the public platform. The microdata was provided by the National Bureau of Statistics (NBS) through a joint agreement between OPHI and NBS solely for computing and publishing the global MPI aggregates. Indicators: This data has 8 of the 10 global MPI indicators. Information on school attendance and cooking fuel is not available in the data. */ ******************************************************************************** *** Step 1: Data preparation *** Generating individual identifier & demographic variables ******************************************************************************** use "$path_in/Q3_2019.dta" ***Identifier gen double hh_id = form_number*1000 format hh_id %20.0g label var hh_id "Household ID" gen double ind_id = form_number*1000 + member_serial*10 format ind_id %20.0g label var ind_id "Individual ID" duplicates report ind_id age sort ind_id age quietly by ind_id age: gen dup = cond(_N==1,0,_n) tab dup list hh_id ind_id age relation_to_head member_sex dob if dup>0 drop if dup>0 drop dup duplicates report ind_id age //re-check. no duplicates. 3,539 observations. bysort hh_id: gen id = _n count if id==1 //1,086 households count //3,539 individuals duplicates report ind_id age //No duplicates. ***Sample weight clonevar weight_hh = WeightsDis label var weight_hh "Sample weight" sum weight_hh ***Area: urban or rural //In Seychelles, the data do not make distinction between urban and rural. gen area = . label define lab_area 1 "urban" 0 "rural" label values area lab_area label var area "Area: urban-rural" ***Sex codebook member_sex clonevar sex = member_sex destring sex, replace force label define lab_sex 1"male" 2"female" label values sex lab_sex label var sex "Sex of household member" codebook sex ***Age of household member (0-110 years) codebook age, tab (9999) label var age "Age of household member" sum age //Age group (for global MPI estimation) recode age (0/4 = 1 "0-4")(5/9 = 2 "5-9")(10/14 = 3 "10-14") /// (15/17 = 4 "15-17")(18/59 = 5 "18-59")(60/max=6 "60+"), gen(agec7) lab var agec7 "age groups (7 groups)" recode age (0/9 = 1 "0-9") (10/17 = 2 "10-17")(18/59 = 3 "18-59") /// (60/max=4 "60+") , gen(agec4) lab var agec4 "age groups (4 groups)" recode age (0/17 = 1 "0-17") (18/max = 2 "18+"), gen(agec2) lab var agec2 "age groups (2 groups)" ***Household Size gen member = 1 bysort hh_id: egen hhsize = sum(member) label var hhsize "Household size" tab hhsize, miss compare hhsize household_size /*The variable household_size was constructed by data providers. The mismatch between the hhsize variable we constructed based on the current observations that exist in this file versus the variable that came with this data indicate different approaches in data cleaning.*/ drop member household_size ***Marital status //Question was asked from individuals 15 years and older. destring marital_status, replace force codebook marital_status, tab (99) count if age<15 //809 individuals 14 years and younger tab age if marital_status==.,m //Question on marital was not asked from all individuals 14 years and younger gen marital = 1 if marital_status == 1 //1: Never married replace marital = 2 if marital_status == 2 | marital_status == 3 //2: Currently married / co-habiting replace marital = 3 if marital_status == 6 //3: Widowed replace marital = 4 if marital_status == 5 //4: Divorced replace marital = 5 if marital_status == 4 //5: Separated/not living together replace marital = . if marital_status == . label define lab_mar 1"never married" 2"currently married" 3"widowed" /// 4"divorced" 5"not living together" label values marital lab_mar label var marital "Marital status of household member" tab marital, miss tab marital_status marital, miss ***Subnational region gen region = . lab var region "Region for subnational decomposition" ******************************************************************************** *** Step 2 Data preparation *** *** Standardization of the 10 Global MPI indicators *** Identification of non-deprived & deprived individuals ******************************************************************************** ******************************************************************************** *** Step 2.1 Years of Schooling *** ******************************************************************************** /* b1: What is the highest level of education that has been completed Education and literacy related information were collected from all individuals aged 15 years and older. */ codebook b1, tab (99) clonevar edulevel = b1 destring edulevel, replace force codebook edulevel, tab (99) label def lab_edu 0"No schooling/ineligible" 1"Primary" 2"Secondary" /// 3"Advanced level" 4"National Diploma" /// 5"Polytechnic" 6"1st Degree" 7"Postgraduate & higher" label value edulevel lab_edu label var edulevel "Highest level of education attended" codebook edulevel, tab (99) tab age if edulevel==.,m replace edulevel = 0 if age<15 /*Cleaning inconsistencies: The variables edulevel was replaced with a '0' given that the 'b1' question was collected from all individuals aged 15 years and older */ tab edulevel, miss /*30 individuals who are 15 years and older who should have provided information on their highest level of education that has been completed did not do so. Hence missing value.*/ codebook b1c, tab (99) destring b1c, replace force tab b1c edulevel,miss /*The question on level of certificate was only asked from those in advance/ tertiary education */ /*A control variable is created on whether there is information on years of education for at least 2/3 of the household members aged 15 years and older */ gen temp = 1 if edulevel!=. & age>=15 & age!=. bysort hh_id: egen no_missing_edu = sum(temp) /*Total household members who are 15 years and older with no missing years of education */ gen temp2 = 1 if age>=15 & age!=. bysort hh_id: egen hhs = sum(temp2) /*Total number of household members who are 15 years and older */ replace no_missing_edu = no_missing_edu/hhs replace no_missing_edu = (no_missing_edu>=2/3) /*Identify whether there is information on years of education for at least 2/3 of the household members aged 15 years and older */ tab no_missing_edu, miss //The value for 0 (missing) is 0.96% label var no_missing_edu "No missing edu for at least 2/3 of the HH members aged 15 years & older" drop temp temp2 hhs *** Standard MPI *** /*The entire household is considered deprived if no household member aged 15 years or older has primary or more schooling. Since the data lack information on years in school, we assume, all members who reported as having completed primary schooling corresponds to completing 6 years of education. This was further confirmed by NBS, that the highest level of completion translates to completion of the final grade within each level of education. For example: Primary -6 years education (Compulsory); 2 Secondary-11 years of education (Compulsory)*/ ******************************************************************* gen years_edu6 = (edulevel>=1) /* The years of schooling indicator takes a value of "1" if at least someone in the hh has reported primary education or more */ replace years_edu6 = . if edulevel==. bysort hh_id: egen hh_years_edu6_1 = max(years_edu6) gen hh_years_edu6 = (hh_years_edu6_1==1) replace hh_years_edu6 = . if hh_years_edu6_1==. replace hh_years_edu6 = . if hh_years_edu6==0 & no_missing_edu==0 lab var hh_years_edu6 "Household has at least one member with 6 years of edu" tab hh_years_edu6, miss *** Destitution MPI *** /* Since the data lack years in schooling and assumes that all those with primary schooling has completed 6 years of schooling, then the destitution MPI=Standard MPI for Years of Schooling. */ ******************************************************************* clonevar hh_years_edu_u = hh_years_edu6 lab var hh_years_edu_u "Household has at least one member with 1 year of edu" tab hh_years_edu_u, miss ******************************************************************************** *** Step 2.2 School Attendance *** ******************************************************************************** /*b2: Are you currently attending school or training? But limited to 15 year old and older individuals. School enrollment ratio in primary in Seychelles is 100, while it is 81 at the secondary level. Source: https://data.worldbank.org/indicator/SE.PRM.ENRR https://data.worldbank.org/indicator/SE.SEC.ENRR We may assume that all children between the age of 6-12 years (primary school age) are in school. But this is not possible for children 13 and 14 years who are in secondary school. While there is evidence that primary enrollment is full, this is not the case for secondary level. As such for the global MPI, we identfiy the school attendance indicator as missing. In this case, years of schooling receives the 1/3 dimension weight. */ destring b2, replace force codebook b2, tab (99) sum age if b2!=. gen hh_child_atten = . lab var hh_child_atten "Household has all school age children up to class 8 in school" gen hh_child_atten_u = . lab var hh_child_atten_u "Household has at least one school age children up to class 6 in school" ******************************************************************************** *** Step 2.3 Nutrition *** ******************************************************************************** ******************************************************************************** *** Step 2.3.a Underweight, Stunting & Wasting for Children Under 5 ******************************************************************************** *** Variable: SEX *** codebook sex, tab (9) //"1" for male ;"2" for female clonevar gender = sex tab gender *** Variable: AGE *** destring dob_count, gen(dob_count_destring) //Date of birth (dob) sum dob_count_destring count if dob_count_destring < 0 tab age if dob_count_destring < 0 replace dob_count_destring = age if dob_count_destring < 0 //11 individuals replaced with 0 years, following the age variable gen age_months = dob_count_destring*12 sum age_months count if age_months<=60 //267 children 60 months and younger gen age_days = trunc(age_months*30.4375) *** Variable: AGE UNIT *** gen str6 ageunit = "days" lab var ageunit "Days" *** Variable: BODY WEIGHT (KILOGRAMS) *** sum repeatanthropometrychild_anthro8 //Weight in kg sum age if repeatanthropometrychild_anthro8!=. //Weight in kg collected from child 0-5 years clonevar weight = repeatanthropometrychild_anthro8 sum weight if age_months <=60 *** Variable: HEIGHT (CENTIMETERS) sum repeatanthropometrychild_anthr01 //Height in cm sum age if repeatanthropometrychild_anthr01!=. //Height in cm collected from child 0-5 years clonevar height = repeatanthropometrychild_anthr01 count if repeatanthropometrychild_anthr01<1.3 //13 cases with extreme height value count if repeatanthropometrychild_anthr01>=3 & repeatanthropometrychild_anthr01<13 //4 cases with extreme height value replace height = repeatanthropometrychild_anthr01*100 if repeatanthropometrychild_anthr01<=1.3 //Adjust from meter to cm for selected extreme values replace height = repeatanthropometrychild_anthr01*10 if repeatanthropometrychild_anthr01>=3 & repeatanthropometrychild_anthr01<13 //We adjust these extreme values sum height if age_months <=60 *** Variable: MEASURED STANDING/LYING DOWN clonevar measure = repeatanthropometrychild_anthr02 replace measure = "l" if repeatanthropometrychild_anthr02=="98" replace measure = "h" if repeatanthropometrychild_anthr02=="99" replace measure = " " if repeatanthropometrychild_anthr02==" " tab measure if age_months <=60,m *** Variable: OEDEMA *** gen oedema = "n" *** Variable: SAMPLING WEIGHT *** /* We don't require individual weight to compute the z-scores of a child. So we assume all children in the sample have the same weight */ gen sw = 1 *** Indicate to STATA where the igrowup_restricted.ado file is stored: adopath + "$path_ado/igrowup_stata" gen str100 reflib = "$path_ado/igrowup_stata" lab var reflib "Directory of reference tables" gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" gen str30 datalab = "children_nutri_syc" lab var datalab "Working file" igrowup_restricted reflib datalib datalab gender age_days ageunit weight /// height measure oedema sw use "$path_out/children_nutri_syc_z_rc.dta", clear gen underweight = (_zwei < -2.0) replace underweight = . if _zwei == . | _fwei==1 lab var underweight "Child is undernourished (weight-for-age) 2sd - WHO" tab underweight if age_months <=60, miss gen stunting = (_zlen < -2.0) replace stunting = . if _zlen == . | _flen==1 lab var stunting "Child is stunted (length/height-for-age) 2sd - WHO" tab stunting if age_months <=60, miss gen wasting = (_zwfl < - 2.0) replace wasting = . if _zwfl == . | _fwfl == 1 lab var wasting "Child is wasted (weight-for-length/height) 2sd - WHO" tab wasting if age_months <=60 & age <5, miss tab wasting [iw=weight_hh] if age_months <=60 & age <5, miss *** Destitution indicator *** gen underweight_u = (_zwei < -3.0) replace underweight_u = . if _zwei == . | _fwei==1 lab var underweight_u "Child is undernourished (weight-for-age) 3sd - WHO" gen stunting_u = (_zlen < -3.0) replace stunting_u = . if _zlen == . | _flen==1 lab var stunting_u "Child is stunted (length/height-for-age) 3sd - WHO" gen wasting_u = (_zwfl < - 3.0) replace wasting_u = . if _zwfl == . | _fwfl == 1 lab var wasting_u "Child is wasted (weight-for-length/height) 3sd - WHO" count if _fwei==1 | _flen==1 /*Seychelles QLFS 2019: 20 children were replaced as missing because they have extreme z-scores which are biologically implausible. */ rename weight weight_u5 rename height height_u5 drop reflib datalib datalab *** No Eligible Children for Nutrition gen child_eligible = (age_months <=60) tab child_eligible,m bysort hh_id: egen n_child_eligible = sum(child_eligible) gen no_child_eligible = (n_child_eligible==0) lab var no_child_eligible "Household has no eligible children under 5" tab no_child_eligible, miss *** Standard MPI tab underweight if age_months <=60, miss bysort hh_id: egen temp = max(underweight) tab temp, miss gen hh_no_underweight = (temp==0) //Takes a value of '1' if no child in the household is underweight replace hh_no_underweight = . if temp==. replace hh_no_underweight = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_underweight "Household has no child underweight - 2 stdev" tab hh_no_underweight if age_months <=60, miss tab stunting if age_months <=60, miss bysort hh_id: egen temp = max(stunting) tab temp, miss gen hh_no_stunting = (temp==0) //Takes a value of '1' if no child in the household is stunted replace hh_no_stunting = . if temp==. replace hh_no_stunting = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_stunting "Household has no child stunted - 2 stdev" tab hh_no_stunting if age_months <=60, miss gen uw_st = 1 if stunting==1 | underweight==1 replace uw_st = 0 if stunting==0 & underweight==0 replace uw_st = . if stunting==. & underweight==. tab uw_st, miss tab uw_st if age_months <=60, miss bysort hh_id: egen temp = max(uw_st) tab temp, miss gen hh_no_uw_st = (temp==0) /*Takes a value of '1' if no child in the household is underweight or stunted */ replace hh_no_uw_st = . if temp==. replace hh_no_uw_st = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_uw_st "Household has no child underweight or stunted" tab hh_no_uw_st if age_months <=60, miss *** Destitution MPI tab underweight_u, miss tab underweight_u if age_months <=60, miss bysort hh_id: egen temp = max(underweight_u) tab temp, miss gen hh_no_underweight_u = (temp==0) //Takes a value of '1' if no child in the household is severely underweight replace hh_no_underweight_u = . if temp==. replace hh_no_underweight_u = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_underweight_u "Destitute: Household has no child underweight" tab hh_no_underweight_u if age_months <=60, miss tab stunting_u, miss tab stunting_u if age_months <=60, miss bysort hh_id: egen temp = max(stunting_u) tab temp, miss gen hh_no_stunting_u = (temp==0) //Takes a value of '1' if no child in the household is severely stunted replace hh_no_stunting_u = . if temp==. replace hh_no_stunting_u = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_stunting_u "Destitute: Household has no child stunted" tab hh_no_stunting_u if age_months <=60, miss gen uw_st_u = 1 if stunting_u==1 | underweight_u==1 replace uw_st_u = 0 if stunting_u==0 & underweight_u==0 replace uw_st_u = . if stunting_u==. & underweight_u==. tab uw_st_u, miss tab uw_st_u if age_months <=60, miss bysort hh_id: egen temp = max(uw_st_u) tab temp, miss gen hh_no_uw_st_u = (temp==0) /*Takes a value of '1' if no child in the household is severely underweight or stunted */ replace hh_no_uw_st_u = . if temp==. replace hh_no_uw_st_u = 1 if no_child_eligible==1 //Households with no eligible children will receive a value of 1 drop temp lab var hh_no_uw_st_u "Destitute: Household has no child underweight or stunted" tab hh_no_uw_st_u if age_months <=60, miss ******************************************************************************** *** Step 2.3.b BMI-for-age for individuals above 5 years & under 20 years ******************************************************************************** count if age_months> 60 & age_months<= 240 //797 individuals above 59 month & under 240 months tab age if age_months> 60 & age_months<= 240 //All 797 are between 5 - 19 years *** Variable: BODY WEIGHT (KILOGRAMS) *** /*The weight variable for young person (5-19 years) is stored in two different variables: repeatanthropometrymale_female_3 & repeatanthropometrymale_female_5. -repeatanthropometrymale_female_3 is weight in kg for a female household member. -repeatanthropometrymale_female_5 is weight in kg for a male household member */ sum repeatanthropometrymale_female_3 if age_months> 60 & age_months<= 240 sum repeatanthropometrymale_female_5 if age_months> 60 & age_months<= 240 clonevar weight = repeatanthropometrymale_female_3 replace weight = repeatanthropometrymale_female_5 if /// repeatanthropometrymale_female_3==. //combine weight information from men and women into a single variable replace weight = repeatanthropometrychild_anthro8 if weight==. & /// age_months>60 & age_months<=240 /*replaced young children who have missing data on weight but have the data on weight in the variable applied for children under 5: 46 young children */ replace weight = . if weight==0 & age_months>60 & age_months<=240 //All missing values or out of range are replaced as "." sum weight if age_months> 60 & age_months<= 240 *** Variable: HEIGHT (CENTIMETERS) /*The height variable for young person (5-19 years) is stored in two different variables: repeatanthropometrymale_female_4 & repeatanthropometrymale_female_6. -repeatanthropometrymale_female_4 is height in kg for a female household member. -repeatanthropometrymale_female_6 is height in kg for a male household member */ sum repeatanthropometrymale_female_4 if age_months> 60 & age_months<= 240 sum repeatanthropometrymale_female_6 if age_months> 60 & age_months<= 240 clonevar height = repeatanthropometrymale_female_4 replace height = repeatanthropometrymale_female_6 if /// repeatanthropometrymale_female_4==. //combine weight information from men and women into a single variable replace height = repeatanthropometrychild_anthr01 if height==. & /// age_months>60 & age_months<=240 /*replaced young children who have missing data on height but have the data on height in the variable applied for children under 5: 38 young children */ replace height = height*100 if height>=1 & height<3 & /// age_months>60 & age_months<=240 //replace extreme values: 50 replacements replace height = . if height==0 & age_months>60 & age_months<=240 //All missing values or out of range are replaced as "." sum height if age_months> 60 & age_months<= 240 adopath + "$path_ado/who2007_stata" gen str100 reflib = "$path_ado/who2007_stata" lab var reflib "Directory of reference tables" gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" gen str30 datalab = "young_nutri_syc" lab var datalab "Working file" /*We now run the command to calculate the z-scores with the adofile */ who2007 reflib datalib datalab gender age_days ageunit weight height oedema sw use "$path_out/young_nutri_syc_z.dta", clear gen z_bmi = _zbfa replace z_bmi = . if _fbfa==1 lab var z_bmi "z-score bmi-for-age WHO" gen low_bmiage = (z_bmi < -2.0) replace low_bmiage = . if z_bmi==. lab var low_bmiage "Young person with low bmi 2sd - WHO" tab low_bmiage if (age_months> 60 & age_months<= 240), miss gen low_bmiage_u = (z_bmi < -3.0) replace low_bmiage_u = . if z_bmi==. lab var low_bmiage_u "Young person with very low bmi 3sd - WHO" tab low_bmiage_u if (age_months> 60 & age_months<= 240), miss rename weight weight_yp rename height height_yp ******************************************************************************** *** Step 2.3.c BMI & BMI-for-age for individuals 5-70 years ******************************************************************************** count if age_months>=0 & age_months!=. //3,522 individuals count if age_months>60 & age_months<=840 //2,992 individuals 5-70 years count if age_months>240 & age_months<=840 //2,195 individuals who are 20-70 years *** No Eligible adult or young person gen adult_eligible = (age_months>60 & age_months<=840) replace adult_eligible = 1 if age>=15 & age <=70 tab adult_eligible,m bysort hh_id: egen n_adult_eligible = sum(adult_eligible) gen no_adult_eligible = (n_adult_eligible==0) lab var no_adult_eligible "Household has no eligible adults tab no_adult_eligible, miss *** Variable: BODY WEIGHT (KILOGRAMS) *** clonevar weight = repeatanthropometrymale_female_3 replace weight = repeatanthropometrymale_female_5 if repeatanthropometrymale_female_3==. & repeatanthropometrymale_female_5!=. replace weight = . if weight==0 //Replace unreasonable value sum weight *** Variable: HEIGHT (CENTIMETERS) clonevar height = repeatanthropometrymale_female_4 replace height = repeatanthropometrymale_female_6 if repeatanthropometrymale_female_4==. & repeatanthropometrymale_female_6!=. replace height=height*100 if height>=1 & height<3 //Replace values in meters to cm replace height = . if height==0 //Replace unreasonable value sum height *** Variable: BMI MEASURE *** gen bmi=(weight)/((height/100)^2) lab var bmi "BMI" replace bmi=. if bmi>=80 //Replace extreme BMI value *** Standard MPI: BMI-for-age for individuals 5-19 years *** and BMI for individuals 20-70 years *** ******************************************************************* gen low_bmi = (bmi<18.5) replace low_bmi=. if bmi==. replace low_bmi = . if age>70 & age<. /*Replace individuals who are older than 70 years with '.' even if they had provided nutrition information since the global MPI does not take into account of nutrition information of those above 70 years. */ lab var low_bmi "BMI <18.5" gen low_bmi_byage = 0 lab var low_bmi_byage "Individuals with low BMI or BMI-for-age" replace low_bmi_byage = 1 if low_bmi==1 //Replace variable "low_bmi_byage = 1" if adult have low BMI //Replacement for young person: replace low_bmi_byage = 1 if low_bmiage==1 & age_month<=240 & low_bmi<. replace low_bmi_byage = 0 if low_bmiage==0 & age_month<=240 & low_bmi<. /*Note: The following control variable is applied when there is BMI information for adults and BMI-for-age for teenagers.*/ replace low_bmi_byage = . if low_bmi==. & low_bmiage==. bysort hh_id: egen d_bmi = max(low_bmi_byage) gen hh_no_low_bmiage = (d_bmi==0) /*Households take a value of '1' if all eligible adults and teenagers in the household has normal bmi or bmi-for-age */ replace hh_no_low_bmiage = . if d_bmi==. /*Households take a value of '.' if there is no information from eligible individuals in the household */ drop d_bmi lab var hh_no_low_bmiage "Household has no adult or young person with low BMI or BMI-for-age" tab hh_no_low_bmiage, miss *** Destitution MPI: BMI-for-age for individuals 5-19 years *** and BMI for individuals 20-70 years *** ******************************************************************************** gen low_bmi_u = (bmi<17) replace low_bmi_u = . if bmi==. replace low_bmi_u = . if age>70 & age<. lab var low_bmi_u "BMI <17" gen low_bmi_byage_u = 0 replace low_bmi_byage_u = 1 if low_bmi_u==1 /*Replace variable "low_bmi_byage_u = 1" if adults have low BMI (destitute cutoff)*/ //Replacement for young person: replace low_bmi_byage_u = 1 if low_bmiage_u==1 & age_month<=240 & low_bmi_u<. replace low_bmi_byage_u = 0 if low_bmiage_u==0 & age_month<=240 & low_bmi_u<. /*Note: The following control variable is applied when there is BMI information for adults and BMI-for-age for teenagers. */ replace low_bmi_byage_u = . if low_bmi_u==. & low_bmiage_u==. bysort hh_id: egen d_bmi = max(low_bmi_byage_u) gen hh_no_low_bmiage_u = (d_bmi==0) /*Households take a value of '1' if all eligible adults and teenagers in the household has normal bmi or bmi-for-age (destitution cutoff) */ replace hh_no_low_bmiage_u = . if d_bmi==. /*Households take a value of '.' if there is no information from eligible individuals in the household */ drop d_bmi lab var hh_no_low_bmiage_u "Household has no adult or young person with low BMI or BMI-for-age(<17/-3sd)" tab hh_no_low_bmiage_u, miss rename weight weight_kg rename height height_cm ******************************************************************************** *** Step 2.3.d Household Nutrition Indicator *** ******************************************************************************** /*Note: SYC 2019: Anthropometric information were recorded for all individuals. For the purpose of the global MPI, we have used nutrition data when the data is available for all individuals but up to the age of 70 years. Hence, we make use of the anthropometric data for women and men aged 15-70 years. The age cut-off is captured through the eligibility criteria*/ *** No Eligible Women, Men or Children for Nutrition gen nutri_eligible = age<=70 bysort hh_id: egen n_nutri_eligible = sum(nutri_eligible) gen no_nutri_eligible = (n_nutri_eligible==0) lab var no_nutri_eligible "Household has no eligible women, men, or children" tab no_nutri_eligible, miss *** Standard MPI *** /* Members of the household are considered deprived if the household has a child under 5 whose height-for-age or weight-for-age is under two standard deviation below the median, or has young person with BMI-for-age that is under two standard deviation below the median, or has adults with BMI threshold that is below 18.5 kg/m2. Households that have no eligible adult AND no eligible children are considered non-deprived. The indicator takes a value of missing only if all eligible adults and eligible children have missing information in their respective nutrition variable. */ ************************************************************************ gen hh_nutrition_uw_st = 1 replace hh_nutrition_uw_st = 0 if hh_no_low_bmiage==0 | hh_no_uw_st==0 replace hh_nutrition_uw_st = . if hh_no_low_bmiage==. & hh_no_uw_st==. replace hh_nutrition_uw_st = . if hh_no_low_bmiage==. & /// hh_no_uw_st==1 & no_child_eligible==1 /*Replace indicator as missing if household has eligible adult with missing nutrition information and no eligible child for anthropometric measures */ replace hh_nutrition_uw_st = . if hh_no_uw_st==. & /// hh_no_low_bmiage==1 & no_adult_eligible==1 /*Replace indicator as missing if household has eligible child with missing nutrition information and no eligible adult for anthropometric measures */ replace hh_nutrition_uw_st = 1 if no_nutri_eligible==1 /*We replace households that do not have the applicable population, that is, women and men up to 70 years and children under 5, as non-deprived in nutrition*/ lab var hh_nutrition_uw_st "Household has no child underweight/stunted or adult deprived by BMI/BMI-for-age" tab hh_nutrition_uw_st,miss *** Destitution MPI *** /* Members of the household are considered deprived if the household has a child under 5 whose height-for-age or weight-for-age is under three standard deviation below the median, or has young person with BMI-for-age that is under three standard deviation below the median, or has adults with BMI threshold that is below 17.0 kg/m2. Households that have no eligible adult AND no eligible children are considered non-deprived. The indicator takes a value of missing only if all eligible adults and eligible children have missing information in their respective nutrition variable. */ ************************************************************************ gen hh_nutrition_uw_st_u = 1 replace hh_nutrition_uw_st_u = 0 if hh_no_low_bmiage_u==0 | hh_no_uw_st_u==0 replace hh_nutrition_uw_st_u = . if hh_no_low_bmiage_u==. & hh_no_uw_st_u==. replace hh_nutrition_uw_st_u = . if hh_no_low_bmiage_u==. & /// hh_no_uw_st_u==1 & no_child_eligible==1 replace hh_nutrition_uw_st_u = . if hh_no_uw_st_u==. & /// hh_no_low_bmiage_u==1 & no_adult_eligible==1 replace hh_nutrition_uw_st_u = 1 if no_nutri_eligible==1 lab var hh_nutrition_uw_st_u "Household has no child underweight/stunted or adult deprived by BMI/BMI-for-age" tab hh_nutrition_uw_st_u,miss ******************************************************************************** *** Step 2.4 Child Mortality *** ******************************************************************************** count if age>14 & age<. & sex==2 //1,430 women 15 years and older count if age>14 & age<. & sex==1 //1,307 men 15 years and older foreach var in repeatchild_mortalitywomenbirths /// repeatchild_mortalitywomenmore_5 repeatchild_mortalitymenfathered /// repeatchild_mortalitymenfathere0 repeatchild_mortalitymenmore_5_y { destring `var', replace } //Data from women clonevar girls_died = repeatchild_mortalitywomengirl clonevar boys_died = repeatchild_mortalitywomenboy //Data from men clonevar fathered_child = repeatchild_mortalitymenfathere0 replace fathered_child = 2 if repeatchild_mortalitymenfathered==2 clonevar girls_died_m = repeatchild_mortalitymengirl_1 clonevar boys_died_m = repeatchild_mortalitymenboy_1 //Death last five years **from women clonevar death_last5_years = repeatchild_mortalitywomendeaths tab death_last5_years, miss //0 = 0 death in the last five years reported by 72 women **from men clonevar death_last5_years_m = repeatchild_mortalitymendeaths_1 tab death_last5_years_m, miss //0 = 0 death in the last five years reported by 33 men codebook repeatchild_mortalitywomenbirths, tab (99) gen wom_birth = repeatchild_mortalitywomenbirths destring wom_birth, replace force codebook wom_birth, tab (99) lab define lab_birth 1"Given birth, child died" 2"Given birth, child alive" lab values wom_birth lab_birth lab var wom_birth "Ever given birth to a child who was born alive & later died" tab wom_birth, miss tab marital wom_birth if age>14 & age<. & sex==2,miss //Deprived if household experienced child mortality ***women codebook boys_died girls_died //boys_died: number of sons who have died //girls_died: number of daughters who have died egen temp_f = rowtotal(boys_died girls_died) //Total child mortality reported by eligible women replace temp_f = . if wom_birth==. & age>14 & age<. & sex==2 //Replace women 15 years and oder who have no birth information as missing replace temp_f = 0 if death_last5_years==0 & age>14 & age<. & sex==2 //Replace women 15 years and older who have no reported child mortality last five years bysort hh_id: egen child_mortality_f = sum(temp_f), missing lab var child_mortality_f "Occurrence of child mortality reported by women" tab child_mortality_f, miss drop temp_f ***men codebook boys_died_m girls_died_m //boys_died_m: number of sons who have died //girls_died_m: number of daughters who have died egen temp_m = rowtotal(boys_died_m girls_died_m) //Total child mortality reported by eligible men replace temp_m = 0 if fathered_child==2 & sex==1 & age>14 & age<. //Assign a value of "0" for eligible men who never fathered a child replace temp_m = . if fathered_child==. & sex==1 & age>14 & age<. replace temp_m = 0 if death_last5_years_m==0 & age>14 & age<. & sex==1 //Replace men 15 years and older who have no reported child mortality last five years bysort hh_id: egen child_mortality_m = sum(temp_m), missing lab var child_mortality_m "Occurrence of child mortality reported by men" tab child_mortality_m, miss drop temp_m egen child_mortality = rowtotal(child_mortality_f child_mortality_m) lab var child_mortality "Total child mortality within household reported by women & men" tab child_mortality, miss *** Standard MPI *** /* The standard MPI indicator takes a value of "0" if any child died in the last 5 years from the survey year. The indicator takes a value of "1" if household reported (i) no child mortality or (ii) if any child died longer than 5 years from the survey year. We take into account of information provided by men and women since all death reported are in the last five years. */ ************************************************************************ gen hh_mortality_5y = (child_mortality==0) /*Household is replaced with a value of "1" if there is no incidence of child mortality*/ replace hh_mortality_5y = . if child_mortality==. //Household is replaced with a value of "1" if there is no eligible women lab var hh_mortality_5y "Household had no child mortality in the last 5 years" tab hh_mortality_5y, miss gen hh_mortality_u18_5y = . *** Destitution MPI *** *** (same as standard MPI) *** ************************************************************************ clonevar hh_mortality_u = hh_mortality_5y ******************************************************************************** *** Step 2.5 Electricity *** ******************************************************************************** destring living_standardelectric_source, replace force rename living_standardelectric_source source_electricity label define lab_elec 1 "Own Electricity connection PUC" /// 2 "Own Electricity connection Generator" 3 "Shared meter-Branch from neighbour" /// 4 "No access" label val source_electricity lab_elec tab source_electricity, miss *** Standard MPI *** /*Members of the household are considered deprived if the household has no electricity */ **************************************** gen electricity = 1 replace electricity = 0 if source_electricity==4 label define lab_ect 1 "have electricity" 0 "no electricity" label values electricity lab_ect label var electricity "Household has electricity" tab electricity, miss *** Destitution MPI *** *** (same as standard MPI) *** **************************************** gen electricity_u = electricity label var electricity_u "Household has electricity" ******************************************************************************** *** Step 2.6 Sanitation *** ******************************************************************************** rename living_standardtoilet toilet destring toilet, replace force codebook toilet, tab (99) label define lab_toi 1"Flushed toilet" 2"Non-flushed toilet" 3"Other" label val toilet lab_toi tab toilet,m *** Standard MPI *** /*Members of the household are considered deprived if the household's sanitation facility is not improved or it is improved but shared with other households. No data on whether facility is shared */ ******************************************************************** gen toilet_mdg = 1 if toilet==1 replace toilet_mdg = 0 if toilet==2 | toilet==3 label define lab_tlt 1 "improved toilet" 0 "unimproved" label values toilet_mdg lab_tlt lab var toilet_mdg "Household has improved sanitation" tab toilet toilet_mdg, miss tab toilet_mdg, miss *** Destitution MPI *** /*Members of the household are considered deprived if household practises open defecation or uses other unidentifiable sanitation practises */ ******************************************************************** gen toilet_u = 1 replace toilet_u = 0 if toilet==3 lab var toilet_u "Household does not practise open defecation or others" tab toilet toilet_u, miss ******************************************************************************** *** Step 2.7 Drinking Water *** ******************************************************************************** destring living_standarddrinking , replace force clonevar water = living_standarddrinking label define lab_wtr 1"Treated water - main supply" /// 2"Other piped supply - private" 3 "Water truck (bowser)" /// 4 "River, spring or well" 5 "Rain catchment" 6 "Bottled water" 7 "Other" label val water lab_wtr tab water, miss rename living_standardother_drinking water_other *** Standard MPI *** /* Members of the household are considered deprived if the household does not have access to improved drinking water */ ******************************************************************** gen water_mdg = 1 replace water_mdg = 0 if water==4 | water==7 label define lab_wat 1 "improved water" 0 "unimproved" label values water_mdg lab_wat lab var water_mdg "Household has safe drinking water on premises" tab water water_mdg, miss tab water_mdg, miss *** Destitution MPI *** *** (same as standard MPI due to lack of time to water) *** **************************************** clonevar water_u = water_mdg lab var water_u "Household has safe drinking water (considering distance)" tab water water_u, miss ******************************************************************************** *** Step 2.8 Housing *** ******************************************************************************** /* Members of the household are considered deprived if the household has a dirt, sand, dung or other floor */ codebook housing_overcrowdednessfloor, tab (99) destring housing_overcrowdednessfloor, replace force clonevar floor = housing_overcrowdednessfloor label define lab_flo 1"Cement with no other material" 2"Cement with tiles" /// 3"Cement with parquet" 4"Wood" 5"Earth" 6"Other" label val floor lab_flo codebook floor, tab(99) codebook housing_overcrowdednessother_flo, tab (99) rename housing_overcrowdednessother_flo floor_other_spec //The categories related to other floor, largely are improved material codebook floor_other_spec, tab (99) gen floor_imp = 1 replace floor_imp = 0 if floor==5 //Deprived if mud/earth lab var floor_imp "Household has floor that it is not earth/sand/dung" tab floor floor_imp, miss /* Members of the household are considered deprived if the household has walls made of natural or rudimentary materials. */ codebook housing_overcrowdednesswall, tab (99) destring housing_overcrowdednesswall, replace force clonevar wall = housing_overcrowdednesswall label define lab_wal 1"Bricks/Stones" 2"Corrugated iron only" /// 3"Bricks/stones/wood/corrguate iron" 4"Other" label val wall lab_wal codebook wall, tab(99) codebook housing_overcrowdednessother_wal, tab (99) rename housing_overcrowdednessother_wal wall_other_spec //The categories related to other wall, largely are improved material. gen wall_imp = 1 lab var wall_imp "Household has wall that it is not of low quality materials" tab wall wall_imp, miss /* Members of the household are considered deprived if the household has roof made of natural or rudimentary materials. Roof data not available */ gen roof = . gen roof_imp = . lab var roof_imp "Household has roof that it is not of low quality materials" /*They have this question - Assessment of housing condition - in the questionnaire *Uninhabitable (not fit for human habitation) *Extremely poor (in need of immediate major repairs) *Poor (will require long term repairs) *Good condition but unhygienic *Satisfactory */ codebook housing_overcrowdednesshouse_con, tab (99) destring housing_overcrowdednesshouse_con, replace force clonevar housing = housing_overcrowdednesshouse_con label define lab_hou 1"Uninhabitable (not fit for human habitation)" /// 2 "Extremely poor (in need of immediate major repairs)" /// 3 "Poor (will require long term repairs)" /// 4 "Good condition but unhygienic" 5"Satisfactory" label val housing lab_hou lab var housing "Housing condition" tab housing,m tab floor housing,m tab wall housing, m tab wall_other_spec housing if wall==4,m *** Standard MPI *** /* Members of the household is deprived in housing if the roof, floor OR walls are constructed from low quality materials.*/ ************************************************************** gen housing_1 = 1 replace housing_1 = 0 if floor_imp==0 | wall_imp==0 | roof_imp==0 replace housing_1 = . if floor_imp==. & wall_imp==. & roof_imp==. lab var housing_1 "Household has roof, floor & walls that it is not low quality material" tab housing_1, miss *** Destitution MPI *** /* Members of the household is deprived in housing if two out of three components (roof and walls; OR floor and walls; OR roof and floor) the are constructed from low quality materials. */ ************************************************************** gen housing_u = 1 replace housing_u = 0 if (floor_imp==0 & wall_imp==0 & roof_imp==1) | /// (floor_imp==0 & wall_imp==1 & roof_imp==0) | /// (floor_imp==1 & wall_imp==0 & roof_imp==0) | /// (floor_imp==0 & wall_imp==0 & roof_imp==0) replace housing_u = . if floor_imp==. & wall_imp==. & roof_imp==. lab var housing_u "Household has one of three aspects(either roof,floor/walls) that is not low quality material" tab housing_u, miss ******************************************************************************** *** Step 2.9 Cooking Fuel *** ******************************************************************************** //No data on cooking fuel gen cooking_mdg = . lab var cooking_mdg "Household cooks with clean fuels" gen cooking_u = . lab var cooking_u "Household cooks with clean fuels" ******************************************************************************** *** Step 2.10 Assets ownership *** ******************************************************************************** rename living_standardasset1 radio rename living_standardasset2 television rename living_standardasset3 telephone rename living_standardasset4 refrigerator rename living_standardasset6 motorbike rename living_standardasset7 car tab radio,miss tab television,miss tab telephone,miss tab refrigerator,mis tab motorbike,miss tab car,miss gen bicycle = . gen computer = . gen animal_cart = . *** Standard MPI *** /* Members of the household are considered deprived in assets if the household does not own more than one of: radio, TV, telephone, bike, motorbike, refrigerator, computer or animal cart and does not own a car or truck.*/ ***************************************************************************** egen n_small_assets2 = rowtotal(television radio telephone refrigerator bicycle motorbike computer animal_cart), missing lab var n_small_assets2 "Household Number of Small Assets Owned" gen hh_assets2 = (car==1 | n_small_assets2 > 1) replace hh_assets2 = . if car==. & n_small_assets2==. lab var hh_assets2 "Household Asset Ownership: HH has car or more than 1 small assets incl computer & animal cart" tab hh_assets2,miss *** Destitution MPI *** /* Members of the household are considered deprived in assets if the household does not own any assets.*/ ***************************************************************************** gen hh_assets2_u = (car==1 | n_small_assets2>0) replace hh_assets2_u = . if car==. & n_small_assets2==. lab var hh_assets2_u "Household Asset Ownership: HH has car or at least 1 small assets incl computer & animal cart" tab hh_assets2_u [iw=weight_hh],miss ******************************************************************************** *** Step 2.11 Rename and keep variables for MPI calculation ******************************************************************************** //Sampling details gen psu = ea gen strata = district //Retain year, month & date of interview: gen year_interview = 2019 clonevar month_interview = month clonevar date_interview = today //No presence of nutrition subsample gen subsample = . //Rename sample weight rename weight_hh weight *** Rename key global MPI indicators for estimation *** recode hh_mortality_5y (0=1)(1=0) , gen(d_cm) recode hh_nutrition_uw_st (0=1)(1=0) , gen(d_nutr) recode hh_child_atten (0=1)(1=0) , gen(d_satt) recode hh_years_edu6 (0=1)(1=0) , gen(d_educ) recode electricity (0=1)(1=0) , gen(d_elct) recode water_mdg (0=1)(1=0) , gen(d_wtr) recode toilet_mdg (0=1)(1=0) , gen(d_sani) recode housing_1 (0=1)(1=0) , gen(d_hsg) recode cooking_mdg (0=1)(1=0) , gen(d_ckfl) recode hh_assets2 (0=1)(1=0) , gen(d_asst) *** Rename key global MPI indicators for destitution estimation *** recode hh_mortality_u (0=1)(1=0) , gen(dst_cm) recode hh_nutrition_uw_st_u (0=1)(1=0) , gen(dst_nutr) recode hh_child_atten_u (0=1)(1=0) , gen(dst_satt) recode hh_years_edu_u (0=1)(1=0) , gen(dst_educ) recode electricity_u (0=1)(1=0) , gen(dst_elct) recode water_u (0=1)(1=0) , gen(dst_wtr) recode toilet_u (0=1)(1=0) , gen(dst_sani) recode housing_u (0=1)(1=0) , gen(dst_hsg) recode cooking_u (0=1)(1=0) , gen(dst_ckfl) recode hh_assets2_u (0=1)(1=0) , gen(dst_asst) *** Total number of missing values for each variable *** mdesc psu strata area age /// d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst *** Keep main variables require for MPI calculation *** keep hh_id ind_id psu strata subsample weight area region agec4 agec2 /// d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst order hh_id ind_id psu strata subsample weight area region agec4 agec2 /// d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst *** Generate country and survey details for estimation *** char _dta[cty] "Seychelles" char _dta[ccty] "SYC" char _dta[year] "2019" char _dta[survey] "QLFS" char _dta[ccnum] "690" char _dta[type] "micro" char _dta[class] "new_country" *** Sort, compress and save data for estimation *** sort ind_id compress la da "Micro data for `_dta[ccty]' (`_dta[ccnum]') from `c(current_date)' (`c(current_time)')." save "$path_out/syc_qlfs19.dta", replace //Erase files from folder: erase "$path_out/children_nutri_syc_z_rc.xls" erase "$path_out/children_nutri_syc_prev_rc.xls" erase "$path_out/children_nutri_syc_z_rc.dta" erase "$path_out/young_nutri_syc_z.xls" erase "$path_out/young_nutri_syc_prev.xls" erase "$path_out/young_nutri_syc_z.dta"