use https://stats.idre.ucla.edu/stat/stata/notes/hsb2
regress read write i.female math ib3.prog

use https://stats.idre.ucla.edu/wp-content/uploads/2017/05/hsb2_mar.dta, clear
sum

regress read write i.female math ib3.prog

tab prog, gen(progcat)

sum female write read math progcat1 progcat2, sep(6)
corr female write read math progcat1 progcat2
pwcorr female write read math progcat1 progcat2, obs


foreach var of varlist female write read math progcat1 progcat2 progcat3 {
egen mean`var' = mean(`var')
replace `var' =  mean`var' if missing(`var')
drop mean`var' 
}

sum female write read math progcat1 progcat2, sep(6)
corr female write read math progcat1 progcat2

use https://stats.idre.ucla.edu/wp-content/uploads/2017/05/hsb2_mar.dta, clear
*mdesc needs to be installed
mdesc female write read math prog 
mi set mlong

*help mi styles
*webuse miproto
*mi convert flong, clear
mi misstable summarize female write read math prog
mi misstable patterns female write read math prog
mi misstable patterns female write read math prog, frequency


tab prog, gen(progcat)
pwcorr female write read math progcat1 progcat2 socst science, obs

*gen female_flag=1
*replace female_flag=0 if female==.

*gen write_flag=1
*replace write_flag=0 if write==.

*gen read_flag=1
*replace read_flag=0 if read==.

*gen math_flag=1
*replace math_flag=0 if math==.

*gen prog_flag=1
*replace prog_flag=0 if prog==.


gen female_flag = !missing(female)
gen write_flag  = !missing(write)
gen read_flag   = !missing(read)
gen math_flag   = !missing(math)
gen prog_flag   = !missing(prog)



foreach var of varlist female_flag - prog_flag{
display "socst by `var'"
ttest socst, by(`var')
}

foreach var of varlist female_flag - prog_flag{
display "science by `var'"
ttest science, by(`var')
}
*Specify variables that we want to impute
mi register imputed female write read math progcat1 progcat2 science
*Imputation phase
mi impute mvn female write read math progcat1 progcat2 science = socst, add(10) rseed (53421)
* runs the model for each imputed data set and combines the results
mi estimate: regress read write female math progcat1 progcat2
* Imputation Diagnostics
mi estimate, vartable dftable


mi impute mvn write read female math science progcat1 progcat2 = socst, ///
mcmconly burnin(1000) rseed(53421) saveptrace(trace, replace)

mi ptrace describe trace 
mi ptrace use trace, clear


tsset iter

tsline b_y3x1, name(gr1,replace) ytitle("Coefficient on Socst" "used to predict Female") xtitle("iter") 
tsline v_y3y3, name(gr2,replace) ytitle(Female Variance) xtitle("iter") 
graph combine gr1 gr2 , xcommon cols(1) b1title(Iteration)


ac b_y3x1, ytitle("Coefficient on Socst" "used to predict Female") xtitle("") ciopts(astyle(none)) ///
note("") name(ac1, replace) lags(100)

ac v_y3y3,  ytitle(Female Variance) xtitle("") ciopts(astyle(none)) note("") name(ac2, replace) lags(100)

graph combine ac1 ac2, xcommon cols(1)  title(Autocorrelations) b1title(Lag)


use https://stats.idre.ucla.edu/wp-content/uploads/2017/05/hsb2_mar.dta, clear
mi set mlong
mi register imputed female write read math prog science
mi impute chained (logit) female (mlogit) prog (regress) write read math science = socst, ///
add(10) rseed (53421) savetrace(trace1,replace)

mi estimate: regress read write i.female math ib3.prog
mi estimate, vartable dftable
use trace1,clear
describe
reshape wide *mean *sd, i(iter) j(m)
tsset iter
tsline read_mean1, name(mice1,replace)legend(off) ytitle("Mean of Read")

tsline read_mean*, name(mice1,replace)legend(off) ytitle("Mean of Read")
tsline read_sd*, name(mice2, replace) legend(off) ytitle("SD of Read")
graph combine mice1 mice2, xcommon cols(1) title(Trace plots of summaries of imputed values)

