*! version 3.0.1 09/02/92 (STB-9: sg11.1) program define bsqreg version 3.0 local options "Level(integer $S_level)" if substr("`*'",1,1)=="," | "`*'"=="" { if "$S_E_cmd"!="bsqreg" { error 301 } parse "`*'" } else { local varlist "req ex" local if "opt" local in "opt" local options /* */ "`options' Quantile(real .5) WLSiter(integer 1) Reps(integer 20)" parse "`*'" if (`quantil'>=1) {local quantil = `quantil'/100} if (`quantil'<=0 | `quantil'>=1) { error 198} if (`reps')<2 { error 198 } mac def S_E_cmd tempvar e bcons tempfile USER BOOTMST BOOTRES local opts "quantil(`quantil') wls(`wlsiter') `cons'" parse "`varlist'", parse(" ") local depv "`1'" mac shift local vl "`*'" di in gr "(estimating base model)" qui qreg `depv' `vl' `if' `in', `opts' if $S_E_nobs==0 | $S_E_nobs==. { exit } local nobs $S_E_nobs local tdf $S_E_tdf local q $S_E_q local rsd $S_E_rsd local rq $S_E_rq /* about */ local msd $S_E_msd local frc $S_E_frc if "`cons'"=="" { local vle "_cons" local vli "`bcons'" } parse "`vl' `vle'", parse(" ") version 2.1 local i 1 while "``i''"!="" { local w=_b[``i''] local coef "`coef' `w'" *local w=_se[``i''] /* dummy */ *local ses "`ses' `w'" /* dummy */ local i=`i'+1 } version 3.0 local sfn "$S_FN" qui save `USER' capture { predict `e' `if' `in', res drop if `e'==. keep `depv' `vl' save `BOOTMST' drop _all set obs 1 gen byte `e'=. save `BOOTRES' noi di in gr "(bootstrapping " _c parse "`vl'", parse(" ") local j 1 while `j'<=`reps' { use `BOOTMST', clear bootsamp _N cap noisily _bsqreg `depv' `vl', `opts' /* see note 1 */ local rc = _rc drop _all if (`rc'==0) { set obs 1 local i 1 while "``i''"!="" { gen ``i''=_b[``i''] local i=`i'+1 } if "`cons'"=="" { gen `bcons'=_b[_cons] } append using `BOOTRES' save `BOOTRES', replace noi di in gr "." _c local j=`j'+1 } else { noi di in gr "*" _c } } parse "`vl' `vli'", parse(" ") version 2.1 local i 1 while "``i''"!="" { summ ``i'' local w=sqrt(_result(4)) local ses "`ses' `w'" local i=`i'+1 } version 3.0 noi di in gr ")" } local rc=_rc qui use `USER', clear mac def S_FN "`sfn'" capture erase `USER' capture erase `BOOTMST' capture erase `BOOTRES' error `rc' mac def S_E_reps `reps' mac def S_E_depv "`depv'" mac def S_E_vl "`vl'" mac def S_E_vle "`vle'" mac def S_E_nobs `nobs' mac def S_E_tdf `tdf' mac def S_E_q `q' mac def S_E_rsd `rsd' mac def S_E_rq `rq' mac def S_E_msd `msd' mac def S_E_coef `coef' mac def S_E_ses `ses' mac def S_E_cmd "bsqreg" mac def S_E_frc 0 } if `level'<10 | `level'>99 { local level 95 } di if ($S_E_q ==0.5) { di in gr "Median Regression, bootstrap(" /* */ in ye "$S_E_reps" in gr ") SEs" /* */ _col(54) _c } else { di in gr $S_E_q " Quantile Regression, bootstrap(" /* */ in ye "$S_E_reps" in gr ") SEs" /* */ _col(54) _c } di in gr "Number of obs =" in ye %10.0g $S_E_nobs di in gr " Raw sum of deviations" in ye %9.0g $S_E_rsd /* */ in gr " (about " in ye $S_E_rq in gr ")" di in gr " Min sum of deviations" in ye %9.0g $S_E_msd _col(54) /* */ in gr "Pseudo R2 =" in ye %10.4f 1 - ($S_E_msd/$S_E_rsd) di di in gr _dup(78) "-" local l=8-length("$S_E_depv") di in gr _skip(`l') "$S_E_depv | Coef. Std. Err. t" /* */ " P>|t| [`level'% Conf. Interval]" _n /* */ "---------+" _dup(68) "-" parse "$S_E_vl $S_E_vle", parse(" ") local i 1 while "``i''"!="" { local name "``i''" local l=8-length("`name'") parse "$S_E_coef", parse(" ") local coef ``i'' parse "$S_E_ses", parse(" ") local se ``i'' di in gr _skip(`l') "`name' | " in ye %9.0g `coef' /* */ " " %9.0g `se' _c local t=`coef'/`se' local pt=tprob($S_E_tdf,`t') local ipt=invt($S_E_tdf,`level'/100) local c0=`coef'-`ipt'*`se' local c1=`coef'+`ipt'*`se' di in ye %11.3f `t' %8.3f `pt' " " %9.0g `c0' " " %9.0g `c1' parse "$S_E_vl $S_E_vle", parse(" ") local i=`i'+1 } di in gr _dup(78) "-" error $S_E_frc end exit Notes ----- Note 1. You can substitute qreg for _bsqreg, the result being only to slow the program down. _bsqreg is an alternative that 1) does not allow if exp or in range` 2) does not allow weights 3) produces no output 4) produces no estimates of the stasndard errors