*! version 1.2.0 13 September 1993 RG STB-17: sg21 program define equim version 3.1 * enter control group first: n mean sd n mean sd[, delta() sdelta2() Random] local options "Delta(string) SDelta(string) Random BY(string)" local exp "opt noprefix" local if "opt" local in "opt" local varlist "req ex max(1)" parse "`*'" cap confirm number `exp' if _rc==0 { if "`by'"!="" { di in red "may not use by() in this situation" exit 198 } qui su `varlist' `if' `in' local n1=_result(1) local u1=_result(3) local s1=sqrt(_result(4)) if "`delta'"=="" { local delta=.2*`exp' } if "`delta'"!="" { if "`sdelta'"=="" { local sdelta `delta' } } equimi `n1' `u1' `s1' `exp', d("`delta'") sd("`sdelta'") exit } cap confirm var `exp' if _rc==0 { if "`by'"!="" { di in red "may not combine second variable with by()" exit 198 } qui su `1' local n1=_result(1) local u1=_result(3) local s1=sqrt(_result(4)) qui su `exp' local n2=_result(1) local u2=_result(3) local s2=sqrt(_result(4)) if "`delta'"!="" { if "`sdelta'"=="" { local sdelta `delta' } equimi `n1' `u1' `s1' `n2' `u2' `s2', d("`delta'") sd("`sdelta'") `random' } else { equimi `n1' `u1' `s1' `n2' `u2' `s2', `random' } exit } if "`by'"!="" { confirm var `by' quietly tab `by' `if' `in' if _result(2)!=2 { di in red "`by' takes on " _result(2) " values, not 2" exit 450 } tempvar M TOUSE quietly gen byte `TOUSE' = 1 `if' `in' sort `by' `TOUSE' quietly by `by' `TOUSE': gen byte `M'=cond(_n==1,1,.) if `TOUSE'==1 sort `M' `by' quietly sum `varlist' if `by'==`by'[1] & `TOUSE'==1 local n1 = _result(1) local u1 = _result(3) local s1 = sqrt(_result(4)) quietly sum `varlist' if `by'==`by'[2] & `TOUSE'==1 local n2 = _result(1) local u2 = _result(3) local s2 = sqrt(_result(4)) } if "`delta'"!="" { if "`sdelta'"=="" { local sdelta `delta' } equimi `n1' `u1' `s1' `n2' `u2' `s2', d("`delta'") sd("`sdelta'") `random' } else { equimi `n1' `u1' `s1' `n2' `u2' `s2', `random' } end