*! version 3.0.1 09/02/92 bsqreg utility (STB-9: sg11.1) program define _bsqreg version 3.0 local options "Quantile(real 0.5) WLSiter(integer 1) noLOg" local varlist "req ex" parse "`*'" local quant "`quantil'" if `wlsiter'<1 { error 198 } quietly { tempvar r s2 p wt hat rr gen long `s2' = _n reg `varlist' if _result(1)==0 | _result(1)==. { noisily error 2000 } local i 0 predict `r', resid gen `wt' = cond(`r'>=0,`quant',1-`quant') while (`i'<`wlsiter') { if ("`exp'"!="") { gen float `p'`exp' replace `wt'=`wt'*`p' drop `p' } reg `varlist' [aw=`wt'] cap drop `rr' predict `rr', resid replace `wt' = cond(`rr'>=0,`quant',`quant'-1) replace `r'= `wt' * `rr' replace `wt' = abs(`wt'/`rr') summ `r' local i = `i'+1 } sort `r' `s2' drop `r' `rr' cap _qreg `varlist', quant(`quant') if (_result(14)!=1 | _rc~=0) { if (_rc==1) { exit 1} exit -2000 } predict `hat' parse "`varlist'", parse(" ") mac shift reg `hat' `*' end