*! mcompr2.ado 3/18/94 by Bill Rogers (sg28: STB-22) program define mcompr2 local options "Default(string) Cutoff(real 1) Effects Label" local varlist "req ex max(1)" parse "`*'" parse "`varlist'", parse(" ") preserve if "`default'"=="" { local default default } local numcat $S_2 local ncontr = `numcat'*(`numcat'+1)/2 tempvar w1 w2 qui gen byte `w1' = (sqrt(8*_n-7)+1)/2 + ("$S_4"=="nocons") if _n<=`ncontr' qui gen byte `w2' = _n - `w1'*(`w1'-1)/2 - 1 + ("$S_4"=="nocons") if _n<=`ncontr' sort `1' local minlab = max(6,length("`default'")+1) local i 1 while `i'<=`numcat' { local nn : word `i' of $S_3 local nn2 : variable label `nn' if "`label'"!="" & "`nn2'"!="" { local nn "`nn2'" } local minlab = max(`minlab',length("`nn'")+1) local i = `i' + 1 } di if "`effects'"=="" { local s = `minlab'-5 di in gr _skip(`s') "Group" _skip(`s') "Group P-value" local d = 2*`s'+18 di in gr " " _dup(`d') "-" } else { local s = `minlab'-5 di in gr _skip(`s') "Group" _skip(`s') " Vs. Diff. P-value" local d = 2*`s'+31 di in gr " " _dup(`d') "-" } local i 1 while `i'<=`ncontr' { if `1'[`i']>`cutoff' { if `i'==1 { di in bl " (No contrasts meet significance cutoff)" } exit } local n1 = `w1'[`i'] local n2 = `w2'[`i'] if `n1'==0 { local nn1 "`default'" } else { local an1 : word `n1' of $S_3 local nn1 `an1' if "`label'"!="" { local nn : variable label `an1' if "`nn'"!="" { local nn1 "`nn'" } } } if `n2'==0 { local nn2 "`default'" } else { local an2 : word `n2' of $S_3 local nn2 `an2' if "`label'"!="" { local nn : variable label `an2' if "`nn'"!="" { local nn2 "`nn'" } } } local l1 = `minlab'-length("`nn1'") local l2 = `minlab'-length("`nn2'") if "`effects'"=="" { di in ye _skip(`l1') "`nn1'" _skip(`l2') "`nn2'", %7.4f `1'[`i'] } else { if `n1'==0 { local e1 0 } else { local e1 = _b[`an1'] } if `n2'==0 { local e2 0 } else { local e2 = _b[`an2'] } di in ye _skip(`l1') "`nn1'" /* */ _skip(`l2') "`nn2' " %9.0g `e1'-`e2' %11.4f `1'[`i'] } local i = `i' + 1 } end