# Re: st: RE: Optimizing an ineqdeco loop

 From "Austin Nichols" To statalist@hsphsun2.harvard.edu Subject Re: st: RE: Optimizing an ineqdeco loop Date Wed, 10 Dec 2008 17:07:31 -0500

```Victor Bennett:
It would be faster to write your own code, since -ineqdeco- (on SSC)
does a lot of calculations you don't need.  That said, I think you can

ren `ginik' mygini

in the loop that begins
if "`bygroup'" != "" {

to keep the temporary variable with bygroup-specific Ginis on the
data.  Even better, you can add a -stub- option that keeps all the
results as variables on the data.

On Wed, Dec 10, 2008 at 4:44 PM, Nick Cox <n.j.cox@durham.ac.uk> wrote:
> A cleaner way to do what you are doing
>
> gen gini = .
> egen group = group(storeid prodid)
> su group, meanonly
> forval i = 1/`r(max)' {
>        ineqdeco price if group == `i'
>        replace gini = r(gini) if group == `i'
> }
>
> Nick
> n.j.cox@durham.ac.uk
>
> Victor Bennett
>
> Does anyone have suggestions on how to speed up a loop that calculates
> many many gini coefficients with ineqdeco?
>
> I'm building a data set for doing some comparison of price variation
> using Gini coefficients from ineqdeco.  Each observation is a sale of
> an item at a particular store.  Each item can be sold at multiple
> stores, and each store sells multiple items.
>
> I would like to store the Gini for each store x product combination.
> If egen did this, the easy way would be egen gini=gini(price),
> by(store product).
>
> The way I'm doing it right now is:
>
> gen gini = .
> levels storeid,local(stores)
> foreach store of local stores {
>        levels prodid if storeid==`store', local(prodInStore)
>        foreach prod of local prodInStore {
>                ineqdeco price if prodid == `prod'&storeid==`store'
>                replace gini = \$S_gini if prodid == `prod'&storeid==`store'
>        }
> }
>
> It seems like there is a way to do this with bygroup() on ineqdeco,
> but I can't figure out how to extract and store the coefficients.
> Also, its not clear that it would be any faster.  Would it?
>
> Is there an alternate library that will calculate gini without
> calculating the other dispersion measures?
>
> *
> *   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/
```