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

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

From |
Nick Cox <n.j.cox@durham.ac.uk> |

To |
"'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: looping a regression, exporting the graphs |

Date |
Thu, 20 Oct 2011 15:46:15 +0100 |

This is legal code: foreach y of varlist Early1-Late3a { xi: logit `y' i.eth2 age i.invsurg2 i.region i.dep if dep!=9 & sex==2 & ICD10=="C50", or qui graph export "T:\Test\Early1_UK_`y'.png", replace } assuming that the gap generates a graph for that variable. You'd need to pass the text "`y'" to the do-file as a an argument. _The do-file cannot see your local macro; it can only receive it as an argument._ The help and documentation for -foreach- are a little thin unless you know the command already. There are longer-winded tutorials at SJ-3-2 pr0009 . . . . . . . . . . . . . Speaking Stata: Problems with lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox Q2/03 SJ 3(2):185--202 (no commands) discusses ways of working through lists held in macros SJ-2-2 pr0005 . . . . . . Speaking Stata: How to face lists with fortitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox Q2/02 SJ 2(2):202--222 (no commands) demonstrates the usefulness of for, foreach, forvalues, and local macros for interactive (non programming) tasks -- especially 2(2): 202-222 (2002) (I didn't fix that; it just fell out that way....) As these articles are >> 3 years old, .pdf copies are freely available and available for free at www.stata-journal.com . search foreach, sj will give clickable pointers. Nick n.j.cox@durham.ac.uk Tim Evans I am running a number of logistic regression models (Stata 11.2, Windows XP) and then exporting a graph out of each regression using the following as dependant variables: Early1 Early2 Early1a Early2a Late1 Late2 Late3 Late1a Late2a Late3a Each model is run twice, once for the whole dataset and once for a sub-sample, giving me 20 regression commands The trouble with this is I have a lot of code and its tricky keeping a check of it when I change something in one model that I want to run in later models. I've already stripped out my graph formatting into a separate do file for this purpose. What I want to know is, is there a way I can bundle up my dependant variables in a loop or similar and then have one regression command that loops around? Crucially to this, is that I also need the graphs that I am labelling to match up to the regression I have run - so some reference to a macro containing the definition (i.e. the name of the dependant variable, along with whether it is for England or UK. Would I use something like:? foreach varname of varlist Early1-Late3a { xi: logit XXX i.eth2 age i.invsurg2 i.region i.dep if dep!=9 & sex==2 & ICD10=="C50", or qui do "T:\Test\labelling" "O/R of early detection (Early1_UK)" qui graph export "T:\Test\Early1_UK.png", replace } I'm not sure how I would treat the dependant variables in the loop, or how to get the labelling and export to work though or the exporting graph with a new name for each graph. My models are thus (I've only pasted 2 of the 20!): ***BEGIN*** ***EARLY1 Analysis preserve xi: logit Early1 i.eth2 age i.invsurg2 i.region i.dep if dep!=9 & sex==2 & ICD10=="C50", or qui do "T:\Test\labelling" "O/R of early detection (Early1_UK)" qui graph export "T:\Test\Early1_UK.png", replace restore I then run this again, but I'm only interested in a sub-sample of the above preserve xi: logit Early1 i.eth2 age i.invsurg2 i.region i.dep i.screening2 if dep!=9 & sex==2 & ICD10=="C50" /* */ & !inlist(region, 2, 7, 11) & NEW==2, or qui do "T:\Test\labelling" "O/R of early detection (Early1_England)" qui graph export "T:\Test\Early1_England_screening.png", replace restore ***EARLY2 Analysis preserve xi: logit Early2 i.eth2 age i.invsurg2 i.region i.dep if dep!=9 & sex==2 & ICD10=="C50", or qui do "T:\Test\labelling" "O/R of early detection (Early2_UK)" qui graph export "T:\Test\Early2_UK.png", replace restore I then run this again, but I'm only interested in a sub-sample of the above preserve xi: logit Early2 i.eth2 age i.invsurg2 i.region i.dep i.screening2 if dep!=9 & sex==2 & ICD10=="C50" /* */ & !inlist(region, 2, 7, 11) & NEW==2, or qui do "T:\Test\labelling" "O/R of early detection (Early2_England)" qui graph export "T:\Test\Early2_England_screening.png", replace restore AND SO ON. * * 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/

**References**:**st: looping a regression, exporting the graphs***From:*Tim Evans <Tim.Evans@wmciu.nhs.uk>

- Prev by Date:
**Re: st: Testing whether two estimated survey means are statistically different** - Next by Date:
**st: RE: RE: looping a regression, exporting the graphs** - Previous by thread:
**st: looping a regression, exporting the graphs** - Next by thread:
**st: RE: RE: looping a regression, exporting the graphs** - Index(es):