st: RE: AW: Regressing and storing residuals in one line.

Such residuals have rather poorly defined properties, but let's set that
on one side.
A single variable can be obtained through a minor variation on Martin's
recipe:
sysuse auto, clear
qui levelsof rep78
gen residual = .
foreach lev in `r(levels)'{
tempvar foo
qui regress price weight length if rep78==`lev'
predict `foo', res
replace residual = `foo' if rep78 == `lev'
drop `foo'
}
Nick
n.j.cox@durham.ac.uk
Martin Weiss
Just loop through the thing:
*************
sysuse auto, clear
qui levelsof rep78
foreach lev in `r(levels)'{
qui regress price weight length if rep78==`lev'
predict res`lev', res
}
*************
Dani Tilley
I'm trying to run several regressions (one for each level of a
categorical
variable) and store the residuals from each regression in a local macro
or
new
variable I could later manipulate. I figured I could use:
bysort category: regress y x1 x2
to run the regressions, but I need a second line of code (predict name,
residuals) to get the residuals when bysort allows only one. Is there a
way
around this?
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/