****************************************************************************** ************************IMPUTING MISSING OBS********************************** ****************************************************************************** //0. GET THE DATA SET WE NEED: MERGE use "D:\Barbara Castillo Rico\2. Project\2. Data\1. Elfe\3. Data set\FINALbase160211.dta", clear //latest //1. WE NEED A VARIABLE TO IDENTIFY THE CHILDREN WE KEEP IN OUR ANALYSIS * Children for which we have data in 2months wave g months2 = 1 if inlist(m02x_qmerecomp2m,1,2) & inlist(m02x_typqmere2m,1,2,3) //completed and partially completed, mother referent replace months2 = 1 if inlist(m02x_qpecfcomp2m,1,2) & inlist(m02x_typqpecf2m,1,2) //completed and partially completed, father referent replace months2 = 1 if m02x_partimere2m==10 & missing(months2) replace months2 = 0 if missing(months2) label var months2 "the child is included in the 2months wave" label define months2 1 "yes" 0 "no" label values months2 months2 tab months2, missing //2. we need to identify fathers who are not present in elfe g father_recogn_child=. replace father_recogn_child = 1 if m00m2_etatmat==1 & m00m2_couple==1 replace father_recogn_child = 1 if m00m2_reconu==1 & father_recogn_child==. replace father_recogn_child = 1 if m02m_recon==1 & father_recogn_child==. replace father_recogn_child = 0 if m00m2_reconu==0 & father_recogn_child==. replace father_recogn_child = 0 if m02m_recon==2 & father_recogn_child==. label var father_recogn_child "father has recognized the child, 2 months" label define father_recogn_child 0 "no" 1 "yes" tab father_recogn_child, missing * g child_hhld = 1 if m02m_efvit==1 replace child_hhld = 2 if m02m_efvit==2 replace child_hhld = 3 if m02m_efvit==3 replace child_hhld = 4 if m02m_efvit==4 replace child_hhld = 5 if m02m_efvit==5 replace child_hhld = 6 if inlist(m02m_efvit,6,7) replace child_hhld = 6 if m02x_typqmere2m==3 & missing(child_hhld) replace child_hhld = 5 if m02x_typqmere2m==4 & missing(child_hhld) replace child_hhld = 3 if m02x_typqpecf2m==3 & missing(child_hhld) replace child_hhld = 6 if m02x_typqpecf2m==5 & missing(child_hhld) replace child_hhld = 5 if m02x_typqpecf2m==6 & missing(child_hhld) replace child_hhld = 2 if m02x_typqpecf2m==7 & missing(child_hhld) replace child_hhld = 6 if m02x_typqpecf2m==8 & missing(child_hhld) replace child_hhld = 5 if m02x_typqpecf2m==9 & missing(child_hhld) replace child_hhld = 1 if m02m_lientyp_4==1 & missing(child_hhld) replace child_hhld = 2 if !inlist(m02m_lientyp_4,1) & missing(child_hhld) label var child_hhld "person living with the child, 2 months" label define child_hhld 1 "both father and mother" 2 "mother" 3 "father" 4 /// "rotating custody" 5 "placed child" 6 "at the hospital" tab child_hhld, missing **if father is not in the household, the father did not recognise the child, // * and he did not answer the questionnaire.... g f_unknown = 1 if child_hhld==2 & !inlist(m02p_lientyp_4,1) & /// father_recogn_child==0 replace f_unknown = 1 if inlist(m02m_infper,2,3,4) & f_unknown==. replace f_unknown = 0 if f_unknown==. lab var f_unknown "the father is unknown to elfe, 2 months" lab define f_unknown 1 "yes" 0 "no" lab values f_unknown f_unknown tab f_unknown, missing tab f_unknown if months2==1, missing ******************************************************************************* ************************** FATHER'S FAMILY ************************************ ******************************************************************************* //3. INFORMATION ABOUT FATHER'S FAMILY //3.1. Father //Born in france g fbirthfr = 1 if m02p_lnais_4==1 & m02p_lientyp_4==1 replace fbirthfr = 0 if m02p_lnais_4==2 & m02p_lientyp_4==1 replace fbirthfr = 1 if m02m_lnais_4==1 & m02m_lientyp_4==1 & missing(fbirthfr) replace fbirthfr = 0 if m02m_lnais_4==2 & m02m_lientyp_4==1 & missing(fbirthfr) replace fbirthfr = 1 if m00m2_lieunaisp==1 & missing(fbirthfr) replace fbirthfr = 0 if m00m2_lieunaisp==2 & missing(fbirthfr) label var fbirthfr "father born in france" label define fbirthfr 1 "yes" 0 "no" label values fbirthfr fbirthfr tab fbirthfr, missing //French nationality at birth g fnationfr = 1 if m02p_natio1n_4==1 & m02p_lientyp_4==1 //born with french nationality replace fnationfr = 0 if inlist(m02p_natio1n_4,2,3,4) & m02p_lientyp_4==1 replace fnationfr = 1 if m02m_natio1n_4==1 & m02m_lientyp_4==1 & missing(fnationfr) replace fnationfr = 0 if inlist(m02m_natio1n_4,2,3,4) & m02m_lientyp_4==1 & missing(fnationfr) replace fnationfr = 1 if m00m2_natiop==1 & missing(fnationfr) replace fnationfr = 0 if inlist(m00m2_natiop,2,3) & missing(fnationfr) label var fnationfr "father french nationality at birth" label define fnationfr 1 "yes" 0 "no" label values fnationfr fnationfr tab fnationfr, missing //father's lenguage g flenghome = 1 if m02p_lang1e==2 //lenguage spoken at home with the child replace flenghome = 0 if flenghome==. & !inlist(m02p_lang1e,.) label var flenghome "lenguage spoken at home with the child, father" label define flenghome 1 "french" 0 "other" g flengent = 1 if m02p_lang==1 //interview lenguage replace flengent = 0 if flengent==. & !inlist(m02p_lang,.) label var flengent "lenguage at interview, father" label define flengent 1 "french" 0 "other" g fleng = 1 if flenghome==1 & flengent==1 replace fleng = 0 if flenghome==0 & flengent==1 //french origin lenguage replace fleng = 0 if flenghome==0 & flengent==0 //foreign lenguage as origin replace fleng = 2 if flenghome==1 & flengent==0 //french at home but foreign lenguage at interview label var fleng "main lenguage" label define fleng 1 "french" 0 "foreign lenguage" 2 "not clear" tab fleng, missing //3.2. Grandmother father //Born in france g f_gmbirthfr = 1 if m02p_mblieu==1 replace f_gmbirthfr = 0 if m02p_mblieu==2 foreach i of numlist 5/10{ //5/11 replace f_gmbirthfr = 1 if m02p_lnais_`i'==1 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==2 & missing(f_gmbirthfr) //grandparent (father), female, born in france replace f_gmbirthfr = 0 if m02p_lnais_`i'==2 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==2 & missing(f_gmbirthfr) } replace f_gmbirthfr = 1 if m02m_bmlieu==1 & missing(f_gmbirthfr) replace f_gmbirthfr = 0 if m02m_bmlieu==2 & missing(f_gmbirthfr) foreach i of numlist 4/10{ replace f_gmbirthfr = 1 if m02m_lnais_`i'==1 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==2 & missing(f_gmbirthfr) //grandparent (father), female, born in france replace f_gmbirthfr = 0 if m02m_lnais_`i'==2 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==2 & missing(f_gmbirthfr) } label var f_gmbirthfr "grandmother born in france (father)" label define f_gmbirthfr 1 "yes" 0 "no" label values f_gmbirthfr f_gmbirthfr tab f_gmbirthfr, missing //French nationality at birth g f_gmnationfr = 1 if m02p_mbfranc==1 replace f_gmnationfr = 0 if inlist(m02p_mbfranc,2,3,4) foreach i of numlist 5/10{ //5/11 replace f_gmnationfr = 1 if m02p_natio1n_`i'==1 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==2 & missing(f_gmnationfr) //grandparent (mother), female french nationality at birth replace f_gmnationfr = 0 if inlist(m02p_natio1n_`i',2,3,4) & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==2 & missing(f_gmnationfr) } replace f_gmnationfr = 1 if m02m_bmfranc==1 & missing(f_gmnationfr) replace f_gmnationfr = 0 if inlist(m02m_bmfranc,2,3,4) & missing(f_gmnationfr) foreach i of numlist 4/10{ replace f_gmnationfr = 1 if m02m_natio1n_`i'==1 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==2 & missing(f_gmnationfr) //grandparent (mother), female french nationality at birth replace f_gmnationfr = 0 if inlist(m02m_natio1n_`i',2,3,4) & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==2 & missing(f_gmnationfr) } label var f_gmnationfr "grandmother french nationality at birth (father)" label define f_gmnationfr 1 "yes" 0 "no" label values f_gmnationfr f_gmnationfr tab f_gmnationfr, missing //grandmother father main lenguage g f_gmleng = 1 if m02p_peremlan==1 replace f_gmleng = 0 if f_gmleng==. & !inlist(m02p_peremlan,.) replace f_gmleng = 1 if m02p_mblang==1 & f_gmleng==. replace f_gmleng = 0 if !inlist(m02p_mblang,.) & f_gmleng==. replace f_gmleng = 1 if m02m_peremlan==1 & f_gmleng==. replace f_gmleng = 0 if !inlist(m02m_peremlan,.) & f_gmleng==. replace f_gmleng = 1 if m02m_bmlang==1 & f_gmleng==. & m02m_lientyp_4==1 replace f_gmleng = 0 if !inlist(m02m_bmlang,.) & !inlist(m02m_bmlang,1) & !inlist(m02m_bmlang,999) & m02m_lientyp_4==1 //not condition //on missing data, because there are some differences and i tend to trust info on foreign lenguage label var f_gmleng "main langue grand-mère" label define f_gmleng 1 "français" 0 "autre langue" tab f_gmleng //3.3. Grandfather father //Born in france g f_gfbirthfr = 1 if m02p_pblieu==1 replace f_gfbirthfr = 0 if m02p_pblieu==2 foreach i of numlist 5/10{ //5/11 replace f_gfbirthfr = 1 if m02p_lnais_`i'==1 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==1 & missing(f_gfbirthfr) //grandparent (father), male, born in france replace f_gfbirthfr = 0 if m02p_lnais_`i'==2 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==1 & missing(f_gfbirthfr) } replace f_gfbirthfr = 1 if m02m_bplieu==1 & missing(f_gfbirthfr) replace f_gfbirthfr = 0 if m02m_bplieu==2 & missing(f_gfbirthfr) foreach i of numlist 4/10{ replace f_gfbirthfr = 1 if m02m_lnais_`i'==1 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==1 & missing(f_gfbirthfr) //grandparent (father), male, born in france replace f_gfbirthfr = 0 if m02m_lnais_`i'==2 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==1 & missing(f_gfbirthfr) } label var f_gfbirthfr "grandfather born in france (father)" label define f_gfbirthfr 1 "yes" 0 "no" label values f_gfbirthfr f_gfbirthfr tab f_gfbirthfr, missing //French nationality at birth g f_gfnationfr = 1 if m02p_pbfranc==1 replace f_gfnationfr = 0 if inlist(m02p_pbfranc,2,3,4) foreach i of numlist 5/10{ //5/11 replace f_gfnationfr = 1 if m02p_natio1n_`i'==1 & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==1 & missing(f_gfnationfr) //grandparent (father), male french nationality at birth replace f_gfnationfr = 0 if inlist(m02p_natio1n_`i',2,3,4) & m02p_lientyp_`i'==9 & m02p_sexec1_`i'==1 & missing(f_gfnationfr) } replace f_gfnationfr = 1 if m02m_bpfranc==1 & missing(f_gfnationfr) replace f_gfnationfr = 0 if inlist(m02m_bpfranc,2,3,4) & missing(f_gfnationfr) foreach i of numlist 4/10{ replace f_gfnationfr = 1 if m02m_natio1n_`i'==1 & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==1 & missing(f_gfnationfr) //grandparent (father), male french nationality at birth replace f_gfnationfr = 0 if inlist(m02m_natio1n_`i',2,3,4) & m02m_lientyp_`i'==9 & m02m_sexec1_`i'==1 & missing(f_gfnationfr) } label var f_gfnationfr "grandfather french nationality at birth (father)" label define f_gfnationfr 1 "yes" 0 "no" label values f_gfnationfr f_gfnationfr tab f_gfnationfr, missing //grandfather father main lenguage g f_gfleng = 1 if m02p_pereplan==1 replace f_gfleng = 0 if f_gfleng==. & !inlist(m02p_pereplan,.) replace f_gfleng = 1 if m02p_pblang==1 & f_gfleng==. replace f_gfleng = 0 if !inlist(m02p_pblang,.) & f_gfleng==. replace f_gfleng = 1 if m02m_pereplan==1 & f_gfleng==. replace f_gfleng = 0 if !inlist(m02m_pereplan,.) & f_gfleng==. replace f_gfleng = 1 if m02m_bplang==1 & f_gfleng==. & m02m_lientyp_4==1 replace f_gfleng = 0 if !inlist(m02m_bplang,.,1,999) & m02m_lientyp_4==1 //not condition //on missing data, because there are some differences and i tend to trust info on foreign lenguage label var f_gfleng "main lenguage grandfather father" label define f_gfleng 1 "french" 0 "other" tab f_gfleng //4. IMPUTATIONS OF FATHER' FAMILLY -> LENGUAGE //4.1. FATHER tab fleng fbirthfr, missing tab fleng fbirthfr //[aweight = M00E_PONDVAL] replace fbirthfr = rbinomial(1, 0.93) if fbirthfr==. & fleng==1 tab fleng fbirthfr, missing tab fleng fnationfr, missing tab fleng fnationfr //[aweight = M00E_PONDVAL] replace fnationfr = rbinomial(1, 0.245) if fnationfr==. & flenghome==0 replace fnationfr = rbinomial(1, 0.936) if fnationfr==. & flenghome==1 tab fleng fnationfr, missing //4.2. GRANDMOTHER FATHER tab f_gmleng f_gmbirthfr, missing tab f_gmleng f_gmbirthfr replace f_gmbirthfr = rbinomial(1, 0.164) if f_gmleng==0 & f_gmbirthfr==. replace f_gmbirthfr = rbinomial(1, 0.902) if f_gmleng==1 & f_gmbirthfr==. tab f_gmleng f_gmbirthfr, missing tab f_gmleng f_gmnationfr, missing tab f_gmleng f_gmnationfr replace f_gmnationfr = rbinomial(1, 0.195) if f_gmleng==0 & f_gmnationfr==. replace f_gmnationfr = rbinomial(1, 0.937) if f_gmleng==1 & f_gmnationfr==. tab f_gmleng f_gmnationfr, missing //4.3. GRANDFATHER FATHER tab f_gfleng f_gfbirthfr, missing tab f_gfleng f_gfbirthfr replace f_gfbirthfr = rbinomial(1, 0.171) if f_gfleng==0 & f_gfbirthfr==. replace f_gfbirthfr = rbinomial(1, 0.882) if f_gfleng==1 & f_gfbirthfr==. tab f_gfleng f_gfbirthfr, missing tab f_gfleng f_gfnationfr, missing tab f_gfleng f_gfnationfr replace f_gfnationfr = rbinomial(1, 0.193) if f_gfleng==0 & f_gfnationfr==. replace f_gfnationfr = rbinomial(1, 0.923) if f_gfleng==1 & f_gfnationfr==. tab f_gfleng f_gfnationfr, missing //5. IMPUTATIONS FATHER' FAMILLY -> OTHER MEMBERS' INFO //5.1. From grandparents' information, FATHER g f_parents = 1 if f_gfnationfr==1 | f_gmnationfr==1 replace f_parents = 0 if f_gfnationfr==0 & f_gmnationfr==0 label var f_parents "At least one grandparent has french nationality, father" label define f_parents 1 "Yes" 0 "No" tab fbirthfr fnationfr, missing replace fnationfr = 1 if f_parents==1 & fnationfr==. replace fnationfr = 0 if f_parents==0 & fnationfr==. tab fbirthfr fnationfr, missing //6. IMPUTATIONS FATHER' FAMILLY -> OWN BIRTH PLACE AND NATIONALITY //6.1. FATHER tab fbirthfr fnationfr, missing tab fbirthfr fnationfr replace fbirthfr = rbinomial(1, 0.05) if fnationfr==0 & fbirthfr==. replace fbirthfr = rbinomial(1, 0.983) if fnationfr==1 & fbirthfr==. replace fnationfr = rbinomial(1, 0.099) if fnationfr==. & fbirthfr==0 replace fnationfr = rbinomial(1, 0.992) if fnationfr==. & fbirthfr==1 tab fbirthfr fnationfr, missing //7. IMPUTATIONS FATHER' FAMILLY -> OTHER MEMBERS' INFO //7.1. From father nationality, GRANDMOTHER FATHER tab f_gmbirthfr f_gmnationfr, missing replace f_gmnationfr = 0 if fnationfr==0 & f_gmnationfr==. replace f_gmnationfr = 1 if fnationfr==1 & f_gfnationfr==0 & f_gmnationfr==. tab f_gmbirthfr f_gmnationfr, missing //7.2. From father nationality, GRANDFATHER FATHER tab f_gfbirthfr f_gfnationfr, missing replace f_gfnationfr = 0 if fnationfr==0 & f_gfnationfr==. replace f_gfnationfr = 1 if fnationfr==1 & f_gmnationfr==0 & f_gfnationfr==. tab f_gfbirthfr f_gfnationfr, missing //8. IMPUTATIONS FATHER' FAMILLY -> OWN BIRTH PLACE AND NATIONALITY //8.1. GRANDMOTHER FATHER tab f_gmbirthfr f_gmnationfr replace f_gmbirthfr = rbinomial(1, 0.952) if f_gmnationfr==1 & f_gmbirthfr==. replace f_gmbirthfr = rbinomial(1, 0.038) if f_gmnationfr==0 & f_gmbirthfr==. replace f_gmnationfr = rbinomial(1, 0.993) if f_gmnationfr==. & f_gmbirthfr==1 replace f_gmnationfr = rbinomial(1, 0.21) if f_gmnationfr==. & f_gmbirthfr==0 tab f_gmbirthfr f_gmnationfr, missing //8.2. GRANDFATHER FATHER tab f_gfbirthfr f_gfnationfr replace f_gfbirthfr = rbinomial(1, 0.947) if f_gfnationfr==1 & f_gfbirthfr==. replace f_gfbirthfr = rbinomial(1, 0.035) if f_gfnationfr==0 & f_gfbirthfr==. replace f_gfnationfr = rbinomial(1, 0.993) if f_gfnationfr==. & f_gfbirthfr==1 replace f_gfnationfr = rbinomial(1, 0.215) if f_gfnationfr==. & f_gfbirthfr==0 tab f_gfbirthfr f_gfnationfr, missing *********************** MIGRATION VARIABLES FATHER ***************************** //1. Grandparents father g f_gmimm = 1 if f_gmbirthfr==0 & f_gmnationfr==0 replace f_gmimm = 0 if f_gmimm==. & !inlist(f_gmbirthfr,.) & !inlist(f_gmnationfr,.) label var f_gmimm "Grandmother born abroad with foreign nationality (regardless of current residence place), father" label define f_gmimm 1 "yes" tab f_gmimm if months2==1 & f_unknow==0, missing g f_gfimm = 1 if f_gfbirthfr==0 & f_gfnationfr==0 replace f_gfimm = 0 if f_gfimm==. & !inlist(f_gfbirthfr,.) & !inlist(f_gfnationfr,.) label var f_gfimm "Grandfather born abroad with foreign nationality (regardless of current residence place), father" label define f_gfimm 1 "yes" tab f_gfimm if months2==1 & f_unknow==0, missing **EXTRA IMPUTATION tab f_gmimm f_gfimm if months==1 & f_unknow==0, missing //WE CAN IMPUTE MORE tab f_gmimm f_gfimm, missing replace f_gmimm = rbinomial(1, 0.04) if f_gfimm==0 & f_gmimm==. replace f_gfimm = rbinomial(1, 0.055) if f_gmimm==0 & f_gfimm==. tab f_gmimm f_gfimm if months==1 & f_unknow==0, missing //2. Father g fimm = 1 if fbirthfr==0 & fnationfr==0 //immigrant mother replace fimm = 2 if f_gmimm==1 & f_gfimm==1 & fbirthfr==1 & missing(fimm) //mother descendant of two immigrants g f_oneimm = 1 if f_gmimm==1 & f_gfimm==0 replace f_oneimm = 1 if f_gmimm==1 & f_gfimm==. replace f_oneimm = 1 if f_gmimm==0 & f_gfimm==1 replace f_oneimm = 1 if f_gmimm==. & f_gfimm==1 replace fimm = 3 if f_oneimm==1 & fbirthfr==1 & missing(fimm) //mother descendant of at least one immigrant replace fimm = 4 if !inlist(fbirthfr,.) & !inlist(fnationfr,.)& missing(fimm) //rest of population label var fimm "father immigrant history" label define fimm 1 "immigrant father" 2 "father descendant of two immigrants" 3 "father descendant of at least one immigrant" 4 "rest of population" label values fimm fimm tab fimm, missing tab fimm if months2==1 & f_unknow==0, missing tab fimm if months2==1 & f_unknow==0 & !missing(f_gfimm), missing *****EXTRA //9. WHAT ABOUT ALL MISSING OBSERVATIONS?? //FATHER tab fbirthfr fnationfr, missing tab fbirthfr fnationfr if months2==1, missing tab fbirthfr fnationfr if f_unknown==0, missing tab fbirthfr fnationfr if months2==1 & f_unknown==0, missing **-> Excluding unknown fathers and keeping just children in 2 months survey, *we just have 28 missing values *keep if fbirthfr==. & fnationfr==. & months2==1 & f_unknown==0 *tab M00M2_COUPLE M00M2_ETATMAT, missing *tab M00M2_COUPLE child_hhld, missing *tab child_hhld , missing *keep M00M2_ETATMAT M00M2_COUPLE child_hhld M02M_LIENTYP_4 M02P_LIENTYP_4 /// *M02X_CONTPECF2M father_recogn_child father_present_birth M02M_INFPER //GRANDMOTHER, FATHER tab f_gmbirthfr f_gmnationfr, missing tab f_gmbirthfr f_gmnationfr if months2==1, missing tab f_gmbirthfr f_gmnationfr if f_unknown==0, missing tab f_gmbirthfr f_gmnationfr if months2==1 & f_unknown==0, missing //GRANDFATHER, FATHER tab f_gfbirthfr f_gfnationfr, missing tab f_gfbirthfr f_gfnationfr if months2==1, missing tab f_gfbirthfr f_gfnationfr if f_unknown==0, missing tab f_gfbirthfr f_gfnationfr if months2==1 & f_unknown==0, missing *** ******************************************************************************* ************************** MOTHER'S FAMILY ************************************ ******************************************************************************* //3. INFORMATION ABOUT MOTHER'S FAMILY //3.1. Mother //Born in france, MOTHER g mbirthfr = 1 if m02m_lnais_3==1 //born in france replace mbirthfr = 0 if m02m_lnais_3==2 //born abroad foreach i of numlist 3/10{ replace mbirthfr = 1 if m02p_lnais_`i'==1 & m02p_lientyp_`i'==2 & missing(mbirthfr) replace mbirthfr = 0 if m02p_lnais_`i'==2 & m02p_lientyp_`i'==2 & missing(mbirthfr) } replace mbirthfr = 1 if m00m2_lieunaism==1 & missing(mbirthfr) replace mbirthfr = 0 if m00m2_lieunaism==2 & missing(mbirthfr) label var mbirthfr "mother born in france" label define mbirthfr 1 "yes" 0 "no" label values mbirthfr mbirthfr tab mbirthfr, missing //French nationality at birth, MOTHER g mnationfr = 1 if m02m_natio1n_3==1 //born with french nationality replace mnationfr = 0 if inlist(m02m_natio1n_3,2,3,4) //not born with french nationality foreach i of numlist 3/10{ replace mnationfr = 1 if m02p_natio1n_`i'==1 & m02p_lientyp_`i'==2 & missing(mnationfr) replace mnationfr = 0 if inlist(m02p_natio1n_`i',2,3,4) & m02p_lientyp_`i'==2 & missing(mnationfr) } replace mnationfr = 1 if m00m2_natiom==1 & missing(mnationfr) replace mnationfr = 0 if inlist(m00m2_natiom,2,3,4) & missing(mnationfr) label var mnationfr "mother french nationality at birth" label define mnationfr 1 "yes" 0 "no" label values mnationfr mnationfr tab mnationfr, missing //mother's lenguage, mother g mlenghome = 1 if m02m_lang1e==2 //lenguage spoken at home with the child replace mlenghome = 0 if mlenghome==. & !inlist(m02m_lang1e,.) label var mlenghome "lenguage spoken at home with the child, mother" label define mlenghome 1 "french" 0 "other" g mlengent = 1 if m02m_lang==1 //interview lenguage replace mlengent = 0 if mlengent==. & !inlist(m02m_lang,.) label var mlengent "lenguage at interview, mother" label define mlengent 1 "french" 0 "other" g mleng = 1 if mlenghome==1 & mlengent==1 replace mleng = 0 if mlenghome==0 & mlengent==1 //french origin lenguage replace mleng = 0 if mlenghome==0 & mlengent==0 //foreign lenguage as origin replace mleng = 2 if mlenghome==1 & mlengent==0 //french at home but foreign lenguage at interview label var mleng "main lenguage, mother" label define mleng 1 "french" 0 "foreign lenguage" 2 "not clear" tab mleng, missing //3.2. Grandmother mother //Born in france g m_gmbirthfr = 1 if m02m_mblieu==1 replace m_gmbirthfr = 0 if m02m_mblieu==2 foreach i of numlist 4/10{ replace m_gmbirthfr = 1 if m02m_lnais_`i'==1 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==2 & missing(m_gmbirthfr) //grandparent (mother), female, born in france replace m_gmbirthfr = 0 if m02m_lnais_`i'==2 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==2 & missing(m_gmbirthfr) } replace m_gmbirthfr = 1 if m02p_bmlieu==1 & missing(m_gmbirthfr) replace m_gmbirthfr = 0 if m02p_bmlieu==2 & missing(m_gmbirthfr) foreach i of numlist 5/9{ replace m_gmbirthfr = 1 if m02p_lnais_`i'==1 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==2 & missing(m_gmbirthfr) //grandparent (mother), female, born in france replace m_gmbirthfr = 0 if m02p_lnais_`i'==2 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==2 & missing(m_gmbirthfr) } label var m_gmbirthfr "grandmother born in france (mother)" label define m_gmbirthfr 1 "yes" 0 "no" label values m_gmbirthfr m_gmbirthfr tab m_gmbirthfr, missing //French nationality at birth g m_gmnationfr = 1 if m02m_mbfranc==1 replace m_gmnationfr = 0 if inlist(m02m_mbfranc,2,3,4) foreach i of numlist 4/10{ replace m_gmnationfr = 1 if m02m_natio1n_`i'==1 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==2 & missing(m_gmnationfr) //grandparent (mother), female french nationality at birth replace m_gmnationfr = 0 if inlist(m02m_natio1n_`i',2,3,4) & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==2 & missing(m_gmnationfr) } replace m_gmnationfr = 1 if m02p_bmfranc==1 & missing(m_gmnationfr) replace m_gmnationfr = 0 if inlist(m02p_bmfranc,2,3,4) & missing(m_gmnationfr) foreach i of numlist 5/9{ replace m_gmnationfr = 1 if m02p_natio1n_`i'==1 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==2 & missing(m_gmnationfr) //grandparent (mother), female french nationality at birth replace m_gmnationfr = 0 if inlist(m02p_natio1n_`i',2,3,4) & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==2 & missing(m_gmnationfr) } label var m_gmnationfr "grandmother french nationality at birth (mother)" label define m_gmnationfr 1 "yes" 0 "no" label values m_gmnationfr m_gmnationfr tab m_gmnationfr, missing //grandmother mother main lenguage g m_gmleng = 1 if m02m_meremlan==1 replace m_gmleng = 0 if m_gmleng==. & !inlist(m02m_meremlan,.) replace m_gmleng = 1 if m02m_mblang==1 & m_gmleng==. replace m_gmleng = 0 if !inlist(m02m_mblang,.) & m_gmleng==. replace m_gmleng = 1 if m02p_meremlan==1 & m_gmleng==. replace m_gmleng = 0 if !inlist(m02p_meremlan,.) & m_gmleng==. replace m_gmleng = 1 if m02p_bmlang==1 & m_gmleng==. & m02p_lientyp_4==1 replace m_gmleng = 0 if !inlist(m02p_bmlang,.) & !inlist(m02p_bmlang,1) & !inlist(m02p_bmlang,999) & m02p_lientyp_4==1 //not condition //on missing data, because there are some differences and i tend to trust info on foreign lenguage label var m_gmleng "main lenguage grandmother, mother" label define m_gmleng 1 "french" 0 "other" tab m_gmleng //3.3. Grandfather //Born in france g m_gfbirthfr = 1 if m02m_pblieu==1 replace m_gfbirthfr = 0 if m02m_pblieu==2 foreach i of numlist 4/10{ replace m_gfbirthfr = 1 if m02m_lnais_`i'==1 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==1 & missing(m_gfbirthfr) //grandparent (mother), male, born in france replace m_gfbirthfr = 0 if m02m_lnais_`i'==2 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==1 & missing(m_gfbirthfr) } replace m_gfbirthfr = 1 if m02p_bplieu==1 & missing(m_gfbirthfr) replace m_gfbirthfr = 0 if m02p_bplieu==2 & missing(m_gfbirthfr) foreach i of numlist 5/9{ replace m_gfbirthfr = 1 if m02p_lnais_`i'==1 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==1 & missing(m_gfbirthfr) //grandparent (mother), male, born in france replace m_gfbirthfr = 0 if m02p_lnais_`i'==2 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==1 & missing(m_gfbirthfr) } label var m_gfbirthfr "grandfather born in france (mother)" label define m_gfbirthfr 1 "yes" 0 "no" label values m_gfbirthfr m_gfbirthfr tab m_gfbirthfr, missing //French nationality at birth g m_gfnationfr = 1 if m02m_pbfranc==1 replace m_gfnationfr = 0 if inlist(m02m_pbfranc,2,3,4) foreach i of numlist 4/10{ replace m_gfnationfr = 1 if m02m_natio1n_`i'==1 & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==1 & missing(m_gfnationfr) //grandparent (mother), male french nationality at birth replace m_gfnationfr = 0 if inlist(m02m_natio1n_`i',2,3,4) & m02m_lientyp_`i'==8 & m02m_sexec1_`i'==1 & missing(m_gfnationfr) } replace m_gfnationfr = 1 if m02p_bpfranc==1 & missing(m_gfnationfr) replace m_gfnationfr = 0 if inlist(m02p_bpfranc,2,3,4) & missing(m_gfnationfr) foreach i of numlist 5/9{ replace m_gfnationfr = 1 if m02p_natio1n_`i'==1 & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==1 & missing(m_gfnationfr) //grandparent (mother), male french nationality at birth replace m_gfnationfr = 0 if inlist(m02p_natio1n_`i',2,3,4) & m02p_lientyp_`i'==8 & m02p_sexec1_`i'==1 & missing(m_gfnationfr) } label var m_gfnationfr "grandfather french nationality at birth (mother)" label define m_gfnationfr 1 "yes" 0 "no" label values m_gfnationfr m_gfnationfr tab m_gfnationfr, missing //grandfather mother main lenguage g m_gfleng = 1 if m02m_mereplan==1 replace m_gfleng = 0 if m_gfleng==. & !inlist(m02m_mereplan,.) replace m_gfleng = 1 if m02m_pblang==1 & m_gfleng==. replace m_gfleng = 0 if !inlist(m02m_pblang,.) & m_gfleng==. replace m_gfleng = 1 if m02p_mereplan==1 & m_gfleng==. replace m_gfleng = 0 if !inlist(m02p_mereplan,.) & m_gfleng==. replace m_gfleng = 1 if m02p_bplang==1 & m_gfleng==. & m02p_lientyp_4==1 replace m_gfleng = 0 if !inlist(m02p_bplang,.,1,999) & m02p_lientyp_4==1 //not condition //on missing data, because there are some differences and i tend to trust info on foreign lenguage label var m_gfleng "main lenguage grandfather mother" label define m_gfleng 1 "french" 0 "other" tab m_gfleng //4. IMPUTATIONS MOTHER'FAMILY -> LENGUAGE //4.1. We keep initial proportions before any imputation for last step, MOTHER tab mbirthfr mnationfr, missing tab mbirthfr mnationfr //4.2. MOTHER tab mleng mbirthfr, missing tab mleng mbirthfr //no missing obs tab mleng mnationfr, missing tab mleng mnationfr replace mnationfr = rbinomial(1, 0.211) if mnationfr==. & mlenghome==0 replace mnationfr = rbinomial(1, 0.931) if mnationfr==. & mlenghome==1 tab mleng mnationfr, missing //4.3. GRANDMOTHER MOTHER tab m_gmleng m_gmbirthfr, missing tab m_gmleng m_gmbirthfr replace m_gmbirthfr = rbinomial(1, 0.142) if m_gmleng==0 & m_gmbirthfr==. replace m_gmbirthfr = rbinomial(1, 0.889) if m_gmleng==1 & m_gmbirthfr==. tab m_gmleng m_gmbirthfr, missing tab m_gmleng m_gmnationfr, missing tab m_gmleng m_gmnationfr replace m_gmnationfr = rbinomial(1, 0.159) if m_gmleng==0 & m_gmnationfr==. replace m_gmnationfr = rbinomial(1, 0.924) if m_gmleng==1 & m_gmnationfr==. tab m_gmleng m_gmnationfr, missing //4.4. GRANDFATHER MOTHER tab m_gfleng m_gfbirthfr, missing tab m_gfleng m_gfbirthfr replace m_gfbirthfr = rbinomial(1, 0.144) if m_gfleng==0 & m_gfbirthfr==. replace m_gfbirthfr = rbinomial(1, 0.871) if m_gfleng==1 & m_gfbirthfr==. tab m_gfleng m_gfbirthfr, missing tab m_gfleng m_gfnationfr, missing tab m_gfleng m_gfnationfr replace m_gfnationfr = rbinomial(1, 0.157) if m_gfleng==0 & m_gfnationfr==. replace m_gfnationfr = rbinomial(1, 0.912) if m_gfleng==1 & m_gfnationfr==. tab m_gfleng m_gfnationfr, missing //5. IMPUTATIONS MOTHER'FAMILY -> OTHERS' INFO //5.1. MOTHER g m_parents = 1 if m_gfnationfr==1 | m_gmnationfr==1 replace m_parents = 0 if m_gfnationfr==0 & m_gmnationfr==0 label var m_parents "At least one grandparent has french nationality, mother" label define m_parents 1 "Yes" 0 "No" tab mbirthfr mnationfr, missing replace mnationfr = 1 if m_parents==1 & mnationfr==. replace mnationfr = 0 if m_parents==0 & mnationfr==. tab mbirthfr mnationfr, missing //6. IMPUTATIONS MOTHER'FAMILY -> BIRTH PLACE AND NATIONALITY //6.1. MOTHER tab mbirthfr mnationfr, missing tab mbirthfr mnationfr replace mbirthfr = rbinomial(1, 0.063) if mnationfr==0 & mbirthfr==. replace mbirthfr = rbinomial(1, 0.986) if mnationfr==1 & mbirthfr==. replace mnationfr = rbinomial(1, 0.094) if mnationfr==. & mbirthfr==0 replace mnationfr = rbinomial(1, 0.991) if mnationfr==. & mbirthfr==1 tab mbirthfr mnationfr, missing //7. IMPUTATIONS MOTHER'FAMILY -> OTHERS' INFO //7.1. GRANDMOTHER MOTHER tab m_gmbirthfr m_gmnationfr, missing replace m_gmnationfr = 0 if mnationfr==0 & m_gmnationfr==. replace m_gmnationfr = 1 if mnationfr==1 & m_gfnationfr==0 & m_gmnationfr==. tab m_gmbirthfr m_gmnationfr, missing //7.2. GRANDFATHER MOTHER tab m_gfbirthfr m_gfnationfr, missing replace m_gfnationfr = 0 if mnationfr==0 & m_gfnationfr==. replace m_gfnationfr = 1 if mnationfr==1 & m_gmnationfr==0 & m_gfnationfr==. tab m_gfbirthfr m_gfnationfr, missing //8. IMPUTATIONS MOTHER'FAMILY -> BIRTH PLACE AND NATIONALITY //8.1. GRANDMOTHER MOTHER tab m_gmbirthfr m_gmnationfr replace m_gmbirthfr = rbinomial(1, 0.952) if m_gmnationfr==1 & m_gmbirthfr==. replace m_gmbirthfr = rbinomial(1, 0.034) if m_gmnationfr==0 & m_gmbirthfr==. replace m_gmnationfr = rbinomial(1, 0.992) if m_gmnationfr==. & m_gmbirthfr==1 replace m_gmnationfr = rbinomial(1, 0.181) if m_gmnationfr==. & m_gmbirthfr==0 tab m_gmbirthfr m_gmnationfr, missing //8.2. GRANDFATHER MOTHER tab m_gfbirthfr m_gfnationfr replace m_gfbirthfr = rbinomial(1, 0.945) if m_gfnationfr==1 & m_gfbirthfr==. replace m_gfbirthfr = rbinomial(1, 0.039) if m_gfnationfr==0 & m_gfbirthfr==. replace m_gfnationfr = rbinomial(1, 0.99) if m_gfnationfr==. & m_gfbirthfr==1 replace m_gfnationfr = rbinomial(1, 0.191) if m_gfnationfr==. & m_gfbirthfr==0 tab m_gfbirthfr m_gfnationfr, missing *********************** MIGRATION VARIABLES MOTHER ***************************** //1. Grandparents mother g m_gmimm = 1 if m_gmbirthfr==0 & m_gmnationfr==0 replace m_gmimm = 0 if m_gmimm==. & !inlist(m_gmbirthfr,.) & !inlist(m_gmnationfr,.) label var m_gmimm "Grandmother born abroad with foreign nationality (regardless of current residence place), mother" label define m_gmimm 1 "yes" tab m_gmimm if months2==1, missing g m_gfimm = 1 if m_gfbirthfr==0 & m_gfnationfr==0 replace m_gfimm = 0 if m_gfimm==. & !inlist(m_gfbirthfr,.) & !inlist(m_gfnationfr,.) label var m_gfimm "Grandfather born abroad with foreign nationality (regardless of current residence place), mother" label define m_gfimm 1 "yes" tab m_gfimm if months2==1, missing **EXTRA IMPUTATION tab m_gmimm m_gfimm if months==1, missing //WE CAN IMPUTE MORE tab m_gmimm m_gfimm, missing replace m_gmimm = rbinomial(1, 0.04) if m_gfimm==0 & m_gmimm==. replace m_gfimm = rbinomial(1, 0.05) if m_gmimm==0 & m_gfimm==. tab m_gmimm m_gfimm if months==1, missing //2. Mother g mimm = 1 if mbirthfr==0 & mnationfr==0 //immigrant mother replace mimm = 2 if m_gmimm==1 & m_gfimm==1 & mbirthfr==1 & missing(mimm) //mother descendant of two immigrants g m_oneimm = 1 if m_gmimm==1 & m_gfimm==0 replace m_oneimm = 1 if m_gmimm==1 & m_gfimm==. replace m_oneimm = 1 if m_gmimm==0 & m_gfimm==1 replace m_oneimm = 1 if m_gmimm==. & m_gfimm==1 replace mimm = 3 if m_oneimm==1 & mbirthfr==1 & missing(mimm) //mother descendant of at least one immigrant replace mimm = 4 if !inlist(mbirthfr,.) & !inlist(mnationfr,.)& missing(mimm) //rest of population label var mimm "mother immigrant history" label define mimm 1 "immigrant mother" 2 "mother descendant of two immigrants" 3 "mother descendant of at least one immigrant" 4 "rest of population" label values mimm mimm tab mimm, missing tab mimm if months2==1, missing tab mimm if months2==1 & !missing(m_gmimm), missing //we just keep if now missings from grandparents *** //9. WHAT ABOUT ALL MISSING OBSERVATIONS?? //MOTHER tab mbirthfr mnationfr, missing tab mbirthfr mnationfr if months2==1, missing //GRANDMOTHER, FATHER tab m_gmbirthfr m_gmnationfr, missing tab m_gmbirthfr m_gmnationfr if months2==1, missing *afther all imputations, when we keep just women in 2 months survey, *we have 53 missing values *keep if m_gmbirthfr==. & m_gmnationfr==. & months2==1 //GRANDFATHER, FATHER tab m_gfbirthfr m_gfnationfr, missing tab m_gfbirthfr m_gfnationfr if months2==1, missing *afther all imputations, when we keep just women in 2 months survey, *we have 219 missing values *** /////////////////////////////////////////////////////////////////////////////// **** EXTRA **** MULTIVARIATE MULTIPLE IMPUTATION_ CHEINED mi register imputed f_gmbirthfr f_gmnationfr f_gfbirthfr f_gfnationfr // we indicate the set of variables to be imputed mi register regular fbirthfr fnationfr fleng // variables to use in imputation -> must be full variables. without missings mi describe keep if months2==1 & f_unknown==0 mi impute chained (logit) f_gmbirthfr f_gmnationfr f_gfbirthfr f_gfnationfr = i.fbirthfr i.fnationfr i.fleng, add(10) force //10 number of imputations *=============================== THE END =====================================