************************************************************* * * MISSING BY CONSTRUCTION * *********************** * dati longitudinali non chiedono ai rispondenti informazioni * precedentemente raccolte ************************************************************* tab dn014_ wave if interview==1,mi tab dn014_ dn044_ if interview==1,mi sort mergeid wave br mergeid wave dn014 dn044_ ************************************************************** *ci sono anche risposte mancanti dovute al tipo di rispondente * ossia a colui che risponde per gli altri nel nuclo famigliare ************************************************************** sort hhid1 br mergeid hhid1 hou_resp ho002_ ******************************************************* *riportare informazioni da una wave a quella successiva ******************************************************* gen marital_stat=dn014 sort mergeid wave replace marital_stat=marital_stat[_n-1] if marital_s==. & mergeid==mergeid[_n-1] & dn044==5 *etichette lab def n 1 "married" 2 "partnership" 3 "living sep" 4 "never married" 5 "divorced" 6 "widowed" lab value marital_stat n sort mergeid wave br mergeid wave dn014 marital_s dn044_ *********************************************** * bisogna capire chi sono gli altri rispondenti * con valori mancanti *********************************************** tab marital_s wave if interview==1,mi tab marital_s wave if interview==1,mi col tab marital_s dn044_ if interview==1,mi gen xx=1 if marital_s==. & interview==1 bys mergeid: egen miss_marital=min(xx) sort mergeid wave br mergeid wave interview dn014 marital_sta dn044_ if miss_mar==1 ********************************************** * sfruttiamo la struttura gerarchica dei dati * per capire i missing ********************************************** * ID della famiglia a seconda della wave ********************************************** gen IDfam=hhid1 replace IDfam=hhid2 if IDfam=="" bys IDfam: egen miss_fam=min(miss_marital) sort IDfam wave br mergeid IDfam wave interview dn014 marital_sta dn044_ mergeidp1 mergeidp2 if miss_fam==1 ********************************************* * ID del partner ********************************************* * logica: se ha un partner dovrebbe essere * convivente o coniugato ********************************************* gen IDpartner=mergeidp1 replace IDpartner=mergeidp2 if IDpartner=="" ******************************************** * creiamo un indicatore che riporta lo stato * civile riportato dal partner ******************************************** sort IDfam wave gen partn=. set more off forval i = 1/10 { replace partn=marital_s[_n-`i'] if IDfam==IDfam[_n-`i'] & marital_s==. & IDpartner==mergeid[_n-`i'] & IDpartn!="" & partn==. & wave==wave[_n-`i'] replace partn=marital_s[_n+`i'] if IDfam==IDfam[_n+`i'] & marital_s==. & IDpartner==mergeid[_n+`i'] & IDpartn!="" & partn==. & wave==wave[_n-`i'] } * br mergeid IDfam wave interview dn014 marital_sta dn044_ mergeidp1 mergeidp2 if miss_fam==1 *********************************************************************** * possiamo imputare solo gli sposati e coloro che vivono con un partner * in quanto un divorziato puņ convivere con un nuovo partner che non * riporta il proprio stato civile (puņ essere anch'egli divorziato o no) ************************************************************************ replace marital_s=partn if marital_s==. & partn>0 & partn<4 recode marital_s(-1 -2=.) tab marital_s if interview==1,mi *********************************************************************** *********************************************************************** * * I MISSING "VERI" (NON PER COSTRUZIONE DELLA SURVEY) * *********************************************************************** gen miss=1 if marital_s==. & interview==1 recode miss(.=0) if interview==1 tabstat age_int if interview==1, by(miss) st(mean n) tab gender miss if interview==1, row tab country miss if interview==1, row tabstat adl if interview==1, by(miss) st(mean n) tab ILgroup miss if interview==1, col logit miss adl c.age_int##c.age_int gender i.country wave *** tab marital_s if interview==1 tab dn014 if interview==1 hist marital_s if interview==1, discrete hist dn014 if interview==1 & dn014>0, discrete ************************************************************ ************************************************************ * * IPOTIZZIAMO DI VOLER FARE UNO STUDIO SULLA FORZA DI * DELLA PRESA DELLA MANO e LO STATO CIVILE * ************************************************************ * risultati validi n= 61,466 *********************************************************** tabstat maxgrip if interview==1, by( dn014_) st(n mean) tabstat maxgrip if interview==1, by(marital_s) st(n mean) ******************** * VARIABILE ORIGINALE ********************* recode dn014 (min/-1=.), gen(marit2) lab value marit2 n reg maxgrip i.marit2 wave if interview==1 margins marit2 marginsplot *************************************************** * VARIABILE CONSIDERANDO I MISSING PER COSTRUZIONE *************************************************** reg maxgrip i.marital_s wave if interview==1 margins marital_s marginsplot ************************************ *VARIABILE CON UNA CATEGORIA MISSING ************************************ recode marital_s (.=7 "missing"), gen(marit3) lab value marit3 n hist marit3 if interview==1, discrete reg maxgrip i.marit3 wave if interview==1 margins marit3 marginsplot ************************************************ * SOSTITUZIONE CON LA MODA ************************************************ gen marit4=marital_s recode marit4(.=1) lab value marit4 n hist marit4 if interview==1, discrete reg maxgrip i.marit4 wave if interview==1 margins marit4 marginsplot ******************************************************* ******************************************************* * * MISSING SULLA DIPENDENTE * ******************************************************* tab wave if interview==1 & maxgrip==. hist maxgrip ************************************ * SOSTITUZIONE CON LA MEDIA *********************************** mean maxgrip if interview==1 recode maxgrip (.=34.18),gen(grip2) hist grip2 if interview==1 tabstat maxgrip grip2 if interview==1, st(sd n mean p25 p50 p75) ************************************ * SOSTITUZIONE CON LA MEDIA DI GRUPPO ************************************* mean maxgrip if interview==1, over(marital_s) gen grip3=maxgrip recode grip3(.=35.64) if marital_s==1 recode grip3(.=38.436) if marital_s==2 recode grip3(.=34.51) if marital_s==3 recode grip3(.=33.646) if marital_s==4 recode grip3(.=34.504) if marital_s==5 recode grip3(.=25.97) if marital_s==6 hist grip2 if interview==1 tabstat maxgrip grip2 grip3 if interview==1, st(sd n mean p25 p50 p75) hist maxgrip if interview==1 hist grip3 if interview==1 ************************************************************ * SOSTITUZIONE CON VALORI CASUALI UNIFORMEMENTE DISTRIBUITI ************************************************************ gen double xx=(92-1) * runiform()+1 if maxgrip==. & interview==1 gen i = round(xx) gen grip4=maxgrip replace grip4=i if grip4==. hist grip4 ************************************************************ *SOSTITUZIONE CON VALORI CASUALI DISTRIBUITI NORMALMENTE ************************************************************ drop xx i set seed 10000 gen double xx=rnormal(34.18, 12.11) if maxgrip==. & interview==1 replace xx=xx+7 gen i=round(xx) gen grip5=maxgrip replace grip5=i if grip5==. hist grip5 ****************************************** * COME CAMBIANO I COEFFICIENTI IN UNA OLS ****************************************** reg maxgrip i.marit2 wave gender if interview==1 reg maxgrip i.marital_s wave gender if interview==1 reg maxgrip i.marit3 wave gender if interview==1 reg maxgrip i.marit4 wave gender if interview==1 reg grip2 i.marit2 wave gender if interview==1 reg grip2 i.marital_s wave gender if interview==1 reg grip2 i.marit3 wave gender if interview==1 reg grip2 i.marit4 wave gender if interview==1 reg grip3 i.marit2 wave gender if interview==1 reg grip3 i.marital_s wave gender if interview==1 reg grip3 i.marit3 wave gender if interview==1 reg grip3 i.marit4 wave gender if interview==1 reg grip4 i.marit2 wave gender if interview==1 reg grip4 i.marital_s wave gender if interview==1 reg grip4 i.marit3 wave gender if interview==1 reg grip4 i.marit4 wave gender if interview==1 reg grip5 i.marit2 wave gender if interview==1 reg grip5 i.marital_s wave gender if interview==1 reg grip5 i.marit3 wave gender if interview==1 reg grip5 i.marit4 wave gender if interview==1 ******************************************************** * Chi sono coloro che non riportano la forza della mano? ******************************************************** drop miss gen miss=1 if maxgrip==. & interview==1 recode miss(.=0) if maxgrip!=. & interview==1 tabstat age_int adl if interview==1 , st(sd n mean p25 p50 p75) by(miss) tab gender miss if interview==1, row tab country miss if interview==1, row tab wave miss if interview==1, row tab marital_s miss if interview==1, row