*! version 1.2 May 2015 E. Masset /*syncmrates is the mother programme with 3 sub-routines: - syncmrates_1: child mortality rates with bootstrap standard errors - syncmrates_2: test differences in mortality rates between groups - syncmrates_3: mortality trends with CIs over time*/ program syncmrates version 13 syntax varlist(min=3 max=3) [iw pw] [if] [, testby(varlist max=1) trend(string) t1(integer 1) t0(integer 61) plot(string) *] if "`testby'"~="" { /*error messages for option testby*/ if "`trend'"~="" | "`plot'"~="" { di as error "options testby and trend/plot cannot be specified together" exit 198 } quietly summ `testby' `if' if r(min)==r(max) { di as error "`testby' is a constant" exit 198 } capture assert `testby'==r(min) | `testby'==r(max) | `testby'==. `if' if _rc ~=0 { di as error "`testby' must take on two values" exit 198 } /*call test subroutine*/ bootstrap dnmr=(r(nmra)-r(nmrb)) dpmr=(r(pmra)-r(pmrb)) dimr=(r(imra)-r(imrb)) dcmr=(r(cmra)-r(cmrb)) du5mr=(r(u5mra)-r(u5mrb)), `options' seed(220307) force nowarn nodots noheader: syncmrates_2 `0' } else { if "`trend'"~="" { /*error messages for option trend*/ capture confirm number `trend' if _rc~=0 { di as error "trend must be a number: number of trend months" exit 198 } syncmrates_3 `0' /*call trend subroutine*/ di in blue "(data are saved as mrdata.dta in current directory)" } else { if "`plot'"~="" { di as error "options plot cannot be specified without option trend" exit 198 } /*call syntetic proabability rates subroutine*/ bootstrap nmr=r(nmr) pmr=r(pmr) imr=r(imr) cmr=r(cmr) u5mr=r(u5mr), `options' seed(220307) force nowarn nodots noheader: syncmrates_1 `0' } } end