Stata - 使用累积总和计算预期生命周期价值的值

Stata - calculating a value for expected lifetime value using a cumulative sum

我正在尝试计算个人的预期终生收入。我需要使用的公式如下:

E[寿命] = S + S/[(1+r1)] + S/[(1+r1)(1+r2)] + .... + S/[(1+r1) ..(1+rn)]

这里,r1...rn是个人活着的每一年的利率,S是个人的收入。我的问题是我有一个数据集,其中包含每个人的 S 和他们的死亡年份。现在,使用这两个数字,我需要计算所有个体的 E[lifetime]。当然,我所有年份都有 r。我如何在 Stata 中计算它?

问题是公式中r的个数取决于个人的寿命,更复杂的是,每个'r'都不一样!我有一个巨大的数据集,所以我无法机械地为每个人计算这个。请帮忙!

我尝试了 for 循环,但同样,问题是公式中的项数因人而异。

编辑:我的数据集看起来像这样:

ID    Base Year    Income    Death Year
---------------------------------------
1        1975       1000       2008
2        1978       2423       2005
3        1980       1982       2010
4        1975       1093       2002
5        1976       4382       1999
6        1981       5492       2005
7        1978       1743       1995

我还有从 1970 年到 2010 年所有年份的 "r" 向量。现在,我需要为第一人称执行的计算是:

E[寿命] = 1000 + 1000/(1+r1976) + 1000/(1+r1976)(1+r1977) +

... + 1000/(1+r1976)(1+r1977)...(1+r2008)

假设每年的利率都在一个单独的文件中,这是一种执行此操作的方法。主要技巧是

  1. 将数据重塑为长格式并填写之间的年份 每个人的基准年和死亡年。
  2. 要获得折扣因子,请计算记录的 1/(1+rn) 项的 运行 总和,然后对其取幂以获得折扣因子的 运行 乘积。

这是 Stata 代码:

/* Create a dataset of interest rates */
clear
set obs 36
gen year= 1974 +_n
set seed 1234
gen r=uniform()/10
tempfile interest_rates
save `interest_rates'

/* Fake Income data */
clear
input id    base_year    income    death_year
1        1975       1000       2008
2        1978       2423       2005
3        1980       1982       2010
4        1975       1093       2002
5        1976       4382       1999
6        1981       5492       2005
7        1978       1743       1995
8        2008       59        2010  
end

rename base_year  year0
rename death_year year1

reshape long year, i(id income) j(time)
drop time
xtset id year
tsfill
capture ssc install carryforward
bysort id: carryforward income, replace

merge m:1 year using `interest_rates', keep(match) nogen

bysort id (year): replace r=0 if _n==1 // don't discount at t=1
bysort id (year): gen dfactor = sum(ln(1/(1+r)))
bysort id (year): replace dfactor = exp(dfactor)

gen double disc_income = income * dfactor  

collapse (sum) exp_income = disc_income, by(id)

比如obs 8(我加的)从2008年到2010年的收入是59,那么应该是

. di 59 + 59/(1+.0084592)+59/((1+.0084592)*(1+.0834539))
171.50379