我要使用CHNS数据研究个体自己认识到的健康信息对其吸烟概率的影响。但是显然,这里面有内生性。因此,我打算使用个体家人的健康信息作为其自身健康信息的工具变量。由于调查问卷中没有直接询问家人的健康情况,因此,需要通过ID之间的关系,来间接得到这一变量。我本来希望通过本人的id与父亲的id(id_f)的联系来生成这一变量,即先看个体a的父亲id是多少,若其父亲id是b,再在数据中找到个体b,将其健康信息赋予个体a的家人健康信息这一变量。然而操作中,我发现stata程序的设计似乎不支持这一操作。我已在这上面花了很多时间,但是因为stata中的循环命令都是默认完全针对一个数据点进行操作,而难以进行跨数据点的赋值。如以下程序得不到结果:
gen health_f=.
foreach x in id{
foreach y in id_f{
replace health_f=health if `y'==x`' **这里的本意是,用两个层面的循环嵌套,先固定住id,再在id_f中找和id相等的个体,把其health作为id_f的health_f赋进去。然而,stata解读的结果,是对同一个个体,只有其id与id_f相等(即此人就是自己的父亲,这样的样本点共29个,疑似是统计时出现差错的数据)时,才执行此操作。**
}
}