*! version 1.0.1 03/25/93 by Bill Rogers sqv10: STB-23 program define mcross version 3.1 if "$S_E_cmd"!="mlogit" { error 301 } local options "Level(integer $S_level) Rrr" parse "`*'" if `level'<10 { local level 10 } if `level'>99 { local level 99 } local coef "Coef." if "`rrr'"!="" { local rrr "eform(rrr)" local coef " RRR" } tempname b v vv1 vv2 vvx b1 b2 bg vg mat `b' = get(_b) mat `v' = get(VCE) local lc = invnorm(.50+`level'/200) local dv $S_E_depv estimate hold mcross local names : coleq(`v') local nn : colnames(`b') di di in gr _dup(78) "-" local l = 8 - length("`dv'") di _skip(`l') in gr "`dv' | `coef' Std. Err. z P>|z| [`level'% Conf. Interval]" capture { local i 1 local numeq 0 while `i'<=colsof(`v') { local name : word `i' of `names' if "`name2'"~="`name'" { local namelis "`namelis' `name'" local name2 `name' local numeq = `numeq' + 1 } local i = `i' + 1 } local jj 1 while `jj'<`numeq' { local name1 : word `jj' of `namelis' mat `b1' = `b'[`jj',.] mat `vv1' = `v'["`name1':","`name1':"] local j =`jj'+1 while `j'<=`numeq' { local name2 : word `j' of `namelis' mat `b2' = `b'[`j',.] mat `vv2' = `v'["`name2':","`name2':"] mat `vvx' = `v'["`name1':","`name2':"] mat `bg' = `b2' - `b1' mat `vv2' = `vv2'-`vvx' mat `vvx' = `vvx'' mat `vg' = `vv1'-`vvx' mat `vg' = `vv2' + `vg' local ncomp = substr("`name2'-`name1'",1,8) noisily di in gr _dup(9) "-" "+" _dup(68) "-" noisily di "`name2'-`name1'" local k 1 while `k' <= colsof(`bg') { local nnn : word `k' of `nn' local l = 8 - length("`nnn'") local c = `bg'[1,`k'] local s = sqrt(`vg'[`k',`k']) if ("`rrr'"=="") { noisily di _skip(`l') in gr "`nnn' | " in ye %9.0g `c' _c noisily di " " %9.0g `s' %11.3f `c'/`s' %8.3f 2*normprob(-abs(`c'/`s')) " " %9.0g `c'-`lc'*`s' " " %9.0g `c'+`lc'*`s' } else if "`nnn'"!="_cons" { noisily di _skip(`l') in gr "`nnn' | " in ye %9.0g exp(`c') _c noisily di " " %9.0g exp(`c')*`s' %11.3f `c'/`s' %8.3f 2*normprob(-abs(`c'/`s')) " " %9.0g exp(`c'-`lc'*`s') " " %9.0g exp(`c'+`lc'*`s') } local k = `k' + 1 } local j = `j' + 1 } local jj = `jj' + 1 } } local rc = _rc if !`rc' { noisily di in gr _dup(78) "-" } estimate unhold mcross error `rc' end /* var (b1 - b2) = E(b1-b2)(b1-b2)' = E b1 b1' - b1 b2' - b2 b1' + b2 b2' */