Nick,
Yes, that's a very interesting point that I had missed.
I now see why -while- is so inefficient: it reads such a huge fraction of
unneccesary observations. I can avoid that by more efficient treatment of
the observation: avoid reading all those unneccesary observations
repeatedly.
Thanks for the very important tip.
Subh
----- Original Message -----
From: "Nick Cox" <[email protected]>
To: <[email protected]>
Sent: Saturday, June 26, 2004 10:22 AM
Subject: st: RE: Re: RE: Multiple commands under "By varlist"?
> Interesting, but your interpretation of the timings
> conflates two distinct issues. Also, it should not be
> generalised without care.
>
> 1. The interpretative overhead of -while-
> (e.g. as compared to -forval- or -by:-
> when the approaches are comparable).
>
> 2. The way -if- is implemented. The
> command
>
> regress returns factor if `i' == month
>
> is implemented by testing every observation
> to see whether it should be included in
> the regression. In your case 99.9% of
> the observations are irrelevant to each
> regression, but Stata takes no special
> action to avoid that. You should be
> able to substitute -if- by -in-:
>
> gen long obsno = _n
> sort month port
> forval i = 1/1000 {
> local min = ...
> local max = ...
> regress returns factor in `min'/`max'
> ...
> }
>
> and by Blasnik's Law this should be much faster.
>
> In short, your -while- loop is slow mostly
> because of what happens within it, or so
> I guess.
>
> Note that my code was based, in the absence
> of precise information, on a guess that
> -month- took on 12 distinct values. As
> your -month- variable takes on 1000 values,
> other approaches become very competitive.
> That is, doing something 12 times, on
> each which 11/12 of the data are irrelevant,
> is not the same as doing something 1000
> times, on each of which 999/1000 of the
> data are irrelevant.
>
> You comment
>
> > Given this, it would be really wonderful to be able to
> > execute multiple commands under -by-...
> > Some wishful thinking!
>
> but this isn't wishful thinking at all, as I indicated,
> so long as you are willing to do programming.
> See help -byable-.
>
> Nick
> [email protected]
>
*
* 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/