# st: RE: Optimizing an ineqdeco loop

 From "Nick Cox" To Subject st: RE: Optimizing an ineqdeco loop Date Wed, 10 Dec 2008 21:44:39 -0000

```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/
```