Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

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

From |
Stephen Cranney <cranney.stephen@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Loop-within-loop error while looping over observations for a microsimulation |

Date |
Mon, 6 Aug 2012 17:31:29 -0600 |

Thank you all so much, that worked to make the syntax legal. I'm almost there, but it's not quite doing what I want it to. To recap, the data is sorted by year and month. When the "birth" is created out of the binomial function, I want the code to detect it and make a number of the subsequent months "infertile" so that binomial probability of births won't work during those months. .f= fertile missing, .i is missing for after-birth infertility. "monthsofpostpartum" is a local macro that is simply the number of months of after-birth infertility. This just gives me a sequence of 1s and 0s; it doesn't seem to be replacing the subsequent months after birth with the .i local N = _N local monthsofpostpartum = 12 forvalues i = 1/`N' { forvalues j= 1/`monthsofpostpartum' { if childbirth[`i']== .f replace childbirth= rbinomial(1, probabilityconceive) if childbirth[`i']==1 replace childbirth= .i in`N'+`j' } } Thanks in advance, On Mon, Aug 6, 2012 at 1:45 PM, Nick Cox <njcoxstata@gmail.com> wrote: > You still have a problem. > > replace childbirth[_n+j]== .i if (childbirth==1) in `i' > > is illegal, as explained. > > This kind of statement would be legal > > if (childbirth[<subscript>] == 1) replace childbirth = .i in <something> > > but I am not certain that it is what you want. > > On Mon, Aug 6, 2012 at 8:08 PM, Stephen Cranney > <cranney.stephen@gmail.com> wrote: >> But with the current syntax isn't that not a problem? If I input the >> numbers directly I have the following: >> >> local N = _N >> forvalues i = 1/`N' { >> forvalues j= 0/12 { >> >> replace childbirth= rbinomial(1, probabilityconceive) >> if childbirth== .f >> replace childbirth[_n+j]== .i if (childbirth==1) in `i' >> } >> } >> >> >> Here 1/`N' is directly computed before the loop starts, and the j >> values are inputted directly (with the higher bound being the number >> of postpartum months), so I'm still not seeing exactly how the syntax >> has a problem. I've closed off the space that was between childbirth >> and the _n, so it's not that it's accidentally recognizing the value >> as a weight. >> >> Thanks, >> >> Stephen >> >> On Mon, Aug 6, 2012 at 11:59 AM, Nick Cox <njcoxstata@gmail.com> wrote: >>> >>> No "seems to indicate" here: simply, subscripts are not allowed to the >>> left of the assignment in Stata. >>> >>> The syntax diagram shows the form -replace oldvar = exp-. Stuff can >>> follow that, but nothing else can be included. >>> >>> Nick >>> >>> On Mon, Aug 6, 2012 at 4:53 PM, Stephen Cranney >>> <cranney.stephen@gmail.com> wrote: >>> > Thanks for catching that; it's still giving me the "weights not >>> > allowed" error message though, even when I delete the extra space. >>> > >>> > I found this prior Statlist post that seems to indicate that Stata >>> > triggers the no weights allowed warning when the `i' is placed to the >>> > left of the equals sign: >>> > >>> > http://www.stata.com/statalist/archive/2006-08/msg00976.html >>> > >>> > So I changed my code to the following, but I'm still getting the "no >>> > weights allowed" message. >>> > >>> > local N = _N >>> > forvalues i = 1/`N' { >>> > forvalues j= 0/12 { >>> > replace childbirth= rbinomial(1, probabilityconceive) if childbirth== .f >>> > replace childbirth[_n+j]== .i if (childbirth==1) in `i' >>> > } >>> > } >>> > >>> > Best, >>> > >>> > >>> > >>> > On Mon, Aug 6, 2012 at 9:32 AM, daniel klein >>> > <klein.daniel.81@googlemail.com> wrote: >>> >> I did not follow closely, but there is a space between <childbirth> >>> >> and <[`i']> in your code, probably causing Stata to interpret <[`i']> >>> >> as some kind of weight, rather than a subscript. >>> >> >>> >> Best >>> >> Daniel >>> >> >>> >> -- >>> >> [...] >>> >> However, when I change the >>> >> monthsofpostpartum variable to a constant (in this case 12), it's >>> >> giving me a "weights not allowed" sign. >>> * > * > * 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/ * * 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: st: Loop-within-loop error while looping over observations for a microsimulation***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**Re: st: Loop-within-loop error while looping over observations for a microsimulation***From:*daniel klein <klein.daniel.81@googlemail.com>

**Re: st: Loop-within-loop error while looping over observations for a microsimulation***From:*Stephen Cranney <cranney.stephen@gmail.com>

**Re: st: Loop-within-loop error while looping over observations for a microsimulation***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: Loop-within-loop error while looping over observations for a microsimulation***From:*Stephen Cranney <cranney.stephen@gmail.com>

**Re: st: Loop-within-loop error while looping over observations for a microsimulation***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**st: Arrow diagram connecting before and after categories** - Next by Date:
**st: Marginal effects in Probit** - Previous by thread:
**Re: st: Loop-within-loop error while looping over observations for a microsimulation** - Next by thread:
**Re: st: Loop-within-loop error while looping over observations for a microsimulation** - Index(es):