[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
Ichiro Fujikake <fujikake@cc.miyazaki-u.ac.jp> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
Re: st: RE: question about calculating discounted sum |

Date |
Mon, 21 Feb 2005 09:33:22 +0900 |

I am sorry. There was a typo. I meant sort firmid year by firmid: gen i=_n qui sum i local imax=r(max) gen sum=income forv j=1/`imax' { local h= `j'-1 forv k=1/`h' { by firmid: replace sum=sum+income[_n-`k']/(`k'+1) if i==`j' } } Ichiro On 05.2.21 9:28, "Ichiro Fujikake" <fujikake@cc.miyazaki-u.ac.jp> wrote: > Hi Robin > > I hope the following codes help you. > > sort firmid year > by firmid: gen i=_n > qui sum i > local imax=r(max) > gen sum=income > forv j=1/`imax' { > local h= `j'-1 > forv k=1/`j-1' { > by firmid: replace sum=sum+income[_n-`k']/(`k'+1) if i==`j' > } > } > > Ichiro > > > On 05.2.21 8:36, "Robin Luo" <rluosf@gmail.com> wrote: > >> Btw, Scott, concerning `=seq', do you have any idea about how to >> integrate a variable into "forvalue" loop? >> >> Many thanks! >> >> Robin >> >> >> On Sun, 20 Feb 2005 16:37:04 -0600, Scott Merryman <smerryman@kc.rr.com> >> wrote: >>> How about attacking this problem directly: >>> >>> bysort firm (year): gen num = _n >>> gen sum = 0 >>> by firm: replace sum = income + income[1]/num[2] if num== 2 >>> by firm: replace sum = income + income[1]/num[3] + income[2]/num[2] /// >>> if num == 3 >>> by firm: replace sum = income + income[1]/num[4] + income[2]/num[3] + /// >>> income[3]/num[2] if num == 4 >>> by firm: replace sum = income + income[1]/num[5] + income[2]/num[4] + /// >>> income[3]/num[3] + income[4]/num[2] if num == 5 >>> by firm: replace sum = income + income[1]/num[6] + income[2]/num[5] + /// >>> income[3]/num[4] + income[4]/num[3] + income[5]/num[2] if num == 6 >>> >>> Hope this helps, >>> >>> Scott >>> >>> P.S. `=seq' is the same as seq[1] or 1 >>> >>>> -----Original Message----- >>>> From: owner-statalist@hsphsun2.harvard.edu [mailto:owner- >>>> statalist@hsphsun2.harvard.edu] On Behalf Of Robin Luo >>>> Sent: Saturday, February 19, 2005 1:18 PM >>>> To: statalist@hsphsun2.harvard.edu >>>> Subject: st: question about calculating discounted sum >>>> >>>> I need to calculate discounted sum for a variable in a panel data. My >>>> data is like: >>>> >>>> FirmID year income >>>> 100 1980 50000 >>>> 100 1981 51000 >>>> 100 1982 54000 >>>> 100 1983 60000 >>>> 100 1984 59000 >>>> 100 1985 62000 >>>> 101 1970 18000 >>>> 101 1971 18500 >>>> 101 1972 20000 >>>> 101 1973 24000 >>>> >>>> Basically, the data is a panel data, grouped by "FirmID", with >>>> hundreds of frims. What I need to do is to calculate a moving >>>> discounted sum of income for each firm-year. That is, calculate a sum >>>> of income from a firm's first year to the current year, but each >>>> year's income will be discounted by that year's distance to the >>>> current year and the discount rate is the inverse of the distance >>>> "1/(current year - year +1)". For example, for firm 100 at 1982, this >>>> calculation would be like: 54000 + 51000*1/2 +50000*1/3, while for >>>> firm 100 at 1984 it would be like 59000 + 60000*1/2 + 54000*1/3 + >>>> 51000*1/4 + 50000*1/5. I tried the following program: >>>> >>>> by FirmID: gen seq=_n >>>> >>>> gen suminc=0 >>>> >>>> quietly forval i=1/`=seq' { >>>> by FirmID: replace suminc = suminc + income[`i']/(`=seq' - `i' >>>> +1) >>>> } >>>> >>>> But problems are: 1) the loop seems not allowing "by" command; 2) the >>>> loop does not really launch, because even after I get rid of "by >>>> FirmID" the loop seems to go only one cycle instead of "_n" cycles. >>>> >>>> Many many thanks for any help! >>>> >>>> Robin Luo >>> >>> * >>> * 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/ >>> >> * >> * 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/ >> > > > * > * 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/ > * * 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/

**Follow-Ups**:**Re: st: RE: question about calculating discounted sum***From:*Robin Luo <rluosf@gmail.com>

**References**:**Re: st: RE: question about calculating discounted sum***From:*Ichiro Fujikake <fujikake@cc.miyazaki-u.ac.jp>

- Prev by Date:
**Re: st: RE: question about calculating discounted sum** - Next by Date:
**RE: st: question on chow test** - Previous by thread:
**Re: st: RE: question about calculating discounted sum** - Next by thread:
**Re: st: RE: question about calculating discounted sum** - Index(es):

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