Bookmark and Share

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]

Re: st: using foreach in regression models


From   Phil Schumm <pschumm@uchicago.edu>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: using foreach in regression models
Date   Tue, 25 Oct 2011 04:44:42 -0500

On Oct 25, 2011, at 4:03 AM, Tim Evans wrote:
> I am running a number of logistic regression models (Stata 11.2), using the same dependant variable, but cycling through a number of independent variables to obtain 'unadjusted' regressions like such:
> 
> xi: logit treatmentinsccnetre2 i.agegrp, iterate(10) or
> xi: logit treatmentinsccnetre2 i.NRCENT, iterate(10) or
> xi: logit treatmentinsccnetre2 i.id07, iterate(10) or
> xi: logit treatmentinsccnetre2 i.site_4, iterate(10) or
> 
> I can condense this down to the following
> 
> foreach v of varlist agegrp id07 NRCENT site_4 {
> xi: logit treatmentinsccnetre2 i.`v', iterate(10) or
> }
> 
> This is fine, however, I also do want to run the analysis by introducing a range of other variables in order to 'adjust' for their effect. The list of variables will always be the same, but although the list is the same, some variables move around the list - if they are the variable of interest i.e:
> 
> 
> xi: logit treatmentinsccnetre2 i.agegrp i.NRCENT i.site_4 i.sex i.id07 i.yydx, iterate(10) or
> xi: logit treatmentinsccnetre2 i.NRCENT i.site_4 i.sex i.agegrp i.id07 i.yydx, iterate(10) or
> xi: logit treatmentinsccnetre2 i.id07 i.NRCENT i.site_4 i.sex i.agegrp i.yydx, iterate(10) or
> xi: logit treatmentinsccnetre2 i.site_4 i.sex i.agegrp i.id07 i.NRCENT i.yydx, iterate(10) or
> 
> What I would like to do is use the loop I employ for the unadjusted model, but be able to use something like `v' in order to condense the code from the above.


No need to do anything fancy here:

    loc covariates "i.x3 i.x4 i.x5"
    foreach var of varlist x1 x2 x4 {
        logistic y i.`var' `covariates'
    }

Note that in my example, x4 is both a "covariate of interest" and a "control variable."  In the third model, x4 will appear at the top of the results table.  To wit: repeating covariates in the varlist is not a problem; only the first instance of each will be used.

Also, a couple of additional comments:

    1) Use factor variables (the xi: prefix is no longer necessary)
    2) Consider using -logistic- if you want odds ratios
    3) I'm not sure why you're using the -iterate()- option above; if your model is failing
       to converge then you've got a problem


-- Phil


*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index