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 |
Abhimanyu Arora <abhimanyu.arora1987@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: spell variable according to a criteria |

Date |
Wed, 4 Apr 2012 21:15:20 +0200 |

Indeed, thanks a ton as ever.:-) Abhimanyu On Wed, Apr 4, 2012 at 9:01 PM, Nick Cox <njcoxstata@gmail.com> wrote: > One of several great things about -by:- is that more difficult > problems are really just as easy. You can just write everything in > terms of > > bysort country city (time) : > > Nick > > On Wed, Apr 4, 2012 at 7:56 PM, Abhimanyu Arora > <abhimanyu.arora1987@gmail.com> wrote: >> Thanks very much indeed, Nick, was waiting for your ingenious take on >> the problem. >> Cheers >> Abhimanyu >> >> PS-Yes, I was wrangling with sorting for a couple of hours. I still >> cannot comprehend fully but (different combinations of) sorting does >> seem to influence the results. In fact I simplified the post as there >> being just panel var and time, but actually the data is in the >> mutilevel-form—country, city and time >> >> On Wed, Apr 4, 2012 at 8:19 PM, Nick Cox <njcoxstata@gmail.com> wrote: >>> I can't see a difference here in terms of what Stata will do between >>> your first and second postings. >>> >>> In terms of your original problem, I see no need to -sort- each time >>> around the loop as no command changes the sort order. In fact I see no >>> need for a loop here at all. >>> >>> The problem appears to be this: >>> >>> Within panels, if -event- is 1 and -stretch- is # then -event- == 1 is >>> the start of a spell with at most an extra # observations afterwards. >>> >>> Let's think about an -event- and suppose that -stretch- is 7. Then can >>> we think of that of starting a count-down: 7, 6, 5, 4, 3, 2, 1, 0. >>> When we get to 0, the spell is finished. (NASA used to say >>> "Blast-off".) But presumably a new -event- can reset the count-down. >>> >>> Here is sample code setting up a fake dataset. >>> >>> set obs 100 >>> gen panel_id = cond(_n < 51, 1, 2) >>> bysort panel_id : gen time = _n >>> gen event = 1 if runiform() < 0.2 >>> gen stretch = ceil(18 * runiform()) if event == 1 >>> >>> Now the algorithm is just this: >>> >>> bysort panel_id (time) : gen inspell = stretch if _n == 1 >>> by panel_id : replace inspell = max(stretch, inspell[_n-1]-1) if _n > 1 >>> >>> Now your spells are defined by -inspell- being >= 0 and not missing. >>> >>> Nick >>> >>> On Wed, Apr 4, 2012 at 5:06 PM, Abhimanyu Arora >>> <abhimanyu.arora1987@gmail.com> wrote: >>> >>>> I think I managed. >>>> >>>> So in the line >>>> bys panel_identifier:replace event=1 if stretch[_n-(`i'+1)]>`i' & >>>> stretch[_n-(`i'+1)]!=. & event==. >>>> >>>> I changed to >>>> >>>> bys panel_identifier:replace event=1 if stretch[_n-`=`i'+1']>`i' & >>>> stretch[_n-`=`i'+1']!=. & event==. >>>> >>>> in order to evaluate the local macro at every loop. >>> >>> On Wed, Apr 4, 2012 at 5:40 PM, Abhimanyu Arora >>> >>>>> I have a (monthly) time indicator and a variable 'stretch' that >>>>> identifies the spell of an event. I need to create a dummy in case the >>>>> event took place or not. >>>>> Currently event=1 for the start of the event (an missing for the >>>>> rest). If stretch==1, event should equal 1 for the next time period. >>>>> If stretch =2 event=1 for 2 more time periods (besides the starting >>>>> time). >>>>> >>>>> I know that stretch ranges from 1 to 18 (but may not have the values >>>>> in between). >>>>> >>>>> When I try without using the following loop (putting in the numbers >>>>> manually that is), it seems OK, But with the following loop things >>>>> aren't quite right. >>>>> >>>>> local i=0 >>>>> while `i'< 18 { >>>>> bys panel_identifier:replace event=1 if stretch[_n-(`i'+1)]>`i' & >>>>> stretch[_n-(`i'+1)]!=. & event==. >>>>> sort panel_id time >>>>> local ++i >>>>> } >>>>> >>>>> Where does the mistake lie? >>> > > * > * 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/

**References**:**st: spell variable according to a criteria***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

**Re: st: spell variable according to a criteria***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

**Re: st: spell variable according to a criteria***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: spell variable according to a criteria***From:*Abhimanyu Arora <abhimanyu.arora1987@gmail.com>

**Re: st: spell variable according to a criteria***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**Re: st: source code of mo files in ssc or sj packages** - Next by Date:
**RE: st: Different coefficients for xtivreg2** - Previous by thread:
**Re: st: spell variable according to a criteria** - Next by thread:
**st: too many values for -tabulate twoway, summarize-, but not -tabulate twoway-** - Index(es):