*! version 1.5.0 NJC 24 March 1999 [STB-51: gr41] * 1.4.0 NJC 17 March 1998 * 1.0.0 NJC 5 March 1998 program def distplot version 6.0 syntax varlist [if] [in] [fweight aweight/] /* */ [ , Generate(str) Freq BY(varname) YLOg L1title(str) /* */ Surv MONO MISSing * ] tokenize `varlist' local nvars : word count `varlist' tempvar touse gencum result copy mark `touse' `if' `in' if "`missing'" == "" { if "`by'" != "" { markout `touse' `by', strok } } else { if "`by'" == "" { di in bl "missing only applies with by( )" } } qui count if `touse' if r(N) == 0 { di in r "no observations satisfy conditions" exit 2000 } if "`exp'" == "" { local exp "1" } else { capture assert `exp' >= 0 `if' `in' if _rc { di in red "weight assumes negative values" exit 402 } } if "`by'" != "" { if "`in'" != "" { di in red "in may not be combined with by" exit 190 } if `nvars' > 1 { di in r "too many variables specified" exit 103 } } tempvar wt qui gen `wt' = `exp' if `nvars' > 1 { preserve tempvar data local i 1 while `i' <= `nvars' { local stargs "`stargs' ``i'' `touse' `wt'" local xlbl "`xlbl' ``i''" local lbl`i' "``i''" local i = `i' + 1 } stack `stargs', into(`data' `touse' `wt') clear local i 1 while `i' <= `nvars' { label def _stack `i' "`lbl`i''", modify local i = `i' + 1 } label val _stack _stack local varlist "`data'" label var `varlist' "`xlbl'" local by "_stack" } if "`surv'" == "surv" { local ineq ">" local minus "-" } else local ineq "<=" quietly { gen float `gencum' = `varlist' if `touse' sort `touse' `by' `gencum' local byf "by `touse' `by' :" `byf' gen float `result' = /* */ sum((`wt') * (`gencum' != .)) if `touse' if "`xlbl'" != "" { local ylbl "value" } else local ylbl "`varlist'" if "`freq'" == "" { `byf' replace `result' = `result' / `result'[_N] label var `result' "Probability `ineq' `ylbl'" } else label var `result' "Frequency `ineq' `ylbl'" if "`surv'" == "surv" { `byf' replace `result' = `result'[_N] - `result' } replace `result' = . if `gencum' == . gen `copy' = `result' if "`ylog'" == "ylog" { replace `result' = . if `result' == 0 } if "`by'" != "" & "`mono'" == "" { tempvar group `byf' gen `group' = _n == 1 if `touse' replace `group' = sum(`group') local max = `group'[_N] local bylab : value label `by' local i = 1 count if !`touse' local j = 1 + r(N) while `i' <= `max' { tempvar res`i' gen `res`i'' = `result' if `group' == `i' local byval = `by'[`j'] if "`bylab'" != "" { local byval : label `bylab' `byval' } label var `res`i'' "`byval'" local reslist "`reslist' `res`i''" count if `group' == `i' local j = `j' + r(N) local i = `i' + 1 } if "`l1title'" == "" { local l1title : variable label `result' } } else { if "`by'" != "" { tempvar bymin egen `bymin' = min(`gencum'), by(`by') gsort - `bymin' `by' `gencum' `minus' `result' } local reslist "`result'" } } gra `reslist' `varlist', `options' `ylog' l1("`l1title'") if "`generat'" != "" & `nvars' == 1 { confirm new var `generat' qui gen `generat' = `copy' _crcslbl `generat' `result' } end