[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
"de la Garza, Adrian" <ADelagarza@imf.org> |

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

Subject |
st: RE: No need for loops? |

Date |
Thu, 4 Dec 2003 15:19:29 -0500 |

I just saw different cases and I understand the _n < 12 part -- it's just changing to missing if there's a program = 1 within the first 12 months of the sample. I thought it somehow turned to missing the observations when program = 1 but there were missing values to compute the average. I need to take this into account, but I guess I didn't specify it before. Thanks. > -----Original Message----- > From: de la Garza, Adrian > Sent: Thursday, December 04, 2003 3:15 PM > To: statalist@hsphsun2.harvard.edu > Subject: st: No need for loops? > > > Nick, > > This is very insightful. I don't understand, however, what the _n<12 > does. Can you please clarify? I don't know why, for instance, if for a > country my -ratio- variable is not populated (all missing values) but > -program- does have 1s now and then, why -prev12- gets a missing value > when -program- = 1 but -next12- gets a 0 (when it should be missing, > too)? > > Also, below you wrote: > > > by country: replace next12 = . if pronext12 | _n < 12 > > This should be > > by country: replace next12 = . if pronext12 > 0 | _n < 12 > > right? > > > Thanks again. > Adrian > > > -----Original Message----- > > From: Nick Cox [mailto:n.j.cox@durham.ac.uk] > > Sent: Thursday, December 04, 2003 7:21 AM > > To: statalist@hsphsun2.harvard.edu > > Subject: st: No need for loops? > > > > > > I hope I don't get to regret making that assertion, > > which as said was about "most" cases. However, I didn't say > > that I would be able to spot such a solution > > myself! > > > > In this case, progress is indeed possible, bringing > > in also an idea from Michael Blasnik on getting > > the sum of the previous # observations, without > > any loops. > > > > The average of the previous 12 is the > > difference between two cumulative sums, divided > > by 12 > > > > bysort country (date) : > > gen prev12 = (sum(ratio[_n-1]) - sum(ratio[_n-13])) / 12 > > > > However, we only want that if -program- is equal to 1 or > > (presumably) it is in fact an average based on 12 measurements. > > > > by country : replace prev12 = . if program != 1 | _n < 12 > > > > Looking ahead in time seems trickier until you see that > > we just need to reverse time (no science fiction or bizarre > > physics involved, just negation): > > > > gen ndate = -date > > > > Then everything is just the same, modulo _including_ > > the month of a program, > > > > bysort country (ndate) : > > gen next12 = (sum(ratio) - sum(ratio[_n-12])) / 12 > > > > except that we want to keep track of any program in the next > > 11 [sic] months. We just look out for a nonzero sum of -program- > > > > by country : > > gen pronext12 = sum(program[_n-1]) - sum(program[_n-12]) > > by country: replace next12 = . if pronext12 | _n < 12 > > > > I guess that Adrian's other variables are calculated > > by variations on this theme. > > > > sort country date > > > > Some things could be done differently if you have -tsset- > > the data. This code assumes no gaps within panels. > > > > The device of reversed time is exemplified further > > at > > > > http://www.stata.com/support/faqs/data/dropmiss.html > > > > http://www.stata.com/support/faqs/data/missing.html > > > > Nick > > n.j.cox@durham.ac.uk > > > > P.S. There is a quite different way to approach > > some of this using the program -tsspell- from SSC. In > > this you define a spell as starting with > > -program- being 1 and then block the subsequent > > months making use of a created variable _seq. > > > > de la Garza, Adrian > > > Sent: 04 December 2003 04:10 > > > To: statalist@hsphsun2.harvard.edu > > > Subject: st: No need for loops? > > > > > > > > > I am trying to learn from Nick Cox's suggestion that no > > > loops are needed in most cases for data management. > > > However, I can't think of a way to do the following > without a loop. > > > > > > I have the next database in panel format and I need to take > > > averages within countries when my dummy variable 'program' > > > indicates it. Basically, I need to generate a variable that > > > computes the 12-month average for the observations > > > immediatly prior to a 1 in 'program'. > > > > > > Take Brazil in 1983m3, when program = 1. I want my > > > generated variable, let's call it ratio_before, to get the > > > value of the 12-month average right before 1983m3, and put > > > this value in the same line where program = 1. I know this > > > average should be 0.00639. > > > > > > Then, I also want to take averages for the subsequent > > > 12-months (including the month when program = 1), for the > > > 12-month period after that, etc. These are always annual > > > (12-month) averages for the first year when the program is > > > implemented as indicated by the 1 in the dummy, then for > > > the 2nd year, for the 3rd year, etc., and we can call these > > > variables ratio_1y, ratio2y, ratio3y, ratio4y, and ratio5y. > > > All of these computed averages should go in the same line > > > where program = 1. > > > > > > The only thing is: I should stop taking the averages for > > > the subsequent years if a new program is implemented (i.e., > > > if I find another 1 in my 'program' variable within the > > > period for the average computed). > > > > > > I would very much appreciate any insight on this dull data > > > management procedure. > > > Thanks. > > > > > > date country ratio program > > > 1982m1 bra 0.001943 0 > > > 1982m2 bra 0.003863 0 > > > > * > > * For searches and help try: > > * http://www.stata.com/support/faqs/res/findit.html > > * http://www.stata.com/support/statalist/faq > > * http://www.ats.ucla.edu/stat/stata/ > > > > * > * For searches and help try: > * http://www.stata.com/support/faqs/res/findit.html > * http://www.stata.com/support/statalist/faq > * http://www.ats.ucla.edu/stat/stata/ > * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

- Prev by Date:
**st: RE: No need for loops?** - Next by Date:
**st: RE: RE: No need for loops?** - Previous by thread:
**st: RE: RE: No need for loops?** - Index(es):

© Copyright 1996–2017 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |