Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: Generate a new variable [four firm concentration ratio]


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   RE: st: Generate a new variable [four firm concentration ratio]
Date   Mon, 21 Nov 2005 23:54:48 -0000

I think I follow some of this, although I cannot 
reproduce the capricious behaviour you seem 
to imply here. I would like to see a copy of 
(a subset of) your data that apparently produces 
this problem. Strictly, it implies a bug in Stata's 
-numlist- command, which does the sorting here. 

The help for -rowsort- indicates that missing values 
are allowed. If you sort seven values, some of which 
are missing, the missing values will not disappear!
(Or did you expect they would?) Following usual Stata 
rules they will be sorted to high values. 

You are correct that this then will not be what you want. 

One way round this is to use -mvencode- to map 
missings to some negative number, say -999, presuming
that is not a legitimate number of consumers. These 
will always sort lower than any legitimate number. 
Then the sum of the first four firms should trap 
any -999. However, if any of the first four firms 
is missing, and so mapped to -999, then the concentration 
ratio should presumably be 100%. 

drop s1-s7 
mvencode F?mt, mv(-999) 
rowsort F?_mt, gen(s1-s7) descend

replace firstfour = 0 
forval i = 1/4 { 
	replace firstfour = s`i' if s`i' >= 0 
} 
replace firstfour = 100 * firstfour / CONSUM_mt 
	
mvdecode F?mt, mv(-999) 

Nick 
n.j.cox@durham.ac.uk 

ALICE DOBSON
 
> Thanks Nick. It works selectively as I am not getting 
> "firstfour" for all 
> rows.
> This is probably because the rows have values for one to 
> seven firms and not 
> for all seven firms
> Further, I checked the data editor and see that in such cases 
> where the data 
> is avaiable for less than seven firms the command arranges 
> the top four 
> values s1-s4 (arbitrarily) in columns for say s3-s6
> Hence, I do not get firstfour for all such cases
 
> >From: n j cox <n.j.cox@durham.ac.uk>
> >Reply-To: statalist@hsphsun2.harvard.edu
> >To: statalist@hsphsun2.harvard.edu
> >Subject: Re: st: Generate a new variable [four firm 
> concentration ratio]
> >Date: Mon, 21 Nov 2005 21:31:19 +0000
> >
> >If the number of consumers is integer, then
> >just install -rowsort- from SSC.
> >
> >rowsort F?_mt, gen(s1-s7) descend
> >gen firstfour = 100 * (s1 + s2 + s3 + s4) / CONSUM_mt
> >
> >Nick
> >n.j.cox@durham.ac.uk
> >
> >ALICE DOBSON
> >
> >I use stata 9.1
> >
> >I have an unbalanced panel data of the type:
> >
> >geographical region (m = 1..1154)
> >year (t = 1..7)
> >
> >with the following variables:
> >
> >total number of consumers in each region (CONSUM_mt)
> >total number of consumers of seven firms in each region 
> (F1_mt, F2_mt, 
> >F3_mt, F4_mt, F5_mt, F6_mt, F7_mt)
> >
> >
> >I want to calculate the four firm concentration ratio for 
> each region, 
> >C4_mt, which is the proportion of the number of consumers of 
> top four firms 
> >to the total number of consumers in that region, in percentage
> >
> >Could anyone be kind enough to help me with this simple calculation?
> >
> >GEOGREGN YEAR CONSUM F1 F2 F3 F4 F5 F6 F7 C4
> >M1 1969
> >M1 1970
> >M1 1971
> >M1 1972
> >M1 1973
> >M1 1974
> >M1 1975
> >M2 1969
> >M2 1970
> >M2 1971
> >M2 1972
> >.
> >.

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



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