*! version 1.04 (STB-54 dm73.1) /* Direct comments to: John Hendrickx Nijmegen Business School University of Nijmegen P.O. Box 9108 6500 HK Nijmegen The Netherlands Desmat is available at http://baserv.uci.kun.nl/~johnh/desmat/stata/ Version 1.04, Nov 8 1999 Reports and uses equation names for compatiblity with mlogit, cleaned up code somewhat, reports summary model information Version 1.03, Nov 1 1999 Switched from e(b) and e(V) to _b and _se Version 1.02, Oct. 7 1999 Added an option for displaying multiplicative parameters Version 1.01, Sept. 30 1999 Cosmetic changes to display a 'direct' variables name in an interaction but not in a main effect */ program define cdis * display "e()" if defined. syntax [,rslt(string) lab(string) ndec(integer 3) except(string)] *di "rslt: ``rslt'', lab: `lab', ndec: `ndec', except: `except'" if "``rslt''" == "" { exit } tokenize "`except'" while "`1'" ~= "" { if "`e(cmd)'" == "`1'" { exit } macro shift } capture local datafmt=int(`rslt') if _rc ~= 0 { local colpos=80-length(`rslt') local fmt "" } else { local colpos=68 local fmt "%12.`ndec'f" } display "`lab'" _col(`colpos') `fmt' `rslt' end program define desrep version 6 * multiplicative parameters if first argument is "exp" args exp display _dup(79) "-" display e(cmd) display _dup(79) "-" cdis ,rslt(e(depvar)) lab("Dependent variable") cdis ,rslt(e(title_fl)) lab("Model type:") cdis ,rslt(e(N)) lab("Number of observations:") ndec(0) cdis ,rslt(e(deviance)) lab("Deviance:") cdis ,rslt(e(df_pear)) lab("df") ndec(0) cdis ,rslt(e(ll_0)) lab("Initial log likelihood:") except("regress") cdis ,rslt(e(ll)) lab("Log likelihood:") except("regress") cdis ,rslt(e(chi2)) lab("Chi Square:") except("glm") cdis ,rslt(e(F)) lab("F statistic:") cdis ,rslt(e(df_m)) lab("Model degrees of freedom:") ndec(0) cdis ,rslt(e(df_r)) lab("Residual degrees of freedom:") ndec(0) cdis ,rslt(e(basecat)) lab("Baseline category:") ndec(0) cdis ,rslt(e(r2_p)) lab("Pseudo R-squared:") cdis ,rslt(e(r2)) lab("R-squared:") display _dup(79) "-" display "Effect" _col(58) %10s "Coeff" %12s "s.e." if "`exp'" == "exp" { display "(exponential parameters)" } display _dup(79) "-" tempname paras matrix `paras'=e(b) local nms: colfullnames `paras' tokenize "`nms'" while "`1'" ~= "" { local indt=1 * check for an equation name. If so, report it and indent two spaces local pnt=index("`1'",":") if `pnt' ~= 0 { local eqnm=substr("`1'",1,`pnt'-1) local indt=3 local 1=substr("`1'",`pnt'+1,.) if "`eqnm'" ~= "`eqnm1'" { display "`eqnm'" } local eqnm1="`eqnm'" local b=[`eqnm']_b[`1'] local se=[`eqnm']_se[`1'] } else { local b=_b[`1'] local se=_se[`1'] } local z=`b'/`se' local prob=2*(1-normprob(abs(`z'))) * determine significance level if `prob' < .01 { local sig="**" } else if `prob' < .05 { local sig="* " } else { local sig=" " } * option to report exponential parameters if "`exp'" == "exp" { local b=exp(`b') local se=`b'*`se' } * get variable names local varn="``1'[varn]'" local pzat="``1'[pzat]'" if "`varn'" ~= "`varn1'" & "`varn'" ~= "" { * display the effect name on a separate line for categorical effects if "`pzat'" ~= "direct" { display _col(`indt') "`varn'" } } local varn1="`varn'" * get value labels local valn="``1'[valn]'" if "`valn'" == "" | "`pzat'" == "direct" { * continuous variables or effects not generated by desmat: * use the variable label if available, otherwise the varname capture local valn: variable label `1' if "`valn'" == "" { local valn `1' } } else { * categorical variable, indent two spaces local indt=`indt'+2 } local valn=substr("`valn'",-57+`indt',.) display _col(`indt') "`valn'" _col(58) %10.3f `b' %2s "`sig'" %10.3f `se' macro shift } display _dup(79) "-" end