使用Stata填充NLSY79数据中缺失的年龄值
NLSY79是一项记录个人年龄的小组调查,但在某些年份,它会跳过这个问题,并将其编码为-5。该数据集在1979年至1994年期间每年更新一次,然后在2012年之前每两年更新一次。因此,个人的样本数据可能如下所示:使用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
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)
另见