*********************************************************************************************************************** ** Human Development Report Office (HDRO), United Nations Development Programme ** Multidimensional Poverty Index 2026 release ** Methodology developed in partnership with the Oxford Poverty and Human Development Initiative, University of Oxford ************************************************************************************************************************ clear all set more off set maxvar 10000 set mem 500m cap log close *** Working Folder Path *** global path_in "C:\UNDP\MPI\MPI_Computation\MPI_2026\National\Egypt_FHS_2021\Egypt_FHS2021_StataDataset" global path_out "C:\UNDP\MPI\MPI_Computation\MPI_2026\National\Egypt_FHS_2021\Outputs" global path_logs "C:\UNDP\MPI\MPI_Computation\MPI_2026\National\Egypt_FHS_2021" global path_qc "C:\UNDP\MPI\MPI_Computation\MPI_2026\National\Egypt_FHS_2021" global path_ado "C:" *** Log file *** log using "$path_logs/Egypt_fhs21_dataprep.log", replace ******************************************************************************** *** Egypt FHS 2021*** ******************************************************************************** ******************************************************************************** *** Step 1: Data preparation *** Selecting variables from BR, IR, & MR recode & merging with PR recode ******************************************************************************* /* In Egypt FHS 2021, height and weight measurements were collected from children (0-5) and women (15-49) and youth (6-19) from the 50% of the households selected for the biomarker questionnaire.*/ ******************************************************************************* **Preparation for Nutrition indicator ******************************************************************************* use "$path_in/HHMEMDATA.dta", clear rename _all, lower *** Generate individual unique key variable required for data merging *** qhclust=cluster number; *** qhnumber=household number; *** qh01=child's line number in household gen double ind_id = qhclust*1000000 + qhnumber*100 + qh01 format ind_id %20.0g label var ind_id "Individual ID" duplicates report ind_id duplicates tag ind_id, gen(duplicates) tab qwresi if duplicates!=0 *** Variable: SEX *** lookfor sex tab qh04, miss //"1" for male ;"2" for female tab qh04, nol clonevar gender = qh04 desc gender tab gender *** Variable: AGE *** ********************* lookfor age *qh07=Age of household members (in years) gen age=qh07 *Under-five children age (in months) *Child's age_month based on CMC date for child's birth and Date of interview. lookfor CMC codebook qhintc qccmc gen age_monthsU5=(qhintc-qccmc) sum age_monthsU5 tab age_monthsU5 age if age_monthsU5>=60 /*Inconsistencies in the age_months and age (years) variables, where the age_months>60 (i.e. 5 years) for 2550 samples but 5 years or under in age(years) variable.*/ /* *Just for checking*** *Alternatively, we construct the month_age based on date of birth and interview manually *qb103d=Birth day; qb103m=Birth month; qb103y=Birth year tab1 qb103d qb103m qb103y, nol gen yeardob=qb103y replace yeardob=. if yeardob==9998 gen monthdob=qb103m replace monthdob=. if monthdob==98 gen daydob=qb103d replace daydob=. if daydob==98 *Imputing missing day of birth if month and year of birth is non-missing count if daydob>31 & monthdob<=12 & yeardob<9999 *browse yeardob monthdob daydob if daydob>31 & monthdob<=12 & yeardob<9999 replace daydob=15 if daydob>31 & monthdob<=12 & yeardob<9999 *Checking if missing in month of birth and year of birth count if monthdob>12 & daydob<=31 & yeardob<9999 count if monthdob<=12 & daydob<=31 & yeardob==. gen bdate=mdy(monthdob, daydob, yeardob) format bdate %td *Constructing interview day variable *qhintd =Interview day; qhintm=Interview month; qhinty=Interview year tab1 qhintm qhintd qhinty, nol *No any missing values gen Interviewdate=mdy(qhintm, qhintd, qhinty) format Interviewdate %td //Calculate birth date in days from date of interview gen temp_age_months = (Interviewdate-bdate)/30.4375 tab temp_age_months sum temp_age_months gen test_age_months=floor(temp_age_months) compare test_age_months age_monthsU5 *Majority of the samples align, but deviation by single month for around 46% samples *We proceed with age_monthsU5 variable for further computation. drop test_age_months */ *For Youth (6-19 years) *** Variable: AGE IN MONTHS *** codebook qccmc qhintc gen age_months_youth=qhintc-qycmc lab var age_months_youth "Age in months, individuals 6-19 years" gen age_year=age_months_youth/12 gen age_floor=floor(age_year) compare age age_floor *Computed CMC age matches for majority of samples, but some discrepancies. drop age_floor /*We construct a common variable named age_months that encodes both under-five and Youth age_months*/ sum age_monthsU5 sum age_months_youth count if age_monthsU5!=. & age_months_youth!=. gen age_months=age_monthsU5 replace age_months=age_months_youth if age_months==. & age_months_youth!=. sum age_months *age_months captures both under-five and youth (6-19 years). *** Variable: BODY WEIGHT (KILOGRAMS) *** ***************************************** *Weight for under-five children *** Variable: BODY WEIGHT (KILOGRAMS) *** lookfor weight sum qb105 codebook qb105, tab (100) tab qb105 gen weightU5 = qb105 tab weightU5 if weightU5>99, nol //Missing values are 99.94 to 99.96 replace weightU5 = . if weight>=99 //All missing values or out of range are replaced as "." desc weightU5 summ weightU5 tab weightU5 if age_monthsU5>=60 /*2,357 samples with age_months>60 (over 5 years), but weight information available.*/ *Weight for Youth (6-19 years) codebook qb205, tab (999) gen weight_youth = qb205 replace weight_youth = . if weight_youth>=999 //All missing values or out of range are replaced as "." summ weight_youth /*We construct a common variable named weight that encodes both under-five and Youth weight*/ sum weightU5 sum weight_youth count if weightU5!=. & weight_youth!=. gen weight=weightU5 replace weight=weight_youth if weight==. & weight_youth!=. sum weight *** Variable: HEIGHT (CENTIMETERS) ************************************ *Height for Under-five children *** Variable: HEIGHT (CENTIMETERS) lookfor height sum qb106 codebook qb106, tab (10000) gen heightU5 = qb106 tab heightU5 if heightU5>990,m nol //Missing values are 9994 to 9996 replace heightU5 = . if heightU5>=990 desc heightU5 summ heightU5 tab heightU5 if age_monthsU5>=60 /*2,360 samples with age_months>60 (over 5 years), but height information available.*/ *Height for Youth (6-19 years) codebook qb206 , tab (999) gen height_youth = qb206 //We divide it by 10 in order to express it in centimeters replace height_youth = . if qb206>=999 //All missing values or out of range are replaced as "." summ height_youth /*We construct a common variable named weight that encodes both under-five and Youth weight*/ sum heightU5 sum height_youth count if heightU5!=. & height_youth!=. gen height=heightU5 replace height=height_youth if height==. & height_youth!=. sum height ***Construct eligibility criteria for under-five children and youth (6-19 years)*** *********************************************************************************** ******************************************************* *Generating child eligibility for under-five nutrition lookfor eligibility *qh10=Eligibility for child Biomarker sum weightU5 sum weightU5 if (qh10>0 & qh10<.) sum weightU5 if (qh10>0 & qh10<. & age_months<=60) sum weight if (qh10>0 & qh10<. & age_months<=60) count if weightU5!=weight & (qh10>0 & qh10<. & age_months<=60) tab qh10 if weightU5!=weight & (qh10>0 & qh10<. & age_months<=60) *n=1 extra sample from Youth samples *browse weightU5 weight_youth weight heightU5 height_youth height age_months age qh10 if weightU5!=weight & (qh10>0 & qh10<. & age_months<=60) sum weight if age_months<=60 & (qh10>0 & qh10<.) gen child_eligible= (qh10>0 & qh10<. & age_months<=60) tab child_eligible ****************************************************** *Generating child eligibility for youth (6-19 years) *qh11=Youth eligibility for biomarker sum weight_youth sum weight_youth if (qh11>0 & qh11<.) *Correcting youth sample as eligible with anthropometric information browse weight_youth height_youth age_months age gender qh11 if weight_youth!=. & qh11==0 *Some samples ineligible in qh11 but has weight and height measurements *We record them as eligible replace qh11=1 if weight_youth!=. & qh11==0 & age_months>60 & age_months<=228 *Changed to eligible for n=4 samples sum weight_youth if (qh11>0 & qh11<. & age_months>60 & age_months<=228) *Correcting youth sample as eligible with anthropometric info derived from U5 children samples count if weight_youth==. & weightU5!=. & age_months>60 & age_months<=228 tab qh11 if weight_youth==. & weightU5!=. & age_months>60 & age_months<=228 //total n=2183 samples browse weightU5 heightU5 weight_youth height_youth weight height age_months age /// gender qh11 if weight_youth==. & weightU5!=. & age_months>60 & age_months<=228 replace qh11=1 if qh11==0 & weight_youth==. & weightU5!=. & age_months>60 & age_months<=228 //Changed to eligible for n=2183 samples sum weight_youth sum weight_youth if age_months>60 & age<=228 sum weight if age_months>60 & age<=228 sum weight if age_months>60 & age<=228 & qh11>0 gen youth_eligible = (qh11>0 & qh11<. & age_months>60 & age_months<=228) tab youth_eligible //Save a temp file for deriving nutrition indicators save "$path_out/Egypt21_Nutrition.dta", replace ******************************************************************************** *** Step 1.1 KR - CHILDREN's RECODE (under 5) ******************************************************************************** use "$path_out/Egypt21_Nutrition.dta", clear **Only keeping under-five children keep if qh10>0 & qh10<. & age_months<=60 gen child_KR=1 //Generate identification variable for observations in KR recode *** Next, indicate to STATA where the igrowup_restricted.ado file is stored: ***Source of ado file: http://www.who.int/childgrowth/software/en/ adopath + "C:\UNDP\MPI\WHO igrowup STATA\" *** We will now proceed to create three nutritional variables: *** weight-for-age (underweight), *** weight-for-height (wasting) *** height-for-age (stunting) /* We use 'reflib' to specify the package directory where the .dta files containing the WHO Child Growth Standards are stored. Note that we use strX to specify the length of the path in string. If the path is long, you may specify str55 or more, so it will run. */ gen str100 reflib="C:\UNDP\MPI\WHO igrowup STATA\" lab var reflib "Directory of reference tables" /* We use datalib to specify the working directory where the input STATA dataset containing the anthropometric measurement is stored. */ gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" /* We use datalab to specify the name that will prefix the output files that will be produced from using this ado file (datalab_z_r_rc and datalab_prev_rc)*/ gen str30 datalab = "children_nutri_Egypt" lab var datalab "Working file" *** Next check the variables that WHO ado needs to calculate the z-scores: *** sex, age, weight, height *** Variable: SEX *** lookfor gender *** Variable: AGE *** lookfor age label variable age_months "Age in months" sum age_months gen str6 ageunit = "months" lab var ageunit "Months" *** Variable: BODY WEIGHT (KILOGRAMS) *** lookfor weight summ weight *** Variable: HEIGHT (CENTIMETERS) lookfor height summ height *** Variable: MEASURED STANDING/LYING DOWN *** codebook qb107 gen measure="" replace measure = "l" if qb107==1 //Child measured lying down replace measure = "h" if qb107==2 //Child measured standing up replace measure = " " if qb107==9 | qb107==0 | qb107==. //Replace with " " if unknown desc measure tab measure, m *** Variable: OEDEMA *** lookfor oedema gen str1 oedema = "n" //It assumes no-one has oedema desc oedema tab oedema *** Variable: INDIVIDUAL CHILD SAMPLING WEIGHT *** gen sw = qhhwweight /1000000 //For DHS sample weight has to be divided 1000000 desc sw summ sw /*We now run the command to calculate the z-scores with the adofile */ igrowup_restricted reflib datalib datalab gender age_months ageunit weight height measure oedema sw /*We now turn to using the dta file that was created and that contains the calculated z-scores to create the child nutrition variables following WHO standards */ use "$path_out/children_nutri_Egypt_z_rc.dta", clear *** Standard MPI indicator *** //Takes value 1 if the child is under 2 stdev below the median & 0 otherwise gen underweight = (_zwei < -2.0) replace underweight = . if _zwei == . | _fwei==1 lab var underweight "Child is undernourished (weight-for-age) 2sd - WHO" tab underweight [aw=sw], miss tab underweight [aw=sw] 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 [aw=sw], miss tab stunting [aw=sw] 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 [aw=sw], miss tab wasting [aw=sw] tab1 stunting wasting underweight, m rename age_months age_monthsKR //Retain relevant variables: keep ind_id child_KR underweight stunting wasting age_monthsKR order ind_id child_KR underweight stunting wasting age_monthsKR sort ind_id duplicates report ind_id //Erase files from folder: erase "$path_out/children_nutri_Egypt_z_rc.xls" erase "$path_out/children_nutri_Egypt_prev_rc.xls" *erase "$path_out/children_nutri_Egypt_z_rc.dta" //Save a temp file for merging with PR: save "$path_out/Egypt21_KR.dta", replace ******************************************************************************** *** Step 1.2 BR - BIRTH RECODE *** (All females 15-49 years who ever gave birth) ******************************************************************************** use "$path_in/CHILDREN.dta", clear rename _all, lower *Check the datasets *Respondent age lookfor age tab q103 *15-49 years married women *** Generate individual unique key variable required for data merging *** qhclust=cluster number; *** qhnumber=household number; *** qh01=child's line number in household gen double ind_id = qclust*1000000 + qnumber*100 + qline format ind_id %20.0g label var ind_id "Individual ID" *Checking duplicates duplicates report ind_id duplicates report ind_id q212 lookfor age *q220c= Age at death months (imputed); q220u=Age at death (units) and q220n=Age at death (number) *q215c=Date of birth of child(CMC); qintc=Date of interview (CMC) codebook q220c q220u q220n *browse q220c q220u q220n if q220c!=. //We use q220c for further computation. des q215c *Checking CMC date with date of interview and date of birth *browse q215m q215y q215c qintm qinty qintc gen date_death=q215c+q220c //Date of death = CMC date of birth (q215c) + age at death (q220c) *gen date_death = b3 + b7 gen mdead_survey = qintc - date_death //Months dead from survey = Date of interview (v008) - date of death gen ydead_survey = mdead_survey/12 //Years dead from survey browse q215c q220c date_death qintc mdead_survey ydead_survey if q220c!=. & ydead_survey<=5 //Codes look consistent. codebook q216, tab (10) *q216=child is still alive recode q216 (1=0) (2=1), gen(child_died) //Redefine the coding and labels (1=child dead; 0=child alive) label define lab_died 1 "child has died" 0 "child is alive", modify label values child_died lab_died tab child_died q216, miss /*NOTE: For each woman, sum the number of children who died and compare to the number of sons/daughters whom they reported have died */ bysort ind_id: egen tot_child_died = sum(child_died) egen tot_child_died_2 = rsum(q207a q207b) //q207a: sons who have died //q207b: daughters who have died compare tot_child_died tot_child_died_2 *Numbers matched. drop tot_child_died_2 replace child_died=0 if q220c>=216 & q220c<. /* counting only deaths of children <18y (216 months) */ bysort ind_id: egen tot_child_died_5y=sum(child_died) if ydead_survey<=5 /*For each woman, sum the number of children who died in the past 5 years prior to the interview date */ replace tot_child_died_5y=0 if tot_child_died_5y==. & tot_child_died>=0 & tot_child_died<. /*All children who are alive and died longer than 5 years from the interview date are replaced as '0'*/ replace tot_child_died_5y=. if child_died==1 & ydead_survey==. //Replace as '.' if there is no information on when the child died tab tot_child_died tot_child_died_5y, miss bysort ind_id: egen child_died_per_wom = max(tot_child_died) lab var child_died_per_wom "Total child death for each women (birth recode)" bysort ind_id: egen child_died_per_wom_5y = max(tot_child_died_5y) lab var child_died_per_wom_5y "Total child death for each women in the last 5 years (birth recode)" //Keep one observation per women bysort ind_id: gen id=1 if _n==1 keep if id==1 drop id duplicates report ind_id gen women_BR = 1 //Identification variable for observations in BR recode //Retain relevant variables keep ind_id women_BR child_died_per_wom child_died_per_wom_5y q220c order ind_id women_BR child_died_per_wom child_died_per_wom_5y q220c sort ind_id //Save a temp file for merging with PR: save "$path_out/Egypt21_BR.dta", replace ******************************************************************************** *** Step 1.3 IR - WOMEN's RECODE *** (All eligible females 15-49 years in the household) ******************************************************************************** use "$path_in/WOMEN.dta", clear rename _all, lower *** Generate individual unique key variable required for data merging *** v001=cluster number; *** v002=household number; *** v003=respondent's line number gen double ind_id = qclust*1000000 + qnumber*100 + qline format ind_id %20.0g label var ind_id "Individual ID" duplicates report ind_id gen women_IR=1 //Identification variable for observations in IR recode keep ind_id women_IR qline qweight q103 q208 q207a q207b order ind_id women_IR qline qweight q103 q208 q207a q207b sort ind_id //Save a temp file for merging with PR: save "$path_out/Egypt21_IR.dta", replace ******************************************************************************** *** Step 1.4 IR - WOMEN'S RECODE *** (Girls 6-19 years in the household) ******************************************************************************** use "$path_out/Egypt21_Nutrition.dta", clear *Limiting to female and 6 to 19 years Youth *keep if gender==2 & age_months>60 & age_months<=240 keep if gender==2 & age_months>60 & age_months<=228 *** Variable: AGE UNIT *** gen str6 ageunit = "months" lab var ageunit "Months" *** Variable: BODY WEIGHT (KILOGRAMS) *** lookfor weight sum weight *** Variable: HEIGHT (CENTIMETERS) lookfor height summ height ***Variables required to calculate the z-scores to produce BMI-for-age: *** Variable: OEDEMA lookfor oedema gen oedema = "n" tab oedema *** Variable: SAMPLING WEIGHT *** gen sw = qhhwweight/1000000 //For DHS sample weight has to be divided 1000000* summ sw *** Next, indicate to STATA where the igrowup_restricted.ado file is stored: adopath + "C:\UNDP\MPI\who2007-stata\" /* We use 'reflib' to specify the package directory where the .dta files containing the WHO Growth reference are stored. Note that we use strX to specity the length of the path in string. */ gen str100 reflib="C:\UNDP\MPI\who2007-stata" lab var reflib "Directory of reference tables" /* We use datalib to specify the working directory where the input STATA data set containing the anthropometric measurement is stored. */ gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" /* We use datalab to specify the name that will prefix the output files that will be produced from using this ado file*/ gen str30 datalab = "girl_nutri_Egypt" lab var datalab "Working file" /*We now run the command to calculate the z-scores with the adofile */ who2007 reflib datalib datalab gender age_months ageunit weight height oedema sw /*We now turn to using the dta file that was created and that contains the calculated z-scores to compute BMI-for-age*/ use "$path_out/girl_nutri_Egypt_z.dta", clear gen z_bmi = _zbfa replace z_bmi = . if _fbfa==1 lab var z_bmi "z-score bmi-for-age_girls WHO" gen low_bmiage_girls = (z_bmi < -2.0) /*Takes value 1 if BMI-for-age is under 2 stdev below the median & 0 otherwise */ replace low_bmiage_girls = . if z_bmi==. lab var low_bmiage_girls "Teenage girls low bmi 2sd - WHO" gen teengirl_IR=1 //Identification variable for observations in IR recode (only 15-19 years) rename age_months age_monthgirl //Retain relevant variables: keep ind_id teengirl_IR age_monthgirl low_bmiage_girls order ind_id teengirl_IR age_monthgirl low_bmiage_girls sort ind_id //Erase files from folder: erase "$path_out/girl_nutri_Egypt_z.xls" erase "$path_out/girl_nutri_Egypt_prev.xls" erase "$path_out/girl_nutri_Egypt_z.dta" //Save a temp file for merging with PR: save "$path_out/Egypt21_IR_girls.dta", replace ******************************************************************************** *** Step 1.5 MR - MEN'S RECODE ***(All eligible man: 15-59 years in the household) ******************************************************************************** /* use "$path_in/AOMR81FL.dta", clear *** Generate individual unique key variable required for data merging *** mv001=cluster number; *** mv002=household number; *** mv003=respondent's line number gen double ind_id = mv001*1000000 + mv002*100 + mv003 format ind_id %20.0g label var ind_id "Individual ID" duplicates report ind_id gen men_MR=1 //Identification variable for observations in MR recode keep ind_id men_MR mv003 mv005 mv012 mv201 mv206 mv207 order ind_id men_MR mv003 mv005 mv012 mv201 mv206 mv207 sort ind_id //Save a temp file for merging with PR: save "$path_out/Egypt21_MR.dta", replace */ ******************************************************************************** *** Step 1.6a MR - MEN'S RECODE ***(Boys 6-19 years in the household) ******************************************************************************** use "$path_out/Egypt21_Nutrition.dta", clear *Limiting to youth male and 6 to 19 years *keep if gender==1 & age_months>60 & age_months<=240 keep if gender==1 & age_months>60 & age_months<=228 *** Variable: AGE UNIT *** gen str6 ageunit = "months" lab var ageunit "Months" *** Variable: BODY WEIGHT (KILOGRAMS) *** lookfor weight summ weight *** Variable: HEIGHT (CENTIMETERS) lookfor height sum height *** Variable: OEDEMA lookfor oedema gen oedema = "n" tab oedema *** Variable: SAMPLING WEIGHT *** gen sw = qhhwweight/1000000 //For DHS sample weight has to be divided 1000000* summ sw *** Next, indicate to STATA where the igrowup_restricted.ado file is stored: adopath + "C:\UNDP\MPI\who2007-stata\" /* We use 'reflib' to specify the package directory where the .dta files containing the WHO Growth reference are stored. Note that we use strX to specity the length of the path in string. */ gen str100 reflib="C:\UNDP\MPI\who2007-stata" lab var reflib "Directory of reference tables" /* We use datalib to specify the working directory where the input STATA data set containing the anthropometric measurement is stored. */ gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" /* We use datalab to specify the name that will prefix the output files that will be produced from using this ado file*/ gen str30 datalab = "boy_nutri_Egypt" lab var datalab "Working file" /*We now run the command to calculate the z-scores with the adofile */ who2007 reflib datalib datalab gender age_months ageunit weight height oedema sw /*We now turn to using the dta file that was created and that contains the calculated z-scores to compute BMI-for-age*/ use "$path_out/boy_nutri_Egypt_z.dta", clear gen z_bmi_boy = _zbfa replace z_bmi_boy = . if _fbfa==1 lab var z_bmi_boy "z-score bmi-for-age_boy WHO" gen low_bmiage_boys = (z_bmi_boy < -2.0) /*Takes value 1 if BMI-for-age is under 2 stdev below the median & 0 otherwise */ replace low_bmiage_boys = . if z_bmi==. lab var low_bmiage_boys "Teenage low bmi 2sd_boy- WHO" tab low_bmiage_boys, m gen teen_IR_boys=1 //Identification variable for observations in IR recode (only 15-19 years) rename age_months age_month_b //Retain relevant variables: keep ind_id teen_IR_boys age_month_b low_bmiage_boys order ind_id teen_IR_boys age_month_b low_bmiage_boys sort ind_id //Erase files from folder: erase "$path_out/boy_nutri_Egypt_z.xls" erase "$path_out/boy_nutri_Egypt_prev.xls" erase "$path_out/boy_nutri_Egypt_z.dta" //Save a temp file for merging with PR: save "$path_out/Egypt21_boys.dta", replace ******************************************************************************** *** Step 1.4 IR - WOMEN'S RECODE *** (Ever married women 15-19 years in the household) ******************************************************************************** use "$path_out/Egypt21_Nutrition.dta", clear codebook qbintc qwcmc gen age_mwomen=qbintc-qwcmc label variable age_mwomen "age (months) girl 15-19" sum age_mwomen browse qbintc qwcmc age_mwomen qb303 if qb303!=. *Limiting to female and 15 to 19 years Youth keep if gender==2 & age_mwomen>=180 & age_mwomen<=240 *** Variable: AGE UNIT *** gen str6 ageunit = "months" lab var ageunit "Months" *** Variable: BODY WEIGHT (KILOGRAMS) *** lookfor weight sum qb303 tab qb303 gen mweight=qb303 if qb303<990 *** Variable: HEIGHT (CENTIMETERS) lookfor height summ qb304 tab qb304 gen mheight=qb304 if qb304<990 ***Variables required to calculate the z-scores to produce BMI-for-age: *** Variable: OEDEMA lookfor oedema gen oedema = "n" tab oedema *** Variable: SAMPLING WEIGHT *** gen sw = qhhwweight/1000000 //For DHS sample weight has to be divided 1000000* summ sw *** Next, indicate to STATA where the igrowup_restricted.ado file is stored: adopath + "C:\UNDP\MPI\who2007-stata\" /* We use 'reflib' to specify the package directory where the .dta files containing the WHO Growth reference are stored. Note that we use strX to specity the length of the path in string. */ gen str100 reflib="C:\UNDP\MPI\who2007-stata" lab var reflib "Directory of reference tables" /* We use datalib to specify the working directory where the input STATA data set containing the anthropometric measurement is stored. */ gen str100 datalib = "$path_out" lab var datalib "Directory for datafiles" /* We use datalab to specify the name that will prefix the output files that will be produced from using this ado file*/ gen str30 datalab = "mgirl_nutri_Egypt" lab var datalab "Working file" /*We now run the command to calculate the z-scores with the adofile */ who2007 reflib datalib datalab gender age_mwomen ageunit mweight mheight oedema sw /*We now turn to using the dta file that was created and that contains the calculated z-scores to compute BMI-for-age*/ use "$path_out/mgirl_nutri_Egypt_z.dta", clear gen z_bmi = _zbfa replace z_bmi = . if _fbfa==1 lab var z_bmi "z-score bmi-for-age_girls WHO" gen low_bmiage_mgirls = (z_bmi < -2.0) /*Takes value 1 if BMI-for-age is under 2 stdev below the median & 0 otherwise */ replace low_bmiage_mgirls = . if z_bmi==. lab var low_bmiage_mgirls "Teenage girls low bmi 2sd - WHO" gen mteengirl_IR=1 //Identification variable for observations in IR recode (only 15-19 years) *rename age_months age_monthgirl //Retain relevant variables: keep ind_id mteengirl_IR age_mwomen low_bmiage_mgirls order ind_id mteengirl_IR age_mwomen low_bmiage_mgirls sort ind_id //Erase files from folder: erase "$path_out/mgirl_nutri_Egypt_z.xls" erase "$path_out/mgirl_nutri_Egypt_prev.xls" erase "$path_out/mgirl_nutri_Egypt_z.dta" //Save a temp file for merging with PR: save "$path_out/Egypt21_IR_mgirls.dta", replace ******************************************************************************** *** Step 1.7 PR - HOUSEHOLD MEMBER'S RECODE ******************************************************************************** use "$path_in/HHMEMDATA.dta", clear gen cty = "Egypt" gen ccty = "EGY" gen year = "2021" gen survey = "FHS" *** Generate a household unique key variable at the household level using: ***hv001=cluster number ***hv002=household number rename _all, lower *** Generate individual unique key variable required for data merging *** qhclust=cluster number; *** qhnumber=household number; gen double hh_id = qhclust*10000 + qhnumber format hh_id %20.0g label var hh_id "Household ID" *** Generate individual unique key variable required for data merging *** qhclust=cluster number; *** qhnumber=household number; *** qh01=child's line number in household gen double ind_id = qhclust*1000000 + qhnumber*100 + qh01 format ind_id %20.0g label var ind_id "Individual ID" codebook ind_id sort hh_id ind_id ******************************************************************************** *** 1.8 DATA MERGING ******************************************************************************** *** Merging BR Recode ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_BR.dta" drop _merge erase "$path_out/Egypt21_BR.dta" *** Merging IR Recode ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_IR.dta" *qh09=Women eligibility for interview tab qh09 women_IR , miss tab qwresi if qh09==1 & women_IR ==., miss //Total number of eligible women not interviewed *tab qh09 ha13 if women_IR == . & hv117==1, miss drop _merge erase "$path_out/Egypt21_IR.dta" *** Merging IR Recode: 06-19 years girls ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_IR_girls.dta" *qh11=Youth eligibility for biomarker interview tab qh11 teengirl_IR if qh04==2, miss *tab ha65 if hv117==1 & teengirl_IR ==. & (hv105>=15 & hv105<=19 & hv042==1), miss //Total number of eligible girls not interviewed *tab ha65 ha13 if hv117==1 & teengirl_IR ==. & (hv105>=15 & hv105<=19 & hv042==1), miss drop _merge erase "$path_out/Egypt21_IR_girls.dta" *** Merging MR Recode ***************************************** *No men dataset /* merge 1:1 ind_id using "$path_out/Egypt21_MR.dta" tab men_MR hv118, miss col tab hb65 if men_MR==. & hv118==1, m /*Men eligible for interview but missing in the final MR datasets.*/ drop _merge erase "$path_out/Egypt21_MR.dta" */ *** Merging MR Recode: 06-19 years boys ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_boys.dta" tab qh11 teen_IR_boys if qh04==1, miss drop _merge erase "$path_out/Egypt21_boys.dta" *** Merging IR Recode: 15-19 years married girls ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_IR_mgirls.dta" drop _merge *** Merging KR Recode ***************************************** merge 1:1 ind_id using "$path_out/Egypt21_KR.dta" *qh10=Eligibility for child biomarker tab qh10 child_KR ,miss *tab hc13 hv120 if child_KR==. & hv120==1 drop _merge erase "$path_out/Egypt21_KR.dta" sort ind_id ***Merging Nutrition dataset merge 1:1 ind_id using "$path_out/Egypt21_Nutrition.dta", keepusing(age_monthsU5 age_months_youth age_months weightU5 weight_youth heightU5 height_youth child_eligible youth_eligible) drop _merge erase "$path_out/Egypt21_Nutrition.dta" ******************************************************************************** *** Step 1.9 KEEPING ONLY DE JURE HOUSEHOLD MEMBERS *** ******************************************************************************** //Permanent (de jure) household members tab qh05 //qh05==Usual resident clonevar resident = qh05 codebook resident, tab (10) label var resident "Permanent (de jure) household member" drop if resident!=1 tab resident, miss /*Note: The Global MPI is based on de jure (permanent) household members only. As such, non-usual residents will be excluded from the sample.*/ ******************************************************************************** *** 1.10 CONTROL VARIABLES ******************************************************************************** /* Households are identified as having 'no eligible' members if there are no applicable population, that is, for children nutrition 0-5 years, for child mortality adult women 15-49 years and adult men 15-49 years. As such, these households are considered as non-deprived in those relevant indicators.*/ *** No Eligible Women 15-49 years ***************************************** *qh09= Women eligibility for interview; qh07=age; qh04=Sex tab qh09 women_BR, m tab qh09 women_BR if qh09>0, m sum qh07 if qh09>0 & qh09<. tab qh07 qh09 if qh04==2 & qh08 ==1 gen fem_eligible = (qh09>0 & qh09<.) *replace fem_eligible = 0 if hv117==1 & hv105>49 & hv105<=64 & hv104==2 bys hh_id: egen hh_n_fem_eligible = sum(fem_eligible) //Number of eligible women for interview in the hh gen no_fem_eligible = (hh_n_fem_eligible==0) //Takes value 1 if the household had no eligible females for an interview lab var no_fem_eligible "Household has no eligible women" tab no_fem_eligible, miss tab qh09 no_fem_eligible, miss *OPHI code gen tmp = (qbwomen>0 & qh07>=15 & qh07<=49 & qh04==2 & qh08<6) bys hh_id: egen fnu_elg = sum(tmp) *drop tmp gen no_fnu_elg = (fnu_elg==0) lab var no_fnu_elg "hh has no elg female for nutr" ta no_fnu_elg, m *** No Eligible Men 15-49 years ***************************************** *No male samples *** No Eligible Children 0-5 years ****************************************** *qh10=Eligibility for child Biomarker *gen child_eligible= (qh10>0 & qh10<. & age_months<=60) bys hh_id: egen hh_n_children_eligible = sum(child_eligible) //Number of eligible children for anthropometrics gen no_child_eligible = (hh_n_children_eligible==0) //Takes value 1 if there were no eligible children for anthropometrics lab var no_child_eligible "Household has no children eligible" tab no_child_eligible, miss *tab qh10 no_child_eligible, miss *** No Eligible Youth 6-19 years ****************************************** *qh11=Youth eligibility for biomarker *gen youth_eligible = (qh11>0 & qh11<. & age_months>60 & age_months<=240) bys hh_id: egen hh_n_youth_eligible = sum(youth_eligible) //Number of eligible children for anthropometrics gen no_youth_eligible = (hh_n_youth_eligible==0) //Takes value 1 if there were no eligible children for anthropometrics lab var no_youth_eligible "Household has no youth eligible" tab no_youth_eligible, miss *tab qh11 no_youth_eligible, miss drop fem_eligible hh_n_fem_eligible youth_eligible hh_n_youth_eligible child_eligible hh_n_children_eligible sort hh_id ind_id ******************************************************************************** *** 1.11 SUBSAMPLE VARIABLE *** ******************************************************************************** /* Height and weight measured for all eligible ever-married women in the age grou 15-49 years, and individuals in the age group 0-19 years for all households at the beginning of data collection, and 75% of households after about a month of field work (EFHS_2021 report, p.g. 5).*/ tab qhbiotot qh10, m tab qhbiotot qh11, m tab qhbiotot qbwomen, m /*Youth biomarker information collected from individuals who weren't coded as eligible in Total Eligible for Biomaker-qhbiotot variable. So, need to select all households.*/ gen subsample=1 /*if hv042==1*/ label var subsample "Households selected as part of nutrition subsample" tab subsample, miss drop if subsample!=1 ******************************************************************************** *** 1.12 RENAMING DEMOGRAPHIC VARIABLES *** ******************************************************************************** //Sample weight desc qhweight clonevar weight = qhweight label var weight "Sample weight" //Area: urban or rural desc qhtype codebook qhtype, tab (5) clonevar area = qhtype replace area=0 if area==2 label define lab_area 1 "urban" 0 "rural", modify label values area lab_area label var area "Area: urban-rural" //Relationship to the head of household clonevar relationship = qh03 codebook relationship, tab (20) recode relationship (1=1)(2=2)(3=3)(10=3)(4/9=4)(14=3)(15=4) (16=6) (11=5)(12=5)(13=5)(98=.) label define lab_rel 1"head" 2"spouse" 3"child" 4"extended family" /// 5"not related" 6"maid", modify label values relationship lab_rel label var relationship "Relationship to the head of household" tab qh03 relationship, miss //Sex of household member codebook qh04, tab (10) clonevar sex = qh04 label var sex "Sex of household member" //Age of household member codebook qh07, tab (1000) clonevar age = qh07 replace age = . if age>=98 label var age "Age of household member" //Age group 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)" //Marital status of household member clonevar marital = qh08 codebook marital, tab (20) recode marital (6=1)(1=2) (2=3) (3=4) (4=5) (8=.) label define lab_mar 1"never married" 2"currently married" /// 3"widowed" 4"divorced" 5"not living together", modify label values marital lab_mar label var marital "Marital status of household member" tab qh08 marital, miss //Total number of de jure hh members in the household gen member = 1 bysort hh_id: egen hhsize = sum(member) label var hhsize "Household size" tab hhsize, miss drop member //Subnational region lookfor region codebook qhregion, tab (100) clonevar region = qhregion lab var region "Region for subnational decomposition" tab qhregion region, miss ******************************************************************************** *** Step 2 Data preparation *** *** Standardization of the 10 Global MPI indicators *** Identification of non-deprived & deprived individuals ******************************************************************************** ******************************************************************************** *** Step 2.1 Years of Schooling *** ******************************************************************************** ** official entrance age = 6 yrs ** duration of primary = 6 yrs *official entrance age lower and higher secondary are 12 yrs and 15 yrs respectively. *duration of lower and higher secondary are 3 yrs and 3 yrs. *qh19a=level of education attended *qh19b=Highest grade completed codebook qh19a qh19b, tab(30) tab age qh19a, m tab qh19b qh19a, m gen eduyears=. *total number of years of education replace eduyears=0 if qh19a==0 replace eduyears=qh19b if qh19a==1 *Primary education replace eduyears=qh19b+6 if qh19a==2 *Lower secondary replace eduyears=qh19b+9 if qh19a==3 *Secondary replace eduyears=qh19b+12 if qh19a==4| qh19a==5 /*Upper intermediate and University, assuming upper intermediate level after 12 years of schooling based on age and education level distribution (tab age qh19a, m) */ replace eduyears=qh19b+16 if qh19a==6 *Master's level or higher replace eduyears = . if eduyears>30 *recode any unreasonable years of highest education as missing value *list age eduyears hv108 hv106 if eduyears>=age & age>0 & eduyears!=. replace eduyears = . if eduyears>=age & age>0 & eduyears!=. replace eduyears = 0 if age < 10 replace eduyears = 0 if (age==10 | age==11 ) & eduyears < 6 /*The variable "eduyears" was replaced with a '0' given that the criteria for this indicator is household member aged 12 years or older (primary level entrace age=6yrs + 6 years education) but we keep the achievement for child aged 10 or 11 years and completed 6 years of education.*/ tab eduyears qh19a, m tab qh19b qh19a, m nol replace eduyears=6 if (age>=10 & age<.) & (qh19a>=2 & qh19a<=6) & (qh19b==. | qh19b==8) /* Few individuals with missing years of schooling info but reported having secondary or higher level education, these individuals are coded as 6 years of schooling since this is sufficient for the MPI to be considered not deprived for years of schooling indicator */ codebook qh18 *qh18=Ever attended school. replace eduyears=0 if qh18==2 *Never attended school. /*A control variable is created on whether there is information on years of education for at least 2/3 of the household members. */ gen temp = 1 if (eduyears!=. & (age>=12 & age!=.)) | (((age==10| age==11) & eduyears>=6 & eduyears<.)) bysort hh_id: egen no_missing_edu = sum(temp) /*Total household members who are 12 years and older with no missing years of education but recognizing as an achievement if the member is 10 or 11 and already completed 6 yrs of schooling */ gen temp2 = 1 if (age>=12 & age!=.) | (((age==10 | age==11) & eduyears>=6 & eduyears<.)) bysort hh_id: egen hhs = sum(temp2) //Total number of household members who are 13 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 13 years and older */ tab no_missing_edu, miss label var no_missing_edu "No missing edu for at least 2/3 of the HH members aged 12 years & older" drop temp temp2 hhs /*The entire household is considered deprived if no household member aged 12 years or older has completed SIX years of schooling. */ gen years_edu6 = (eduyears>=6) /* The years of schooling indicator takes a value of "1" if at least someone in the hh has reported 6 years of education or more */ replace years_edu6 = . if eduyears==. 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, m ******************************************************************************** *** Step 2.2 Child School Attendance *** ******************************************************************************** codebook qh20, tab(10) clonevar attendance = qh20 recode attendance (2=0) codebook attendance, tab (10) replace attendance=0 if qh18==2 *No ever attended school *** New Standard MPI *** ******************************************************************* /*The entire household is considered deprived if any school-aged child is not attending school up to class 8. */ gen child_schoolage = (age>=6 & age<=14) /* Note: In Egypt, the official school entrance age is 6 years. So, age range is 6-14 (6+8) Source: http://data.uis.unesco.org*/ /*A control variable is created on whether there is no information on school attendance for at least 2/3 of the school age children */ count if child_schoolage==1 & attendance==. //Understand how many eligible school aged children are not attending school gen temp = 1 if child_schoolage==1 & attendance!=. /*Generate a variable that captures the number of eligible school aged children who are attending school */ bysort hh_id: egen no_missing_atten = sum(temp) /*Total school age children with no missing information on school attendance */ gen temp2 = 1 if child_schoolage==1 bysort hh_id: egen hhs = sum(temp2) //Total number of household members who are of school age replace no_missing_atten = no_missing_atten/hhs replace no_missing_atten = (no_missing_atten>=2/3) /*Identify whether there is missing information on school attendance for more than 2/3 of the school age children */ tab no_missing_atten, miss label var no_missing_atten "No missing school attendance for at least 2/3 of the school aged children" drop temp temp2 hhs bysort hh_id: egen hh_children_schoolage = sum(child_schoolage) replace hh_children_schoolage = (hh_children_schoolage>0) //Control variable: //It takes value 1 if the household has children in school age lab var hh_children_schoolage "Household has children in school age" gen child_not_atten = (attendance==0) if child_schoolage==1 replace child_not_atten = . if attendance==. & child_schoolage==1 bysort hh_id: egen any_child_not_atten = max(child_not_atten) gen hh_child_atten = (any_child_not_atten==0) replace hh_child_atten = . if any_child_not_atten==. replace hh_child_atten = 1 if hh_children_schoolage==0 replace hh_child_atten = . if hh_child_atten==1 & no_missing_atten==0 /*If the household has been intially identified as non-deprived, but has missing school attendance for at least 2/3 of the school aged children, then we replace this household with a value of '.' because there is insufficient information to conclusively conclude that the household is not deprived */ lab var hh_child_atten "Household has all school age children up to class 8 in school" tab hh_child_atten, miss /*Note: The indicator takes value 1 if ALL children in school age are attending school and 0 if there is at least one child not attending. Households with no children receive a value of 1 as non-deprived. The indicator has a missing value only when there are all missing values on children attendance in households that have children in school age. */ ******************************************************************************** *** Step 2.3 Nutrition *** ******************************************************************************** ******************************************************************************** *** Step 2.3a Adult Nutrition *** ******************************************************************************** lookfor body mass *codebook ha40 *gen hb40 = . foreach var in qb303 qb304 { gen inf_`var' = 1 if `var'!=. bys sex: tab age inf_`var' drop inf_`var' } *** ELIGIBILITY FOR BMI *** /*Note: In the Egypt FHS_2021 survey, anthropometric information was collected from eligible women aged 15-49 yrs and youth (both sexes) from 6-19 years */ ** WOMEN //Check the age range for the BMI information sum age if qb303!=. & sex==2 *qbwomen=Eligible women biomarkers tab qbwomen sex, m tab age if qbwomen>0 & qbwomen<. /*qbwomen variable that records's women eligiblity for biomarker is problematic as it codes eligiblity for both males and females, and for all age group. */ sum qwresi *qwresi=Result of individual interview (n=17,508) sum qb303 sum qb303 if sex==2 & age>=15 & age<=49 //17,508 women with "weight"/anthropometric information *We will use qwresi variable for defining eligiblity criteria for women anthropometric data. gen fem_eligible_bmi = 1 if qwresi!=. *gen fem_eligible_bmi = 1 if qbwomen>0 & qbwomen<. & sex==2 & age>=15 & age<=49 /*Female eligibility manually created based on age, sex and "qbwomen" variable assuming "qbwomen" variable correctly categorize women based on eligibility criteria.*/ replace fem_eligible_bmi = 0 if qwresi==. *replace fem_eligible_bmi = 0 if age <15 & age>49 & age<. bys hh_id: egen hh_n_fem_eligible_bmi = sum(fem_eligible_bmi) //Number of eligible women for BMI in the hh gen no_fem_eligible_bmi = (hh_n_fem_eligible_bmi==0) //Takes value 1 if the household had no eligible females for an interview lab var no_fem_eligible_bmi "Household has no eligible women" tab no_fem_eligible_bmi, miss *** No Eligible Women and Youth for BMI *********************************************** /*NOTE: In the DHS datasets, we use this variable as a control variable for nutrition when anthropometrics is available for women and men */ gen no_adults_eligible_bmi = (no_fem_eligible_bmi==1 & no_youth_eligible==1) //Takes value 1 if the household had no eligible men & women for BMI lab var no_adults_eligible_bmi "Household has no eligible women or men" tab no_adults_eligible_bmi, miss *** No Eligible Women, youth or Children for BMI *********************************************** /*NOTE: In the DHS datasets, we use this variable as a control variable for the nutrition indicator if nutrition data is present for children, women and men. */ gen no_eligibles_bmi = (no_fem_eligible_bmi==1 & no_child_eligible==1 & no_youth_eligible==1 ) lab var no_eligibles_bmi "Household has no eligible women, men or children for BMI" tab no_eligibles_bmi, miss *** BMI Indicator for Women 15-49 years *** ******************************************************************* codebook qwbm *qwbm=body mass index of women gen f_bmi = qwbm/100 //Low BMI of women 15-49 years lab var f_bmi "Women's BMI" gen f_low_bmi = (f_bmi<18.5) replace f_low_bmi = . if f_bmi==. | f_bmi>=99.90 replace f_low_bmi=. if age>49 & age<. lab var f_low_bmi "BMI of women < 18.5" *** BMI-for-age for individuals 6-19 years and BMI for individuals 20-49 years *** ******************************************************************* *replace age_month=age_month_boys if age_month_boys<. & age_month==. *replace low_bmiage=low_bmiage_boys if low_bmiage_boys<. & low_bmiage==. gen low_bmi_byage = 0 lab var low_bmi_byage "Individuals with low BMI or BMI-for-age" replace low_bmi_byage = 1 if f_low_bmi==1 //Replace variable "low_bmi_byage = 1" if eligible women have low BMI //Replacement for married girls (15-19 years) replace low_bmi_byage = 1 if low_bmiage_mgirls==1 & age_mwomen!=. replace low_bmi_byage = 0 if low_bmiage_mgirls==0 & age_mwomen!=. //n=2 changes made. browse age qb303 qb304 f_low_bmi low_bmiage_mgirls qwbm f_bmi if f_low_bmi==1 & low_bmiage_mgirls==0 /*Note: The following command will result in 0 changes when there is no BMI information from men*/ /* replace low_bmi_byage = 1 if low_bmi_byage==0 & m_low_bmi==1 //Replace variable "low_bmi_byage = 1" if eligible men have low BMI */ /*Note: The following command replaces BMI with BMI-for-age for those between the age group of 15-19 by their age in months where information is available */ //Replacement for girls: replace low_bmi_byage = 1 if low_bmiage_girls==1 & age_monthgirl!=. replace low_bmi_byage = 0 if low_bmiage_girls==0 & age_monthgirl!=. //Replacements for boys: replace low_bmi_byage = 1 if low_bmiage_boys==1 & age_month_b!=. replace low_bmi_byage = 0 if low_bmiage_boys==0 & age_month_b!=. /*Note: The following control variable is applied when there is BMI information for women and men, as well as BMI-for-age for teenagers */ replace low_bmi_byage = . if f_low_bmi==. & low_bmiage_mgirls==. & low_bmiage_girls==. /*& m_low_bmi==.*/ & low_bmiage_boys==. bysort hh_id: egen low_bmi = max(low_bmi_byage) gen hh_no_low_bmiage = (low_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 low_bmi==. /*Households take a value of '.' if there is no information from eligible individuals in the household */ replace hh_no_low_bmiage = 1 if no_fem_eligible_bmi==1 & no_youth_eligible==1 /*& no_male_eligible_bmi==1*/ /*Households take a value of '1' if there is no eligible population.*/ drop low_bmi lab var hh_no_low_bmiage "Household has no adult with low BMI or BMI-for-age" *tab hh_no_low_bmi if subsample==1, m tab hh_no_low_bmiage if subsample==1, m /*NOTE that hh_no_low_bmi takes value 1 if: (a) no any eligible adult in the household has (observed) low BMI or (b) there are no eligible adults in the household. One has to check and adjust the dofile so all people who are eligible and/or measured are included. It is particularly important to check if male are measured and what age group among males and females. The variable takes values 0 for those households that have at least one adult with observed low BMI. The variable has a missing value only when there is missing info on BMI for ALL eligible adults in the household */ ******************************************************************************** *** Step 2.3b Child Nutrition *** ******************************************************************************** *** Child Underweight Indicator *** ************************************************************************ bysort hh_id: egen temp = max(underweight) gen hh_no_underweight = (temp==0) //Takes value 1 if no child in the hh 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 */ lab var hh_no_underweight "Household has no child underweight - 2 stdev" drop temp *** Child Stunting Indicator *** ************************************************************************ bysort hh_id: egen temp = max(stunting) gen hh_no_stunting = (temp==0) //Takes value 1 if no child in the hh is stunted replace hh_no_stunting = . if temp==. replace hh_no_stunting = 1 if no_child_eligible==1 lab var hh_no_stunting "Household has no child stunted - 2 stdev" drop temp *** Child Either Stunted or Underweight Indicator *** ************************************************************************ gen uw_st = 1 if stunting==1 | underweight==1 replace uw_st = 0 if stunting==0 & underweight==0 replace uw_st = . if stunting==. & underweight==. bysort hh_id: egen temp = max(uw_st) gen hh_no_uw_st = (temp==0) //Takes value 1 if no child in the hh 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 lab var hh_no_uw_st "Household has no child underweight or stunted" tab hh_no_uw_st, m drop temp ******************************************************************************** *** Step 2.3c Household Nutrition Indicator *** ******************************************************************************** gen hh_nutrition_uw_st = 1 if (hh_no_low_bmiage==1 & hh_no_uw_st==1) | (hh_no_low_bmiage==. & hh_no_uw_st==1 & no_child_eligible==0) | (hh_no_low_bmiage==1 & hh_no_uw_st==. & no_adults_eligible_bmi==0) *gen hh_nutrition_uw_st = 1 if (hh_no_low_bmiage==1 & hh_no_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 = 1 if no_eligibles_bmi==1 /*If country have collected anthropometric data from women, child 0-5 & a subsample of men, we only replace households which do not have any of these three applicable population as non-deprived*/ 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, m ******************************************************************************** *** Step 2.4 Child Mortality *** ******************************************************************************** codebook q207a q207b /*mv206 mv207*/ //v206 or mv206: number of sons who have died //v207 or mv207: number of daughters who have died //Total child mortality reported by eligible women egen temp_f = rowtotal(q207a q207b), missing replace temp_f = 0 if q208==0 *q208=Total children ever born 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 //Total child mortality reported by eligible men /* egen temp_m = rowtotal(mv206 mv207), missing replace temp_m = 0 if mv201==0 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 = rowmax(child_mortality_f /*child_mortality_m*/) lab var child_mortality "Total child mortality within household reported by women & men" tab child_mortality if subsample==1, miss /* /*Deprived if any children died in the household */ ************************************************************************ gen hh_mortality = (child_mortality==0) /*Household is replaced with a value of "1" if there is no incidence of child mortality*/ replace hh_mortality = . if child_mortality==. replace hh_mortality = 1 if no_adults_eligible==1 /*Change eligibility to "no_fem_eligible==1" if child mortality indicator is constructed solely using information from women */ lab var hh_mortality "Household had no child mortality" tab hh_mortality if subsample==1, miss */ /*Deprived if any children died in the household in the last 5 years from the survey year */ ************************************************************************ tab child_died_per_wom_5y, miss /* The 'child_died_per_wom_5y' variable was constructed in Step 1.2 using information from individual women who ever gave birth in the BR file. The missing values represent eligible woman who have never ever given birth and so are not present in the BR file. But these 'missing women' may be living in households where there are other women with child mortality information from the BR file. So at this stage, it is important that we aggregate the information that was obtained from the BR file at the household level. This ensures that women who were not present in the BR file is assigned with a value, following the information provided by other women in the household.*/ replace child_died_per_wom_5y = 0 if q208==0 /*Assign a value of "0" for: - all eligible women who never ever gave birth */ replace child_died_per_wom_5y = 0 if no_fem_eligible==1 /*Assign a value of "0" for: - individuals living in households that have non-eligible women */ bysort hh_id: egen child_mortality_5y = sum(child_died_per_wom_5y), missing replace child_mortality_5y = 0 if child_mortality_5y==. & child_mortality==0 /*Replace all households as 0 death if women has missing value and men reported no death in those households */ label var child_mortality_5y "Total child mortality within household past 5 years reported by women" tab child_mortality_5y if subsample==1, miss /* The new standard MPI indicator takes a value of "1" if eligible women within the household reported no child mortality or if any child died longer than 5 years from the survey year. The indicator takes a value of "0" if women in the household reported any child mortality in the last 5 years from the survey year. Households were replaced with a value of "1" if eligible men within the household reported no child mortality in the absence of information from women. The indicator takes a missing value if there was missing information on reported death from eligible individuals. */ gen hh_mortality_5y = (child_mortality_5y==0) replace hh_mortality_5y = . if child_mortality_5y==. tab hh_mortality_5y if subsample==1, miss lab var hh_mortality_5y "Household had no child mortality in the last 5 years" tab hh_mortality_5y, m ******************************************************************************** *** Step 2.5 Electricity *** ******************************************************************************** /*Members of the household are considered deprived if the household has no electricity */ codebook qh118a clonevar electricity = qh118a replace electricity=0 if electricity==2 codebook electricity, tab (10) label var electricity "Household has electricity" ******************************************************************************** *** Step 2.6 Sanitation *** ******************************************************************************** /*Members of the household are considered deprived if the household's sanitation facility is not improved, according to MDG guidelines, or it is improved but shared with other household. In cases of mismatch between the MDG guideline and country report, we followed the country report. */ *qh111=Type of toilet *qh115=Shared with other households clonevar toilet = qh111 codebook toilet, tab(30) codebook qh115, tab(30) clonevar shared_toilet = qh115 //0=no;1=yes;.=missing gen toilet_mdg = 1 if (toilet==11 | toilet==12 | toilet==13 | toilet==14 | toilet==15 | toilet==17 | toilet==21 | toilet==22 | toilet==31) replace toilet_mdg = 0 if toilet==16 | toilet==23 | toilet==41 | toilet==51 | toilet==61 | toilet==96 replace toilet_mdg = 0 if shared_toilet==1 replace toilet_mdg = . if toilet==. | toilet==99 lab var toilet_mdg "Household has improved sanitation with MDG Standards" tab toilet toilet_mdg, miss /* tab toilet toilet_mdg, miss | Household has | improved sanitation Type of toilet | with MDG Standards facility | 0 1 | Total ----------------------+----------------------+---------- Flush to piped sewer | 558 71,926 | 72,484 Flush to vailt (bayar | 1,068 23,454 | 24,522 Flush to septic tank | 521 18,233 | 18,754 Flush to pipe connect | 123 7,552 | 7,675 Flush to pipe connect | 1 243 | 244 Flush to somewhere el | 90 0 | 90 Flush, don't know whe | 0 71 | 71 Ventilated improved p | 0 9 | 9 Pit latrine with slab | 2 41 | 43 Pit latrine without s | 38 0 | 38 Composting toilet | 0 5 | 5 Bucket toilet | 54 0 | 54 Hanging toilet/hangin | 4 0 | 4 No facility/bush/fiel | 29 0 | 29 Other | 174 0 | 174 ----------------------+----------------------+---------- Total | 2,662 121,534 | 124,196 */ ******************************************************************************** *** Step 2.7 Drinking Water *** ******************************************************************************** /*Members of the household are considered deprived if the household does not have access to safe drinking water according to MDG guidelines, or safe drinking water is more than a 30-minute walk from home roundtrip. In cases of mismatch between the MDG guideline and country report, we followed the country report.*/ codebook qh104 qh107 clonevar water = qh104 clonevar timetowater = qh107 codebook water, tab(100) *clonevar ndwater = hv202 gen water_mdg = 1 if water==11 | water==12 | water==13 | water==14 | water==21 | /// water==31 | water==41 | water==91 replace water_mdg = 0 if water==32 | water==42 | water==61 | water==71 | water==81 | water==96 replace water_mdg = 0 if timetowater >= 30 & timetowater!=. & timetowater!=996 & timetowater!=998 & timetowater!=999 //Deprived if water is at more than 30 minutes' walk (roundtrip) replace water_mdg = . if water==. | water==99 lab var water_mdg "Household has drinking water with MDG standards (considering distance)" tab water water_mdg, miss ******************************************************************************** *** Step 2.8 Housing *** ******************************************************************************** /* Members of the household are considered deprived if the household has a dirt, sand or dung floor */ codebook qh103 clonevar floor = qh103 codebook floor, tab(99) gen floor_imp = 1 replace floor_imp = 0 if floor==11 | floor==12 | floor==13 | floor==96 //Deprived if "mud/earth", "sand", "dung", "other" replace floor_imp = . if floor==. | floor==99 | floor==.a 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 wall made of natural or rudimentary materials */ clonevar wall = hv214 codebook wall, tab(99) gen wall_imp = 1 replace wall_imp = 0 if wall<=30 | wall==96 /*Deprived if "no wall" "cane/palms/trunk" "mud/dirt" "grass/reeds/thatch" "pole/bamboo with mud" "stone with mud" "plywood" "cardboard" "carton/plastic" "uncovered adobe" "canvas/tent" "unburnt bricks" "reused wood" "other"*/ replace wall_imp = . if wall==. | wall==99 | wall==.a 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 */ clonevar roof = hv215 codebook roof, tab(99) gen roof_imp = 1 replace roof_imp = 0 if roof<=25 | roof==96 /*Deprived if "no roof" "thatch/palm leaf" "mud/earth/lump of earth" "sod/grass" "plastic/polythene sheeting" "rustic mat" "cardboard" "canvas/tent" "wood planks/reused wood" "unburnt bricks" "other"*/ replace roof_imp = . if roof==. | roof==99 | roof==.a lab var roof_imp "Household has roof that it is not of low quality materials" tab roof roof_imp, miss */ /*Household is deprived in housing if the roof, floor OR walls uses 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 ******************************************************************************** *** Step 2.9 Cooking Fuel *** ******************************************************************************** /* Members of the household are considered deprived if the household cooks with solid fuels: wood, charcoal, crop residues or dung. "Indicators for Monitoring the Millennium Development Goals", p. 63 */ codebook qh120 clonevar cookingfuel = qh120 codebook cookingfuel, tab(99) *tab hv222 if hv226==96, m /*Majority of individuals who reported "other" cooking fuel used "traditional solid fuel" stove. So, we code such households as deprived in the cooking fuel. */ gen cooking_mdg = 1 if (cookingfuel>=1 & cookingfuel<=5) replace cooking_mdg = 0 if (cookingfuel==6) *replace cooking_mdg=0 if cookingfuel==96 & (inrange(hv222,7,9)) replace cooking_mdg = . if cookingfuel==. | cookingfuel==99 lab var cooking_mdg "Househod has cooking fuel according to MDG standards" tab cookingfuel cooking_mdg, miss ******************************************************************************** *** Step 2.10 Assets ownership *** ******************************************************************************** /* Members of the household are considered deprived if the household does not own more than one of: radio, TV, telephone, bike, motorbike or refrigerator and does not own a car or truck. */ //Check that for standard assets in living standards: "no"==0 and yes=="1" *codebook hv208 hv207 hv221 hv243a hv209 hv212 hv210 hv211 hv243c hv243e lookfor tv television plasma lcd télé tele codebook qh118b qh118c clonevar television = qh118b replace television=1 if qh118c==1 /* lookfor radio walkman stereo stéréo clonevar radio = hv207 */ lookfor telephone téléphone mobilephone ipod telefone tele celular codebook qh118d qh118e qh118f gen telephone = qh118f replace telephone=1 if qh118d==1 replace telephone=1 if qh118e==1 lookfor refrigerator réfrigérateur refri freezer codebook qh121a qh121b clonevar refrigerator = qh121a replace refrigerator=1 if qh121b==1 lookfor car van truck codebook qh124e clonevar car = qh124e lookfor bicycle cycle bicyclette bicicleta codebook qh124b clonevar bicycle = qh124b *Rickshaw treated as bicycle asset *replace bicycle=1 if sh133c==1 lookfor mbike moto codebook qh124c clonevar motorbike = qh124c lookfor computer ordinateur laptop ipad tablet codebook qh118g clonevar computer = qh118g lookfor brouette cart carro carreta codebook qh124d clonevar animal_cart = qh124d foreach var in television /*radio*/ telephone refrigerator /// car bicycle motorbike computer animal_cart { replace `var' = 0 if `var'==2 replace `var' = . if `var'==9 | `var'==99 | `var'==8 | `var'==98 } //9 , 99 and 8, 98 are missing values /* 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" ******************************************************************************** *** Step 2.11 Rename and keep variables for MPI calculation ******************************************************************************** //Retain data on sampling design: desc qhstrata /*hv021*/ clonevar strata = qhstrata *clonevar psu = hv021 //Retain year, month & date of interview: desc qhinty qhintm qhintd clonevar year_interview = qhinty clonevar month_interview = qhintm clonevar date_interview = qhintd *** 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) tab1 d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst, m *** Keep selected variables for global MPI estimation *** keep hh_id ind_id ccty cty survey year subsample strata /*psu*/ weight area relationship sex age agec7 agec4 marital hhsize region year_interview month_interview date_interview d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst hh_mortality_5y hh_nutrition_uw_st hh_child_atten hh_years_edu6 electricity water_mdg toilet_mdg housing_1 cooking_mdg hh_assets2 order hh_id ind_id ccty cty survey year subsample strata /*psu*/ weight area relationship sex age agec7 agec4 marital hhsize region year_interview month_interview date_interview d_cm d_nutr d_satt d_educ d_elct d_wtr d_sani d_hsg d_ckfl d_asst hh_mortality_5y hh_nutrition_uw_st hh_child_atten hh_years_edu6 electricity water_mdg toilet_mdg housing_1 cooking_mdg hh_assets2 *** Sort, compress and save data for estimation *** sort ind_id compress save "$path_out/Egypt_fhs21_pov.dta", replace log close ******************************************************************************** *** MPI Calculation (TTD file) ******************************************************************************** **SELECT COUNTRY POV FILE RUN ON LOOP FOR MORE COUNTRIES use "$path_out\Egypt_fhs21_pov.dta", clear ******************************************************************************** *** Define Sample Weight and total population *** ******************************************************************************** gen sample_weight = weight/1000000 //only DHS gen country = "Egypt" gen countrycode = "EGY" /* change to weight if MICS*/ ******************************************************************************** *** List of the 10 indicators included in the MPI *** ******************************************************************************** gen edu_1 = hh_years_edu6 gen atten_1 = hh_child_atten gen cm_1 = hh_mortality_5y /* change countries with no child mortality 5 year to child mortality ever*/ gen nutri_1 = hh_nutrition_uw_st gen elec_1 = electricity gen toilet_1 = toilet_mdg gen water_1 = water_mdg gen house_1 = housing_1 gen fuel_1 = cooking_mdg gen asset_1 = hh_assets2 global est_1 edu_1 atten_1 cm_1 nutri_1 elec_1 toilet_1 water_1 house_1 fuel_1 asset_1 ******************************************************************************** *** List of sample without missing values *** ******************************************************************************** foreach j of numlist 1 { gen sample_`j' = (edu_`j'!=. & atten_`j'!=. & cm_`j'!=. & nutri_`j'!=. & elec_`j'!=. & toilet_`j'!=. & water_`j'!=. & house_`j'!=. & fuel_`j'!=. & asset_`j'!=.) replace sample_`j' = . if subsample==0 /* Note: If the anthropometric data was collected from a subsample of the total population that was sampled, then the final analysis only includes the subsample population. */ *** Percentage sample after dropping missing values *** sum sample_`j' [iw = sample_weight] gen per_sample_weighted_`j' = r(mean) sum sample_`j' gen per_sample_`j' = r(mean) } *** ******************************************************************************** *** Define deprivation matrix 'g0' *** which takes values 1 if individual is deprived in the particular *** indicator according to deprivation cutoff z as defined during step 2 *** ******************************************************************************** foreach j of numlist 1 { foreach var in ${est_`j'} { gen g0`j'_`var' = 1 if `var'==0 replace g0`j'_`var' = 0 if `var'==1 } } *** Raw Headcount Ratios foreach j of numlist 1 { foreach var in ${est_`j'} { sum g0`j'_`var' if sample_`j'==1 [iw = sample_weight] gen raw`j'_`var' = r(mean)*100 lab var raw`j'_`var' "Raw Headcount: Percentage of people who are deprived in `var'" } } ******************************************************************************** *** Define vector 'w' of dimensional and indicator weight *** ******************************************************************************** /*If survey lacks one or more indicators, weights need to be adjusted within / each dimension such that each dimension weighs 1/3 and the indicator weights add up to one (100%). CHECK COUNTRY FILE*/ foreach j of numlist 1 { // DIMENSION EDUCATION foreach var in edu_`j' atten_`j' { capture drop w`j'_`var' gen w`j'_`var' = 1/6 } // DIMENSION HEALTH foreach var in cm_`j' nutri_`j' { capture drop w`j'_`var' gen w`j'_`var' = 1/6 } // DIMENSION LIVING STANDARD foreach var in elec_`j' toilet_`j' water_`j' house_`j' fuel_`j' asset_`j' { capture drop w`j'_`var' gen w`j'_`var' = 1/18 } } ******************************************************************************** *** Generate the weighted deprivation matrix 'w' * 'g0' ******************************************************************************** foreach j of numlist 1 { foreach var in ${est_`j'} { gen w`j'_g0_`var' = w`j'_`var' * g0`j'_`var' replace w`j'_g0_`var' = . if sample_`j'!=1 /*The estimation is based only on observations that have non-missing values for all variables in varlist_pov*/ } } ******************************************************************************** *** Generate the vector of individual weighted deprivation count 'c' ******************************************************************************** foreach j of numlist 1 { egen c_vector_`j' = rowtotal(w`j'_g0_*) replace c_vector_`j' = . if sample_`j'!=1 *drop w_g0_* } ******************************************************************************** *** Identification step according to poverty cutoff k (20 33.33 50) *** ******************************************************************************** foreach j of numlist 1 { foreach k of numlist 20 33 50 { gen multidimensionally_poor_`j'_`k' = (c_vector_`j'>=`k'/100) replace multidimensionally_poor_`j'_`k' = . if sample_`j'!=1 //Takes value 1 if individual is multidimensional poor } } ******************************************************************************** *** Generate the censored vector of individual weighted deprivation count 'c(k)' ******************************************************************************** foreach j of numlist 1 { foreach k of numlist 20 33 50 { gen c_censured_vector_`j'_`k' = c_vector_`j' replace c_censured_vector_`j'_`k' = 0 if multidimensionally_poor_`j'_`k'==0 } //Provide a score of zero if a person is not poor } * ******************************************************************************** *** Define censored deprivation matrix 'g0(k)' *** ******************************************************************************** foreach j of numlist 1 { foreach var in ${est_`j'} { gen g0`j'_k_`var' = g0`j'_`var' replace g0`j'_k_`var' = 0 if multidimensionally_poor_`j'_33==0 replace g0`j'_k_`var' = . if sample_`j'!=1 } } ******************************************************************************** *** Generates Multidimensional Poverty Index (MPI), *** Headcount (H) and Intensity of Poverty (A) *** ******************************************************************************** *** Multidimensional Poverty Index (MPI) *** foreach j of numlist 1 { foreach k of numlist 20 33 50 { sum c_censured_vector_`j'_`k' [iw = sample_weight] if sample_`j'==1 gen MPI_`j'_`k' = r(mean) lab var MPI_`j'_`k' "MPI with k=`k'" } sum c_censured_vector_`j'_33 [iw = sample_weight] if sample_`j'==1 gen MPI_`j' = r(mean) lab var MPI_`j' "`j' Multidimensional Poverty Index (MPI = H*A): Range 0 to 1" *** Headcount (H) *** sum multidimensionally_poor_`j'_33 [iw = sample_weight] if sample_`j'==1 gen H_`j' = r(mean)*100 lab var H_`j' "`j' Headcount ratio: % Population in multidimensional poverty (H)" *** Intensity of Poverty (A) *** sum c_censured_vector_`j'_33 [iw = sample_weight] if multidimensionally_poor_`j'_33==1 & sample_`j'==1 gen A_`j' = r(mean)*100 lab var A_`j' "`j' Intensity of deprivation among the poor (A): Average % of weighted deprivations" *** Population vulnerable to poverty (who experience 20-32.9% intensity of deprivations) *** gen temp = 0 replace temp = 1 if c_vector_`j'>=0.2 & c_vector_`j'<0.3332 replace temp = . if sample_`j'!=1 sum temp [iw = sample_weight] gen vulnerable_`j' = r(mean)*100 lab var vulnerable_`j' "`j' % Population vulnerable to poverty (who experience 20-32.9% intensity of deprivations)" drop temp *** Population in severe poverty (with intensity 50% or higher) *** gen temp = 0 replace temp = 1 if c_vector_`j'>0.49 replace temp = . if sample_`j'!=1 sum temp [iw = sample_weight] gen severe_`j' = r(mean)*100 lab var severe_`j' "`j' % Population in severe poverty (with intensity 50% or higher)" drop temp } * *** Censored Headcount *** foreach j of numlist 1 { foreach var in ${est_`j'} { sum g0`j'_k_`var' [iw = sample_weight] if sample_`j'==1 gen cen`j'_`var' = r(mean)*100 lab var cen`j'_`var' "Censored Headcount: Percentage of people who are poor and deprived in `var'" } } *** Dimensional Contribution *** foreach j of numlist 1 { foreach var in ${est_`j'} { gen cont`j'_`var' = (w`j'_`var' * cen`j'_`var')/MPI_`j' if sample_`j'==1 lab var cont`j'_`var' "% Contribution in MPI of indicator..." } } ** The line below produces the variance (inequality among the poor) ** sum c_vector_1 if c_vector_1>=1/3 /*& c_vector_1<=1*/ [aw = sample_weight], detail gen var=r(Var) order hh_id ind_id ccty cty survey year subsample strata /*psu*/ weight area relationship sex age agec7 agec4 marital hhsize region year_interview month_interview date_interview MPI_1 H_1 A_1 severe_1 vulnerable_1 var cont1_nutr cont1_cm_1 cont1_edu_1 cont1_atten_1 cont1_fuel_1 cont1_toilet_1 cont1_water_1 cont1_elec_1 cont1_house_1 cont1_asset_1 per_sample_1 per_sample_weighted_1 raw1_nutri_1 raw1_cm_1 raw1_edu_1 raw1_atten_1 raw1_fuel_1 raw1_toilet_1 raw1_water_1 raw1_elec_1 raw1_house_1 raw1_asset_1 cen1_nutri_1 cen1_cm_1 cen1_edu_1 cen1_atten_1 cen1_fuel_1 cen1_toilet_1 cen1_water_1 cen1_elec_1 cen1_house_1 cen1_asset_1 save "Egypt_FHS21_MPI2026.dta", replace codebook, compact