*! mcompp.ado 3/16/94 by Bill Rogers (sg28: STB-22) program define mcompp local varlist "req ex" local options "noCOns EQuation(string) SCheffe(string) Bonferroni(string) SIdak(string)" parse "`*'" parse "`varlist'", parse(" ") local numcat : word count `varlist' local numcat1 `numcat' local ncontr = `numcat'*(`numcat'+1)/2 if "`cons'"=="nocons" { local ncontr = `numcat'*(`numcat'-1)/2 local numcat1 = `numcat' - 1 } global S_2 "`numcat'" global S_3 "`varlist'" global S_4 "`cons'" if "`equatio'"!="" { di in red "Equation option not implemented yet" exit } if (`ncontr'>_N) { di in bl "Dataset size too small to handle results .. attempting expansion" set obs `ncontr' } if ("`scheffe'"!="") { qui gen `scheffe'=. } if ("`bonferr'"!="") { qui gen `bonferr'=. } if ("`sidak'"!="") { qui gen `sidak'=. } quietly $S_E_cmd local dfe = _result(5) if `dfe'==. { local dfe $S_E_tdf } if "`dfe'"=="." { local dfe 10000 } local i 1 local j 1 while (`i'<=`numcat') { local vari : word `i' of `varlist' if ("`cons'"!="nocons") { local es2 = (_b[`vari']/_se[`vari'])^2 if ("`diff'"!="") { qui replace `diff' = _b[`vari'] in `j' } if ("`scheffe'"!="") { qui replace `scheffe' = fprob(`numcat1',`dfe',`es2'/`numcat') in `j' } if ("`bonferr'"!="") { qui replace `bonferr' = min(1,fprob(1,`dfe',`es2')*`ncontr') in `j' } if ("`sidak'"!="") { qui replace `sidak' = (1-(1-fprob(1,`dfe',`es2'))^`ncontr') in `j' } local j = `j' + 1 } local k = 1 while `k'<`i' { local vark : word `k' of `varlist' qui test `vari'=`vark' local es2 = _result(6) if ("`diff'"!="") { qui replace `diff' = _b[`vari']-_b[`vark'] in `j' } if ("`scheffe'"!="") { qui replace `scheffe' = fprob(`numcat1',`dfe',`es2'/`numcat') in `j' } if ("`bonferr'"!="") { qui replace `bonferr' = min(1,fprob(1,`dfe',`es2')*`ncontr') in `j' } if ("`sidak'"!="") { qui replace `sidak' = (1-(1-fprob(1,`dfe',`es2'))^`ncontr') in `j' } local j = `j' + 1 local k = `k' + 1 } local i = `i' + 1 } end