*! version 1.0.1 03jun2010 program define spreg_p, sortpreserve version 11.1 syntax [anything] [if] [in] [, /// RForm /// default LImited /// FUll /// UNDOCUMENTED NAive /// xb /// TOLerance(real .0000001) /// UNDOCUMENTED ITERate(numlist max=1 integer >=0) /// UNDOCUMENTED RFTransform(string) /// ] marksample touse // this is not e(sample) tempvar esample qui gen byte `esample' = e(sample) local tolerance = `tolerance' if "`iterate'" == "" local iterate = 100 // parse anything local words : word count `anything' if (`words'<1 | `words'>3) { di "{err}invalid syntax" exit 198 } // parse predict options local propt = "`rform' `limited' `full' `naive' `xb'" local words : word count `propt' if `words'==0 { if "`e(cmd)'"=="spreg" { di "{txt}(option rform assumed)" local propt rform } else { di "{txt}(option naive assumed)" local propt naive } } if `words'>1 { di "{err}only one prediction method is allowed" exit 198 } if ("`e(model)'"=="lr") { predict `anything' // calls ols } else { gettoken type yhat : anything qui generate `type' `yhat' = . if "`yhat'"=="" local yhat `type' mata: SPREG_predict("`yhat'","`touse'","`esample'", /// "`propt'",`rftransform') } // label variable local propt = trim("`propt'") if "`propt'"=="xb" { label var `yhat' "Independent variable prediction" } if "`propt'"=="naive" { label var `yhat' "Naive prediction" } if "`propt'"=="rform" { label var `yhat' "Reduced form prediction" } if "`propt'"=="limited" { label var `yhat' "Limited information prediction" } if "`propt'"=="full" { label var `yhat' "Full information prediction" } end