program define me_biprob *! v 1.1 gmh 12 2 01 qui{ tempvar p1 p2 tempname b mnp1 b1 b2 mnp2 qui predict `p1', pmarg1 qui predict `p2', pmarg2 qui for var `p1' `p2': replace X=normd(invnorm(X)) sum `p1' if e(sample) , meanonly scalar `mnp1' = r(mean) sum `p2' if e(sample), meanonly scalar `mnp2' = r(mean) mat `b'=e(b) mat `b'=`mnp1'*`b'' *set trace on local depvar `e(depvar)' local depvar1: word 1 of `depvar' local depvar2: word 2 of `depvar' di "depvar = |`depvar'|" local eqn: roweq `b' local rows1=0 local rows2=0 gettoken 1 eqn:eqn while `"`1'"'=="`depvar1'" { local rows1 = `rows1'+1 gettoken 1 eqn:eqn } mat l `b' mat `b1'=`b'[1..`rows1'-1,1] gettoken 1 eqn:eqn while `"`1'"'=="`depvar2'" { local rows2 = `rows2'+1 gettoken 1 eqn:eqn } mat `b2'=`b'[`rows1'+1..`rows1'+`rows2',1] mat l `b1' mat l `b2' di "`eqn' " mat l `b1' preserve drop _all tempfile fileb2 mat `b2'=`b2'' set more off qui svmat `b2', names(col) save `fileb2' drop _all mat `b1'=`b1'' qui svmat `b1', names(col) set more on append using `fileb2' unabbrev _all } di " " di in gr "Table of Marginal Effects for -biprobit-" di " " di in gr " variable " in ye _col(18) "`depvar1' " _col(33) "`depvar2'" di in gr _dup(40) "-" foreach var in $S_1{ di in gr "`var'" in ye _col(15) %6.4f `var'[1] _col(30) %6.4f `var'[2] } di _n restore end