*! version 3.0.0 1/7/92 STB-13: sg17 program define hreg2 version 3.0 if "`1'"!="" & substr("`1'",1,1)!="," { local options "Group(string) Level(integer $S_level) *" local varlist "req ex" local in "opt" local if "opt" local weight "fweight aweight pweight iweight" parse "`*'" parse "`varlist'", parse(" ") tempvar yr ys hat if ("`group'"!="") { sort `group' local grs "group(`group')" } if ("`exp'"!="") { local wt "[aw`exp']" } qui reg `*' `wt', `options', `if' `in' if _result(1)==0 | _result(1)==. { error 2000 } local nobs=_result(1) local mdf=_result(3) local tdf=_result(5) local r2=_result(7) local ar2=_result(8) local rmse=_result(9) qui predict `yr', resid qui predict `hat', hat qui replace `yr' = `yr' + `rmse'*sqrt(`hat') qui gen byte `ys' = 1 if `yr'!=. qui _huber `yr' `ys', `grs' level(`level'), [`weight'`exp'] `if' `in' mac def S_E_cmd "hreg" mac def S_E_grs "`grs'" mac def S_E_dv "`1'" mac def S_E_nobs `nobs' mac def S_E_tdf `tdf' mac def S_E_mdf `mdf' mac def S_E_r2 `r2' mac def S_E_ar2 `ar2' mac def S_E_rmse `rmse' } else { if ("$S_E_cmd"!="hreg") { error 301 } local options "Level(integer $S_level)" parse "`*'" } if "$S_E_grs"=="" { local addline "_n" } #delimit ; di _n in gr "Regression with Huber standard errors" _col(53) "Number of obs =" in yel %8.0f $S_E_nobs _n _col(53) in gre "R-square =" in yel %8.4f $S_E_r2 _n _col(53) in gr "Adj R-square =" in yel %8.4f $S_E_ar2 _n _col(53) in gr "Root MSE =" in yel %8.0g $S_E_rmse `addline' ; #delimit cr _huber, level(`level') $S_E_grs end