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

使用Stata填充NLSY79数据中缺失的年龄值,stata,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

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进行编程,以便填写缺失的年龄值?我意识到,在某些年份,这个人的生日还没有出现,因此这个年龄可能会连续几年重复出现,并且不知道该怎么办(如果有的话)。

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

 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) 
另见