*! overlap -- Calculate the overlapping coefficient (sg27: STB-22) *! version 1.1.0 14 August 1993 R. Goldstein program define overlap version 3.0 local varlist "req ex max(2)" local if "opt" local in "opt" local options "BY(string)" parse "`*'" parse "`varlist'", parse(" ") if "`by'"=="" { qui su `1' `if' `in' local numb1=_result(1) local mean1=_result(3) local sd1=sqrt(_result(4)) qui su `2' `if' `in' local numb2=_result(1) local mean2=_result(3) local sd2=sqrt(_result(4)) overlapi `mean1' `mean2' `sd1' `sd2' `numb1' `numb2' exit } 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 numb1=_result(1) local mean1=_result(3) local sd1=sqrt(_result(4)) quietly sum `varlist' if `by'==`by'[2] & `TOUSE'==1 local numb2=_result(1) local mean2=_result(3) local sd2=sqrt(_result(4)) overlapi `mean1' `mean2' `sd1' `sd2' `numb1' `numb2' end