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

From |
Robin Luo <rluosf@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

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

Date |
Sun, 20 Feb 2005 15:36:52 -0800 |

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/

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

**References**:**st: question about calculating discounted sum***From:*Robin Luo <rluosf@gmail.com>

**st: RE: question about calculating discounted sum***From:*"Scott Merryman" <smerryman@kc.rr.com>

- Prev by Date:
**Re: st: Turn Displayed Result into a Matrix (dataset)?** - Next by Date:
**Re: st: RE: question about calculating discounted sum** - 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–2016 StataCorp LP | Terms of use | Privacy | Contact us | What's new | Site index |