Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: RE: Optimizing an ineqdeco loop


From   "Austin Nichols" <austinnichols@gmail.com>
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
clone ineqdeco.ado as myineqdeco.ado (replacing "program ineqdeco"
with "program myineqdeco") and add

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/



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