使用Stata填写NLSY79数据中的缺失年龄值

时间:2014-11-30 04:54:26

标签: stata

NLSY79是一项小组调查,记录了个人的年龄,但在某些年份它会跳过这个问题并将其编码为-5。该数据集是1979年至1994年之间的年度数据,然后在2012年之前成为两年一次。因此,个人的样本数据可能如下所示:

caseid_1979 year    age
73          1988    25
73          1989    26
73          1990    -5
73          1991    -5
73          1992    -5
73          1993    30
73          1994    30
73          1996    32
73          1998    -5
73          2000    36

所以我的问题是我如何编程Stata以便填写缺失的年龄值?我意识到,在某些年份,这个人的生日还没有发生,所以这个年龄可能连续几年重复,我不知道该做什么(如果有的话)。

1 个答案:

答案 0 :(得分:2)

在这种情况下,我们可以确信每个人的年龄是或应该是每年的线性。所以我们有一个插值练习。

 clonevar age2 = age 
 replace age2 = . if age2 == -5 
 ipolate age2 year, generate(age3) by(caseid_79) epolate
 bysort caseid_79 (year) : assert age3 == age3[1] + (year - year[1]) 

如果您想允许1年的容差,请说

bysort caseid_79 (year) : assert inlist(age3 - age3[1] + year - year[1], 0, 1) 

另见this FAQ, which discusses replaces missing values in sequences