Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down at the end of May, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Peter Hofmann <maxl@sunrise.ch> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: Re: st: using subgroup regression coefficients in further regressions |

Date |
Sun, 22 Jul 2012 20:16:13 +0200 |

Thanks for the systematic of how to proceed, I think I am close to the solution by including - g yhat - and - replace yhat... - and - treatment_dummy != 1 (no treats included in the reg): g res = . g yhat=. sum subgroupvar, meanonly qui forvalues i = `r(min)'/`r(max)' { reg y X1 X2 if subgroupvar==`i' & treatment_dummy != 1 //reg only control group predict work, residual replace res = work if subgroupvar==`i' drop work replace yhat = _b[cons] + _b[X1] * X1 + _b[X2] * X2 if subgroupvar==`i' } g y = res + yhat //should give the original dep. var. except for treatments, right ?? But in my results it seems like the treats are also included in the reg, so perhaps & treatment_dummy != 1 did not work....? The treatments should not be in the same regression as the control group, since this is quite small and treatments would influence the outcome. Truly, the constant has to be included. Thank you Peter On Sun, Jul 22, 2012, Nick Cox <njcoxstata@gmail.com> wrote: This looks like a different question to me, but the principles are the same. 0. Initialise a variable to hold results outside the loop 1. After each regression, you use its estimation results. What you want may be most easily calculated in terms of something like _b[X1] * X1 + _b[X2] * X2 2. Typically you will -replace- results of the variable created in 0 for some observations only. However, I don't understand how this differs from a problem best handled by -predict- or why no constant (intercept) appears in your expressions. Nick On Sun, Jul 22, 2012 at 3:42 PM, Peter Hofmann <maxl@sunrise.ch> wrote: > Thank you for the fast reply, Nick. Your hint improves my first step, however > the original question is still unanswered. Obviously I did not pose the > question clear enough, so I try again: > > After the regression I want to use the estimated coefficients (betas) of each > subgroup (control groups) to calculate the y-hat (=expected dependent > variable) of the > treatment observations (each corresponding to its specific subgroup) by: > > treatment1: > yhat_1 = beta-hat1 * X1 + beta-hat2 * X2 > > treatment2: > yhat_2 = beta-hat3 * X3 + beta-hat4 * X4 > ..... > > The calculated y-hats of the treatments can now be compared to the real y's > of the treatments. > > Any help is appreciated! > Peter 2012/7/22 Peter Hofmann <maxl@sunrise.ch>: > Thank you for the fast reply, Nick. Your hint improves my first step, however > the original question is still unanswered. Obviously I did not pose the > question clear enough, so I try again: > > After the regression I want to use the estimated coefficients (betas) of each > subgroup (control groups) to calculate the y-hat (=expected dependent > variable) of the > treatment observations (each corresponding to its specific subgroup) by: > > treatment1: > yhat_1 = beta-hat1 * X1 + beta-hat2 * X2 > > treatment2: > yhat_2 = beta-hat3 * X3 + beta-hat4 * X4 > ..... > > The calculated y-hats of the treatments can now be compared to the real y's > of the treatments. > > Any help is appreciated! > Peter > > > On Thu, Jul 19, 2012 at 2:00 PM, Nick Cox <njcoxstata@gmail.com> wrote: > >> That code won't work at all. Apart from some fantasy syntax, the >> second time around the loop the -generate- would fail as the variable >> already exists. > >> But as you want residuals, you can get them directly: > >> gen res = . >> sum subgroupvar, meanonly > >> qui forvalues i = `r(min)'/`r(max)' { >> reg y x1 x2 if subgroupvar==`i' >> predict work, residual >> replace res = work if subgroupvar==`i' >> drop work >> } > >> Note, if only as a style point, that putting returned results into >> scalars, and then scalars into locals, is in this case two more steps >> than needed. > > > > On Thu, Jul 19, 2012 at 1:12 PM, Peter Hofmann <maxl@sunrise.ch> wrote: >> Dear all, >> >> Currently I use one regression for each subgroup of my control sample >> and save the subgroup-betas. >> Now I want to use the respective betas for a regression on the >> treatment observations that correspond to the respective subgroup (to >> extract the residuals from these regressions with the treatment >> values). >> >> Currently I use: >> . sum subgroupvar >> . scalar min1=r(min) >> . local j=min1 >> . scalar max1=r(max) >> . local k=max1 >> . forvalues i=`j'(1)`k' { >> . reg y x1 x2 if subgroupvar==`i' >> . mat bhat = e(b) >> . svmat bhat, names(bhat_`i'_) >> . } >> >> But now I do not know how to proceed: >> I want to use the respective subgroup betas in a regression on the >> treatment observations (treatments are indicated by a dummy). >> >> I supposed it should look similar to: >> . forvalues i=`j'(1)`k' { >> . g yhat = `bhat_*_1' * var1 + `bhat_*_2' * var2 if subgroupvar==`i' >> . } >> But that results in: >> . + invalid name >> . r(198); >> >> I appreciate any help... >> Peter * * 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/

**Follow-Ups**:**Re: Re: st: using subgroup regression coefficients in further regressions***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**Re: Re: st: using subgroup regression coefficients in further regressions***From:*Peter Hofmann <maxl@sunrise.ch>

- Prev by Date:
**st: RE: drop variables in panel data with loop** - Next by Date:
**st: RE: Year dummies in panel regs (Econometrics question)** - Previous by thread:
**Re: Re: st: using subgroup regression coefficients in further regressions** - Next by thread:
**Re: Re: st: using subgroup regression coefficients in further regressions** - Index(es):